Заставить dnsmasq слушать только один интерфейс
У меня dnsmasq работает на Raspberry Pi с Raspbian. Пи имеет wifi-флешку на wlan0 и подключен к локальной сети / интернету по eth0. Моя цель состоит в том, чтобы dnsmasq разрешил всем хостам статический IP-адрес pi только для wifi-соединений. Это мой dnsmasq.conf
address=/#/192.168.42.1
interface=wlan0
Однако теперь, когда я ssh к пи через eth0 и пинг google.com, он также разрешает 192.168.42.1. Возможно, это из-за этого (со страницы руководства):
Dnsmasq автоматически добавляет петлевой (локальный) интерфейс в список интерфейсов для использования при использовании параметра --interface
Если так, как я могу сделать так, чтобы dnsmasq слушал только соединения Wi-Fi?
Обходной путь решения
Для моих целей это было нормально для логики: "Если кабель Ethernet подключен, выключите dnsmasq
, Если кабель Ethernet отсоединен, включите его снова ".
Поэтому я использовал ifplugd
управлять процессом. В файле /etc/ifplugd/ifplud.action
я добавил service dnsmasq stop
на случай "вверх" и service dnsmasq start
в "вниз" случае. Полный успех!
2 ответа
Попробуйте вместо
except-interface=eth0
чтобы избежать dnsmasq прослушивания eth0
Вы идете об этом неправильно. dnsmasq не виноват вообще.
Большинство DNS-распознавателей в Linux используют /etc/resolv.conf
, То, что определено там, не зависит от интерфейса. Фактически, это должно быть так: Вы не знаете, какой интерфейс и маршрут выбрать, если у вас нет числового IP-адреса.
Так что в принципе то, что вы хотите, не может быть сделано.
Если, конечно, на самом деле он предназначен не для хоста dnsmasq, а для клиентов WiFi или чего-то еще. В этом случае вам нужно удалить локальный DNS-ответчик из resolv.conf
и сделайте так, чтобы он использовал восходящий поток (ваш маршрутизатор, интернет-провайдер, Google DNS, OpenDNS, ...) напрямую.
Типичный resolv.conf
может выглядеть так при использовании Google DNS:
nameserver 8.8.8.8
nameserver 8.8.4.4