Назад | Перейти на главную страницу

Привяжите dnsmasq DNS только к localhost (127.0.0.1)

Я хотел бы задать вопрос по настройке 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