Raspbian付きのRaspberryPiでdnsmasqを実行しています。 piはwlan0にwifiスティックがあり、eth0のローカルネットワーク/インターネットに接続されています。私の目標は、wifi接続の場合にのみdnsmasqがすべてのホストをpiの静的IPに解決することです。これは私のdnsmasq.confです
address=/#/192.168.42.1
interface=wlan0
ただし、eth0を介してpiにSSHで接続し、google.comにpingを実行すると、192.168.42.1にも解決されます。おそらくそれはこれが原因です(manページから):
Dnsmasqは、-interfaceオプションが使用されたときに使用するインターフェイスのリストに、ループバック(ローカル)インターフェイスを自動的に追加します
もしそうなら、dnsmasqがwifi接続のみをリッスンするようにするにはどうすればよいですか?
私の目的では、「イーサネットケーブルが接続されている場合は、dnsmasq
をオフにします。イーサネットケーブルが接続されていない場合は、オンに戻します」というロジックで問題ありませんでした。
したがって、私はifplugd
を使用してプロセスを管理しました。ファイル内/etc/ifplugd/ifplud.action
追加した service dnsmasq stop
「上」の場合とservice dnsmasq start
「ダウン」の場合。大成功!
代わりに試してください
except-interface=eth0
dnsmasqがeth0をリッスンするのを避けるため
あなたはこれを間違った方法で行っています。 dnsmasqに問題はありません。
Linux上のほとんどのDNSリゾルバーは/etc/resolv.conf
を使用します。そこで定義されているのは、インターフェースに依存しないことです。実際には、次のようにする必要があります。数値のIPアドレスがない限り、どのインターフェースとルートを使用するかがわかりません。
ですから、基本的にあなたが望むことはできません。
もちろん、実際にはdnsmasqホスト向けではなく、WiFiクライアントなどを対象としている場合を除きます。その場合、resolv.conf
からローカルDNSレスポンダーを削除し、アップストリーム(ルーター、ISP、Google DNS、OpenDNSなど)を直接使用する必要があります。
Google DNSを使用する場合、一般的なresolv.conf
は次のようになります。
nameserver 8.8.8.8
nameserver 8.8.4.4