VPN環境下のandroid用Firefox名前解決が困ったちゃんな件
自宅にいる時はandroidからns-lab BBへ直接接続しているので問題が無いのだが、
外出先からVPN(IPSec)を張ってns-lab BBに接続する際に問題が起きたのでちょいとメモ。
事の発端は、内向けDNSのTTLを86400から10800に短縮した為。
TTL=86400の時はandroid端末内にDNSキャッシュが残っている為、
VPN経由で自鯖に接続をしても、キャッシュが優先されて内向きのAレコードが返ってきていた。
しかし、TTL=10800にすると流石にキャッシュが切れる事があり、
キャッシュ切れる → 内部の名前解決 → "ns-lab.org"ドメインのグローバル側Aレコードが返答される →
"ns-lab.org"サブドメインの問い合わせもグローバル側に投げられる → Aレコードが無いのでNoReplyになる
という、よくある障害コンボに突き当たった。
まぁ、この辺りは慣れた物でVPNプロファイルで優先DNSを設定したりしてなんとか回避。
したと思ったが、んな事無かった(´・ω:;.:…
文章だと非常にわかりずらいので、またもやトポロジ図の出番。
- サーバがInternetとLANに見せているドメインは同じ
- VPNクライアント側はSplitTunnelingを使って、InternetとVPN網の両方に接続可能
- androidからserverへ名前解決を行って"www.hoge.org"プライベートIPのAレコードが取れれば理想
この状態でandroidからserverに問い合わせを行うと、
グローバルIP(202.212.xxx.aaa)が返答されてしまい、
"www.hoge.org"のAレコードを引っ張る事が出来なかった。まぁ、当たり前って言えば当たり前なのだが
………
この辺りの対処方法は色々とやり方があるのだが、今回は優先DNSを設定する方法で対処。
しかし、PCではLANの名前解決が出来るのにandroidのWebブラウザから
"www.hoge.org"にアクセスしようとすると何故か202.212.xxx.aaaが返答され、
LAN内のAレコードが引けない状態となった。
しかし、androidから直接nslookupやったりdigったりすると、ちゃんとLAN内のAレコードが引ける状態…
この辺りで「Webブラウザ(Firefox)が臭うな…」と思ってchromeに変更してアクセスしてみると、
"www.hoge.org"がちゃんと表示出来た。
………
という事で、Webブラウザが見るDNSリゾルバがなんかおかしいという事がわかったので、
適当なWebブラウザの挙動を調べてみた。間違っていたらゴメンナサイ
- chrome → 優先DNSあればそっちも見る。
- Firefox → androidのネットワーク項目に設定したDNSサーバだけを見る。
- dolphin → 優先DNSがあればそっちも見る。
なんとも微妙な結果だが、今回の結末はWebブラウザの挙動で変化するという内容だった。
今回の事から
「DNSのTTLを長くしておくと、それに起因しての隠れた障害も起こりうるんだなぁ~」
と実感した昨晩。
DNSは軽視されがちだけど、一度障害が起きると全滅するから特に気をつけておきたい所。
…たとえソフトウェア側に問題があったとしても(´;ω;`)