2

У меня 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 ответа2

1

попробуйте вместо

except-interface=eth0

чтобы избежать dnsmasq прослушивания eth0

1

Вы идете об этом неправильно. 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .