DNSMASQ so einrichten, dass es nur auf einer Schnittstelle lauscht

DNSMASQ so einrichten, dass es nur auf einer Schnittstelle lauscht

Ich habe dnsmasq auf einem Raspberry Pi mit Raspbian laufen. Der Pi hat einen WLAN-Stick auf wlan0 und ist mit dem lokalen Netzwerk/Internet auf eth0 verbunden. Mein Ziel ist, dass dnsmasq alle Hosts nur für WLAN-Verbindungen auf die statische IP des Pi auflöst. Dies ist meine dnsmasq.conf

address=/#/192.168.42.1
interface=wlan0

Wenn ich jetzt jedoch per SSH über eth0 auf den Pi zugreife und google.com anpinge, wird auch hier die Adresse 192.168.42.1 angezeigt. Vielleicht liegt das daran (aus der Manpage):

Dnsmasq fügt die Loopback-Schnittstelle (lokal) automatisch zur Liste der zu verwendenden Schnittstellen hinzu, wenn die Option --interface verwendet wird

Wenn ja, wie kann ich es so einrichten, dass dnsmasq nur die WLAN-Verbindungen abhört?

Problemumgehungslösung

Für meine Zwecke war die folgende Logik ok: „Wenn ein Ethernet-Kabel eingesteckt ist, schalte es aus dnsmasq. Wenn ein Ethernet-Kabel ausgesteckt ist, schalte es wieder ein.“

Daher habe ich ifplugdden Vorgang verwaltet. In der Datei /etc/ifplugd/ifplud.actionhabe ich service dnsmasq stopden Fall "up" und service dnsmasq startden Fall "down" hinzugefügt. Voller Erfolg!

Antwort1

Versuchen Sie es stattdessen

except-interface=eth0

um zu vermeiden, dass dnsmasq auf eth0 hört

Antwort2

Sie gehen das falsch an. dnsmasq trägt überhaupt keine Schuld.

Die meisten DNS-Resolver unter Linux verwenden /etc/resolv.conf. Was dort definiert ist, ist schnittstellenunabhängig. Tatsächlich muss es das sein: Sie wissen nicht, welche Schnittstelle und Route Sie nehmen müssen, wenn Sie nicht die numerische IP-Adresse haben.

Was Sie möchten, lässt sich also grundsätzlich nicht umsetzen.

Es sei denn natürlich, es ist eigentlich gar nicht für den dnsmasq-Host gedacht, sondern für die WiFi-Clients oder was auch immer. In diesem Fall müssen Sie den lokalen DNS-Responder entfernen resolv.confund ihn Upstream (Ihren Router, ISP, Google DNS, OpenDNS, ...) direkt verwenden lassen.

Ein typisches Beispiel resolv.confkönnte bei Verwendung von Google DNS wie folgt aussehen:

nameserver 8.8.8.8
nameserver 8.8.4.4

verwandte Informationen