dnsmasq auf nur eine Schnittstelle lauschen zu lassen

2

Ich habe Dnsmasq auf einem Himbeer-Pi w / Raspbian ausgeführt. Das pi hat einen WLAN-Stick auf wlan0 und ist mit dem lokalen Netzwerk / Internet auf eth0 verbunden. Mein Ziel ist es, dass dnsmasq alle Hosts auf die statische IP des PIS auflöst, nur für WiFi-Verbindungen. Das ist meine dnsmasq.conf

address=/#/192.168.42.1
interface=wlan0

Jetzt aber, wenn ich über eth0 und google.com nach pi ssh, wird es auch zu 192.168.42.1 aufgelöst. Vielleicht liegt das daran (von der Manpage):

Dnsmasq fügt die Loopback-Schnittstelle (lokale Schnittstelle) automatisch zur Liste der Schnittstellen hinzu, die verwendet werden sollen, wenn die Option --interface verwendet wird

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

Umgehungslösung

Für meine Zwecke war es in Ordnung, dass die Logik lautete: "Wenn ein Ethernet-Kabel eingesteckt ist, schalten Sie es aus dnsmasq. Wenn ein Ethernet-Kabel ausgesteckt ist, schalten Sie es wieder ein."

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

owise1
quelle

Antworten:

1

versuche es stattdessen

except-interface=eth0

um zu vermeiden, dass dnsmasq auf eth0 hört

Klopfen
quelle
1

Du machst das falsch. dnsmasq ist überhaupt nicht schuld.

Die meisten DNS-Resolver unter Linux verwenden /etc/resolv.conf. Was dort definiert ist, ist schnittstellenunabhängig. In der Tat muss es sein: Sie wissen nicht, welche Schnittstelle und Route Sie nehmen sollen, es sei denn, Sie haben die numerische IP-Adresse.

Das, was Sie wollen, kann also im Grunde nicht getan werden.

Es sei denn natürlich, es ist überhaupt 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 direkt für die Verwendung im Upstream (Router, ISP, Google DNS, OpenDNS, ...) verwenden.

Ein typisches Beispiel resolv.confkönnte bei Verwendung von Google DNS folgendermaßen aussehen:

nameserver 8.8.8.8
nameserver 8.8.4.4
Daniel B
quelle
Danke für Ihre Hilfe. Ich bin mir nicht sicher, ob ich verstehe, was Sie unter "Außer natürlich, es ist überhaupt nicht für den dnsmasq-Host gedacht, sondern für die WiFi-Clients oder was auch immer." Ich bin mir sicher, dass das, was ich tun möchte, möglich ist, weil ich es schon einmal getan habe. Leider habe ich aber keinen Zugriff mehr auf dieses Gerät. Das Verhalten scheint damit zu tun zu haben, dnsmasqdenn wenn es läuft, wird my /etc/resolv.confauf nameserver 127.0.0.1by gesetzt resolvconfund wenn es nicht läuft, liest diese Zeile nameserver 192.168.1.254. Sollte dnsmasq nicht wissen, von welcher Schnittstelle die Anfrage kommt?
Owise1
Sicher weiß es, wo die Anfrage herkommt. Es ist nur so, dass es immer lobei der Verwendung kommt nameserver 127.0.0.1.
Daniel B
1
Sie möchten vermeiden, dass Ihr Nameserver in resolvconf auf 127.0.0.1 gesetzt wird. Es kann sein, dass dnsmasq dies standardmäßig tut, sofern Sie die Option nicht verwenden.
Qasdfdsaq