トラブルシュート

一部の特定のサイトだけ見れない

原因

以下の2つが考えられます。

  1. Path MTU Discovery ブラックホール
  2. 特定サイトのみDNS名前解決ができない

Path MTU Discovery ブラックホール

Path MTU Discoveryの詳細については、ここで説明していますので、 まずはこちらをご確認下さい。

OSにてPath MTU Discoveryが有効になっている場合、IPヘッダのDFビットに1がセットされるため、IPフラグメンテーションができません。そのため、Webサーバから http で 2KB以上のhtmlやjpegファイルをダウンロードするときに、NWのどこかのインタフェースでMTU値を超え、パケットが破棄されてしまいます。(クライアントから Webサーバへのパケットは小さいため、MTU値を超えない場合が多いです。)

ただし、パケットを破棄する機器は、Webサーバに向けてICMPのタイプOx03/コードOx04 (Destination Unreachable/Fragmentation needed and Don't Fragment was set) を送りつけます。このICMPメッセージには破棄されたNW機器のNextHopインタフェースのMTU値が含まれており、このメッセージがWebサーバまで届けば、WebサーバはMSS値を小さくし、クライアントへ再送します。

しかし、ファイアウォール等で、全てのICMPを止めている場合、サーバにはこのメッセージは届きません。そのようなサイトが閲覧不可状態になってしまいます。これを Path MTU Discovery ブラックホール問題と言います。

また、特殊な状態として、ICMPメッセージを出すNW機器がNATも行なう場合、も同様なブラックホールにヒットします。詳細はリンク先をご参照下さい。

解決方法

これらの解決方法としては、WANに接続されるルータにおいて、TCPオプション2番のMSS値を書き換える方法がよく使われています。 この解決方法の詳細は、ここで説明しています

特定サイトのみDNS名前解決ができない

例えば、社内用のActiveDirectory(以下、AD)として、example.jpというドメインを使うときを考えます。 AD環境ではDNSが必須なので、example.jpというドメインの管理権限を持ったDNSサーバを立てたとします。

そして、このADドメイン内にはWebサーバは無いが、レンタルやホスティングサービスを利用して社外にwww.example.jpというWebサーバを持っていたとします。

本来、このwww.example.jpの名前解決は、インターネット上に存在するレンタル会社、ホスティング会社のDNSサーバによって管理されています。

しかし、example.jpというドメインを管理するDNSサーバ(権威サーバ=コンテンツサーバ)がクライアントに設定されているため、たとえフォワーディングの設定をしていても、このAD用のDNSサーバがwww.example.jpの名前解決を求められたときに、フォワーディングはせずに『example.jpがつくサーバは全部俺が管理してるけど、そんなサーバ無いぜ?』という回答を返してくるため、 このドメイン内ではwww.example.jpの名前解決ができない状態になります。

解決方法

AD用のDNSサーバに、www.example.jpのAレコードを直接入れるしかありません。

この問題の理解のための基礎知識については、以下ページもご参照下さい。

【図解】DNSクエリの仕組み,通信フロー 〜グルーレコード,コンテンツ,キャッシュ,フルリゾルバ,フォワーダ,ルートヒントについて~
一般的なDNSクエリ/レスポンスの通信フロー ホームネットワークの構成例 ホーム...

コメント

タイトルとURLをコピーしました