2014年12月31日水曜日

一方からpingが通るが逆方向からはpingが通らない問題

ネットワークの疎通できない問題で、たまに遭遇してしまうタイトルの件。トラブルシュートの方法をまとめておく。

状況説明

以下のように、一方のサーバーAからはpingが通るのにもう一方のサーバーBからはpingが通らないという事象。以下の文章では、この例を用いて説明を行う。

○:[サーバーA] ---> [ルーター(DGW)] ---> [サーバーB]
×:[サーバーA] <--- [ルーター(DGW)] <--- [サーバーB]

一見するとpingはecho requestを送信して、requestを受け取った相手サーバーからecho replyをもらうという動作(つまり相手サーバーまで到達して帰ってくるイメージ)なので、片方通ればもう片方も問題なく通ってしまうと考えがち。

トラブルシュート

例で示した内容であれば、まず間違いなく「サーバーA」側に問題があるが、以下の通り順番に確認を取っていく。

①Windowsの場合は、Windowsファイアーウォールを無効化する(Linuxの場合も同様にiptables等を無効化する)

②「①」で復旧しない場合、ルーティングを確認する。デフォルトゲートウェイやstatic routeを入れている場合はその設定が正しいか確認する。特にサーバーが複数NICを持っている場合は、正しいNICから戻りパケットが出力されるようルーティング設定がされているかを確認する

③「①」「②」で復旧しない場合、DGWとなっている機器(ルーター・L3スイッチ)からpingを飛ばしてみたり、ArpテーブルやMAC Addressテーブルに正しく双方の機器が登録されていることを確認する。またaccess-list等でアクセス制御をしている場合はルールのチェックも行う

④以上全てで問題が無いのにpingが通らない場合、別の機器を同一ネットワークに繋ぐ等して切り分けを進めるしか無い