Ограничение DHCP-сервера dnsmasq одним интерфейсом

11

Как мне настроить, dnsmasqчтобы назначать только адреса eth0, а не wlan0?

Делан Азабани
источник

Ответы:

13

Страница людей объясняет это довольно красиво. Если это просто DHCP, на котором вы не хотите работать, wlan0вы можете использовать его --no-dhcp-interface=wlan0. Если вы не хотите, чтобы dnsmasq вообще слушал, wlan0вы можете использовать --except-interface=wlan0.

Если вы хотите только слушать dnsmasq, eth0вы можете использовать --interface=eth0.

WheresAlice
источник
12

Для тех, кто, как я, не совсем понятно, почему порт 53 по-прежнему открыт для всех интерфейсов, независимо от того, какую опцию вы используете для его ограничения. Есть еще одна опция, которую нужно включить.

-z, --bind-interfaces On systems which support it, dnsmasq binds the wildcard address, even when it is listening on only some interfaces. It then discards requests that it shouldn't reply to. This has the advantage of working even when interfaces come and go and change address. This option forces dnsmasq to really bind only the interfaces it is listening on. About the only time when this is useful is when running another nameserver (or another instance of dnsmasq) on the same machine. Setting this option also enables multiple instances of dnsmasq which provide DHCP service to run in the same machine.

Джин Чен
источник
Это именно та вещь, которую легко упустить из виду, но она является ключевой для того, чтобы заставить его работать с другими решениями DHCP (как в моем случае с внутренними службами QNAP). Кто-то должен взять три основных ответа и объединить их. Это спасло мой день, спасибо
Danielo515
11

Это также возможно из файла конфигурации dnsmasq и задокументировано в файле примера Саймона Келли по адресу http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq.conf.example :

# If you want dnsmasq to listen for DHCP and DNS requests only on
# specified interfaces (and the loopback) give the name of the
# interface (eg eth0) here.
# Repeat the line for more than one interface.
#interface=
# Or you can specify which interface _not_ to listen on
#except-interface=
Стефан Ласевский
источник