web-dev-qa-db-ja.com

dnsmasqを1つのインターフェースでのみリッスンさせる

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「ダウン」の場合。大成功!

2
owise1

代わりに試してください

except-interface=eth0

dnsmasqがeth0をリッスンするのを避けるため

1
Pat

あなたはこれを間違った方法で行っています。 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
1
Daniel B