dnsmasqに1つのインタフェースだけをリッスンさせる


2

ラズベリーパイw / Raspbianでdnsmasqを実行しています。piはwlan0上にwifiスティックを持ち、eth0上のローカルネットワーク/インターネットに接続されています。私の目標は、dnsmasqに、Wi-Fi接続の場合にのみ、すべてのホストをpiの静的IPに解決させることです。これは私のdnsmasq.confです

address=/#/192.168.42.1
interface=wlan0

しかし今、私はeth0を介してPIにSSH接続してgoogle.comにpingを実行すると、192.168.42.1にも解決されます。おそらくこれが原因です(manページから):

--interfaceオプションを使用すると、Dnsmasqは自動的にループバック(ローカル)インタフェースを使用するインタフェースのリストに追加します。

もしそうなら、どうすればdnsmasqがWiFi接続のみを待機するようにすることができますか?

回避策ソリューション

私の目的のために、ロジックが「イーサネットケーブルが接続されてdnsmasqいる場合はオフにし、イーサネットケーブルが接続されていない場合は再度オンにする」であっても構いませんでした。

したがって、私ifplugdはプロセスを管理していました。このファイルで/etc/ifplugd/ifplud.actionservice dnsmasq stop、 "up"の場合とservice dnsmasq start"down"の場合に追加しました。大成功!

回答:


1

代わりに試す

except-interface=eth0

dnsmasqがeth0をリッスンしないようにする


1

あなたはこれについて間違ったやり方をしています。dnsmasqはまったく問題ありません。

Linux上のほとんどのDNSリゾルバが使用します/etc/resolv.conf。そこで定義されていることはインターフェースに依存しません。実際には、次のようにする必要があります。数値のIPアドレスを持っていない限り、どのインタフェースと経路を選択すればよいかわかりません。

だから基本的にあなたが望むことはできません。

もちろん、それが実際にはdnsmasqホストを意味するものではなく、WiFiクライアントなどを意味するものではありません。その場合は、ローカルDNSレスポンダを削除して、resolv.confアップストリーム(ルーター、ISP、Google DNS、OpenDNSなど)から直接使用させる必要があります。

resolv.confGoogle DNSを使用すると、一般的なものは次のようになります。

nameserver 8.8.8.8
nameserver 8.8.4.4

ご協力いただきありがとうございます。「もちろん、実際にはdnsmasqホストではなく、WiFiクライアントなどを意味するものではない」という意味で、あなたが何を意味するのか理解できないのですが。やりたいことが可能だと確信しています。残念ながら私はもうそのデバイスにアクセスすることはできません。dnsmasqそれが実行/etc/resolv.confnameserver 127.0.0.1resolvconfているときにmy がbyに設定されていて、実行されていないときにその行が読み取られるため、動作は関連しているように見えますnameserver 192.168.1.254。dnsmasqはどのインターフェースからリクエストが来たのか知るべきではありませんか?
owise1

リクエストがどこから来たのか確かにそれは知っています。それはそれがlo使用時に常に由来するということnameserver 127.0.0.1です。
Daniel B

1
resolvconfでネームサーバーを127.0.0.1に設定しているものが何であれ、避けることが望ましいです。あなたがしないオプションを使用しない限り、それはデフォルトでそれをしているdnsmasqかもしれません。
15年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.