Netgearのルータで内部のDNSサーバにアクセスできないことの対処法

Tips
2019年07月02日 10:00

概要

現在ルータとしてNetgear製のR7800というルータを使っています。
それと同時に、私はドメインを持っているのでプライベートネットワークでDNSを構築して、特定のドメインの名前解決のためにそのDNSにアクセスするようにしています。
しかし、R7800というルータでは、内部へのDNSへの問い合わせがうまくできませんでした。

今回は、Netgear製のR7800というルータで内部のDNSへの問い合わせをする方法を紹介します。

環境

  • Netgear R7800 ファームウェア v1.0.2.62

原因

ひとまず原因を探すために、R7800について色々と調べてみました。
そうすると、R7800ではDnsmasqというDNSサーバが動作していることが分かりました。
それと同時に、いくつかDNSの問い合わせを試してみると、必ずルータに設定したDNSサーバに問い合わせしていることが分かりました。

このようなことから、「DNSの問い合わせのパケットはルータを通って問い合わせるため、ルータのDnsmasqが勝手に問い合わせ先のDNSサーバを変えている」のが原因ではないかと推測しました。

対処法

推測した原因から、対処法をやってみました。

Dnsmasqについて調べてみると、特定のドメインだけDNSの問い合わせ先を変更できるということが分かりました。
そのため、対処法として私が持っているドメインだけ内部のDNSサーバに問い合わせをするということにしました。

設定は、Telnetでルータにアクセスして行います。
デフォルトの設定では、ルータにTelnetでアクセスできないため、http://ルータのIPアドレス/debug.htm にアクセスし、Telnetを有効にします。
Telnetでルータにアクセスしたら、Dnsmasqの設定ファイルが/etc/dnsmasq.confにあるので、viなどのエディタを使って次の内容を追記します。

server=/ドメイン/DNSサーバのIP
server=/プライベートIPアドレスのネットワーク部.in-addr.arpa/DNSサーバのIP

あとは、次のコマンドを実行してDnsmasqの設定を読み込みます。

/etc/init.d/dnsmasq reload

これで、特定のドメインの正引き、逆引きについては、内部のDNSへ問い合わせるようになりました。

さいごに

全ての名前解決を内部のDNSサーバに問い合わせていないため、完全な解決法ではないですが、ひとまず最低限の設定はできたと思います。

ところで、NetgearのルータはLinuxが動いているようなので、結構操作が簡単でした。