2021年8月18日水曜日

openwrtのDNS portforwarding設定

 2021/06の中旬ごろから、家で使っているISPのDNSが、fc2.xxxの名前解決をしてくれなくなりました。
hostやdigコマンドで名前を引こうとすると、SERVFAILが発生してしまいます。

はじめは検閲の類かと思ったのですが、ISPとしてどうなのか、ということでお客様窓口に連絡してみました。
何度かのやり取りの後、問題が再現したので調査すると言われ、解消を待っているのですが、2ヶ月以上経過した現在でも、未だに解決したとの連絡がありません。
先方の技術の方からは、問題が解消するまでの間はGoogleのDNSを使って下さいというコメントもあったので、openwrtが動いているルータの設定を変えてみました。 

ちなみに、openwrtのDNS関連の設定は整理されておらず、かなりハマりました。

今回の問題を解決する方法としては、以下の2つのやり方があります。

(1) ルーターのDHCPで通知されるDNSのアドレスを、8.8.8.8と8.8.4.4に変更する。
(2) ルーターのDNS Forwarding先に8.8.8.8と8.8.4.4を設定する。

上記(1)は、DHCPクライアントが一定時間古いDNSアドレスを保持してしまい、設定が即時に反映されないやり方なので、(2)の方で対応したいと思います。

この設定は、openwrtのGUI(luci)上だけで設定可能です。

ログイン後、Netorkタブの「DHCP and DNS」→「General Setting」の「DNS forwardings」に8.8.8.8と8.8.4.4の2つを追加します。
ただ、これだけではダメで、「Resolv and Hosts Files」の「Ignore resolve file」のチェックを入れる必要があります。

後者は、ルーターが起動した際に自動的に生成されるresolv.confファイルを使わないという設定です。
resolv.confには、WAN側から通知されたDNSサーバーの情報が反映されるため、これを無視するという意味です。

どちらの設定もSave & Applyすれば、ルーターに問い合わせた名前解決が、指定した2つのDNSに転送され解決します。

参考までに、「Network」→「Interfaces」の「WAN」の「Edit」で遷移できる画面で、「Advanced Settings」の「Use DNS servers advertised by peer」
のチェックを外して指定できるDNSサーバーは、ルーター本体が名前解決をするために使うDNSの設定なので、(1)(2)のどちらにも対応しません。

もう少しわかり易く整理してくれればなと思います。

それにしても、いつになったら直るんだろう、某ISPのDNS。

0 件のコメント:

コメントを投稿