web-dev-qa-db-ja.com

OpenWRTルーターのdnsmasq設定はLAN名解決をブロックしますか?

ローカルネットワークのメンバーであるバージョン15.05OpenWRTルーターがあります。このネットワークには、dnsmasqがドメイン名の解決に自動的に使用する独自のDHCPサーバーとDNSサーバーがあります。ただし、LANのメンバーのホスト名はdnsmasqを介して解決されていません。

私は試した /etc/init.d/dnsmasq stopこれらの名前をルーターで解決できるようにしました。ただし、これにより、ルーターに接続している間、ラップトップのすべてのドメイン名の解決が停止しました。

Dnsmasqが結果からローカルドメイン名をフィルタリングせず、適切なDNSサーバーを使用するようにしたい(私はそう信じています)、またはアップストリームDNSサーバーのIPアドレスをクライアントに渡すことによってdnsmasqなしで生きる方法を見つけたいルーターの。 (ルーターを再構成せずに他の環境で使用できるように、DNSサーバーのIPアドレスをハードコーディングしないことをお勧めします。)

以下のオプションのいくつかを無効にしたのは、「...これらのローカルホスト名(および逆ルックアップ)の要求がアップストリームDNSサーバーに転送されないようにする」ためです。 [1] ただし、これではdnsmasqの問題は解決しませんでした。

root@wrt0:~# cat /etc/config/dhcp

config dnsmasq
        #option domainneeded '1'
        option domainneeded '0'
        #option boguspriv '1'
        option boguspriv '0'
        option filterwin2k '0'
        #option localise_queries '1'
        option localise_queries '0'
        option rebind_protection '1'
        option rebind_localhost '1'
        option local '/lan/'
        option domain 'lan'
        #option expandhosts '1'
        option expandhosts '0'
        option nonegcache '0'
        #option authoritative '1'
        option authoritative '0'
        option readethers '1'
        option leasefile '/tmp/dhcp.leases'
        option resolvfile '/tmp/resolv.conf.auto'
        option localservice '1'

...

root@wrt0:~# cat /etc/config/network

...
config interface 'lan'
        option ifname 'eth1'
        option type 'bridge'
        option proto 'static'
        option ipaddr '10.0.2.1'
        option netmask '255.255.255.0'

...

root@wrt0:~# cat /etc/resolv.conf 
search lan
nameserver 127.0.0.1

root@wrt0:~# cat /tmp/resolv.conf.auto 
# Interface wan
nameserver 192.168.0.10
nameserver 192.168.0.25
search office.website.org
search website.org

Dnsqmasqを使用してローカル名を解決する場合、解決は失敗します。

root@wrt0:~# nslookup abc.office.website.org
Server:    127.0.0.1
Address 1: 127.0.0.1 localhost

nslookup: can't resolve 'abc.office.website.org': Name or service not known

Dnsmasqをバイパスすると、解決は正常に機能します。

root@wrt0:~# nslookup abc.office.website.org 192.168.0.10
Server:    192.168.0.10
Address 1: 192.168.0.10 resolver.office.website.org

Name:      abc.office.website.org
Address 1: 192.168.0.32 abc.office.website.org

dnsmasqは、問題なくインターネットに接続されたサーバーを検索します。

root@wrt0:~# nslookup abc.website.org
Server:    127.0.0.1
Address 1: 127.0.0.1 localhost

Name:      abc.website.org
Address 1: 208.xxx.xxx.xxx xyz.website.org

Dnsmasqのフィルタリングをバイパスする方法、またはdnsmasqを完全にバイパスする方法について何かアイデアはありますか?ありがとう! :D

3
sudoman

まず第一に、あなたは本当に現在の(18.X)または最後のリリース(17.XX)にアップグレードする必要があります: https://wiki.openwrt.org/de/doc/howto/generic.sysupgrade ==

私が正しく理解していれば、DNSサーバーとDHCPサーバーはネットワーク内の異なるデバイスですか?その場合、domainneededがオンになっている可能性があり、/ etc/hostsにDNSからIPへのマッピングがあるはずです。詳細なヒントについては、 ドキュメント の最初の部分をお読みください。

1
AdamKalisz

1つの解決策は、dnsmasqを無効にして、dhcp 'lan'/etc/config/dhcpセクションを変更することですが、ネットワーク固有の構成が必要です。

root@wrt0:~# /etc/init.d/dnsmasq stop
root@wrt0:~# /etc/init.d/dnsmasq disable

config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option dhcpv6 'server'
        option dhcpv4 'server'
        option ra 'server'
        list   dns '192.168.0.10'
        list   dns '192.168.0.25'
        list   domain 'office.website.org'
        list   domain 'website.org'
        list   domain 'othersite.org'

同様の結果を達成する別の方法は、dnsmasqを使用して、/etc/dnsmasq.confにオプションを追加することです。

dhcp-option=6, 192.168.0.10, 192.168.0.25

ただし、dnsmasqを使用して複数のsearchドメインを設定する方法は明確ではありません。

残念ながら、ルーターが別のネットワークで使用されている場合、またはDNS IPアドレスが変更されている場合は、これらの方法の両方で設定を編集する必要があるため、完全な答えではありません。

1
sudoman