Я хотел бы задать вопрос по настройке DNS-сервера dnsmasq. Я знаю о такой опции конфигурации, как "адрес-прослушивание". Но даже если я установлю для этой опции значение «listen-address = 127.0.0.1», dnsmasq все равно будет открывать порт как на внутреннем 127.0.0.1:53, так и на внешнем 192.168.x.x: 53.
Поэтому я хотел бы спросить, можно ли настроить dnsmasq так, чтобы он открывал порт 53 только для localhost (127.0.0.1), как, например, это возможно для базы данных MySQL.
# Configuration file for dnsmasq.
port=53
proxy-dnssec
no-resolv
no-poll
server=127.0.0.1#[some port here]
server=127.0.0.1#[some another port here]
listen-address=127.0.0.1
no-hosts
Мне пришлось добавить «интерфейсы привязки» в файл конфигурации, чтобы этот интерфейс и адрес прослушивания имели желаемый эффект. Например.:
listen-address=127.0.0.1
interface=lo
bind-interfaces
Это даст желаемый эффект прослушивания только на localhost. У меня возникли проблемы, так как я запускал общедоступный DNS (который разрешает только мои собственные домены) на общедоступном IP-адресе сервера, но я также хотел запустить dnsmasq на localhost. Поэтому, если я удалю «bind-interfaces», я получу «dnsmasq: не удалось создать прослушивающий сокет для порта 53: адрес уже используется», поскольку он пытается прослушивать общедоступный IP-адрес.
Да ты можешь это сделать
На странице руководства dnsmasq говорится об этом --интерфейс аргумент:
-i, --interface=<interface name>
Listen only on the specified interface(s). Dnsmasq automatically adds the loopback (local) interface to the list of interfaces to use
when the --interface option is used. If no --interface or --listen-address options are given dnsmasq listens on all available inter‐
faces except any given in --except-interface options. IP alias interfaces (eg "eth1:0") cannot be used with --interface or --except-
interface options, use --listen-address instead. A simple wildcard, consisting of a trailing '*', can be used in --interface and
--except-interface options.
Имя интерфейса для localhost / 127.0.0.1 будет lo
по умолчанию в большинстве систем.
Вы можете поместить его прямо в свой файл конфигурации, например
interface=lo
Или укажите это в командной строке так
dnsmasq --interface=lo