LAN内のWebサーバへの接続(Webページの表示)に遅れが生じる
January 30, 2018 – 11:53 pm
我が自宅ネットワークはIPv4/IPv6デュアルスタックになっている(以前示したネットワーク構成を右に再掲)。
このデュアルスタックのネットワーク環境下でWebサーバを外部に公開しているのだが、サーバーと同一のLAN環境下にある端末からこれに接続しよとするとWebページの表示に遅れが生じる。この遅れ現象、特定の条件下で発生するのであるが、何故このような現象が発生するのか、私には、そのメカニズムがよく理解できない。
よく理解できない状態にはあるが、この間、いろいろ資料を調べるなどして考えたことを一応メモしておくことにした(基本的には、公開する必要のない話なのだが・・)。
IPv4環境下では、LAN内から同一LANにある(外部公開している)サーバーにドメイン名で接続することは、特別な工夫をしない限り、アクセスすることはできない。ドメイン名から名前解決して得られるIPアドレスがグローバルアドレスであるため、そのIPアドレスではサーバのローカルアドレスへの接続ができない。名前解決で得られるグローバルアドレスは自宅ネットワークのルータのそれに対応している。
NICのプロパティを変更してネットワークをIPv4接続のみ(IPv6接続なし)とし、Webへの接続を試みると、しばらくすると「ページを表示できません」とのメッセージがでる。上記したように接続できていない。
IPv6環境下では、名前解決して得られる当該サーバのIPアドレスはグローバルアドレスなので、クライアントの端末がどこにあろうとアクセスすることは可能だ。我が自宅ネットワークのドメイン名を登録しているDNSには、IPv4のAレコードとともにIPv6に対応するAAAAレコードが与えられている。
ここでネットワークをIPv6接続のみ(IPv4接続なし)とし、Webへの接続を試みると、「即座に」Webページが表示できる。
IPv4/IPv6デュアルスタック環境ではどのようになるのか。そのあたりについて、うまく解説している記事(NTT IPv6閉域網フォールバック問題)を見つけた。以下、関連部を転載させてもらった:
IPv4とIPv6の間には互換性がないが、DNSを利用して名前解決を行う部分は共通。権威DNSサーバにIPv4とIPv6両方が登録されていれば、FQDNからIPv4アドレスとIPv6アドレスの両方が得られる。DNSへの問い合わせそのものはIPv4とIPv6のどちらを利用する事も可能なので、IPv4しか利用できない環境でFQDNに対するIPv6アドレスを取得してしまう。
IPv6に対応した多くのアプリケーションは、以下の手順で通信を開始する。
- 名前解決を行う
- IPv6とIPv4のIPアドレスが存在していた場合IPv6での接続を先に試みる
- IPv6での接続が失敗したらIPv4での接続を試みる
この解説どおりでネットへの接続が行われると、IPv4/IPv6デュアルスタック環境では、接続先のWebサーバのIPv6アドレスへの接続が成功し、上記のIPv6接続のみの場合と同様に「即座に」Webページが表示されるはずである。
しかし、不思議なことに、ブラウザが Microsoft Edge の場合、接続対象とするWebサーバに含まれるWebページの「閲覧履歴」がない(クリアされている)とWebページの表示に15秒程度の遅れが生ずる。ひとたび、Webページが閲覧され、「閲覧履歴」が保存されている条件下では、「即座に」Webページが表示される。
この現象、ブラウザ上でのドメイン名からIPアドレスを求める名前解決において、何らかのメカニズム(特別の手続きというべきか)が働いているように思う。
以上、我が自宅ネットワーク上で経験した現象をメモしておいた。