ローカルにあるサーバの名前解決ができたりできなかったりした話 代替DNSサーバについて
うちでは Synology DS218 が稼働していますが、それへのアクセスに問題があり、それを解決した話です。
なんということはないですが、ちょっとハマりました。
事象
ドメイン名 (www.hircos.work/) でアクセスする場合、サーバが見れたり見れなかったりする。
見れていたときも、しばらく間をあけたりすると見れなくなる。
「あれ?見れないずぇ」と思い、10分くらい後にまたアクセスすると、見れたりする。 それでも見れなかったりもする。
解決法
PCの設定、「代替DNSサーバー」を消したら直りました。
代替DNSサーバー に入ってるIPアドレスを消す
解説
優先・代替DNSサーバの設定により、ローカルのサーバはDS218のDNSに、外部はルータに名前解決の依頼を飛ばしていると思っていた。
真ん中のはパソコンね
外部ネットワークは普通に見れていたので、もしやDNS機能がスリープしてて起きるのに時間がかかるから、見れない時間が発生する?
だから時間が経つと見れるようになるし、間をあけるとまたスリープしちゃう? と思った。
がしかし、名前解決失敗のときの動きをWireSharkで見てみると、そもそもDS218のDNSに依頼をかけていない。
全部、ルータの方に飛ばしていた。
依頼を受けたルータは、外部ネットワークに向かって www.hircos.work の名前解決を依頼。
そうすると、外から見たうちのグローバルIPアドレスが返ってくるわけ。
グローバルIPアドレスはうち全体に振られているアドレスなわけで、それがうちにあるどの機器へのアドレスなのかは分からない。
つまり、うちへのアクセスだってことは分かるが、サーバまではたどり着けない。
結果として、サーバが見れない。
なんだよ代替DNSってよ
解決方法は簡単で、代替DNSを消せばいいんです。
でも、じゃあ代替DNSサーバーの設定ってなんなんだよ!って話です。
優先DNSに聞いて、ダメなら代替の方に聞いてくれると思うじゃん?
でも実際、そういう動きになってないです。
ダメなシーンでは、最初から代替DNSに依頼してコケます。
代替DNSサーバに関して、「優先DNSサーバに繋がらない場合は代替DNSサーバに切り替える」という情報もあります。
でも、そもそも優先DNSに繋がらない事象がいつ・どうして発生するのか不明。
そうすると、そのときのログを取るのがめんどくさそう。
ということで、今回はこれで良しとします。
実際、外部ネットワークへのアクセスは DS218 からルータに聞いてくれてるみたいだし、特に困っていません。
まあ最初から代替DNSサーバの設定は要らなかったということで。
そもそもこの優先・代替の設定は私のような使い方じゃなくて、冗長性確保のためにDNSが複数あったりする場合のやつなんでしょうね。
だから優先・代替DNSサーバが同じ動作をしてくれれば、設定を変えずに切り替えてくれるので便利とかじゃない?
たぶん。