概要
先日、とあるルーティングのセグメントから、インターネットに向けてアクセスできないという問い合わせがあり、対応を行った。。
こういった問題があったときに、どのような症状として見られ、どのような対応をしていけばわかったのか。対応した手探りの手順を今後のために記載する。
経緯の概要
- サーバセグメントから、インターネットに向けて出ていけない。通信が不安定という問い合わせを受けた。
- サーバセグメントからtracerouteを実行し、戻りのパケットで止まっている事を確認できた。
- 下位ルータ側のルーティングテーブルを確認。
- 下位ルータのOSPFテーブルのコストを確認
- それぞれのtcpdumpを追加。
- 上位ルータにてtcpdumpを実行
- 上位・下位ルータにてarpを確認する。
- 上位ルータで表示されるMACアドレスが、下位ルータの実際にやり取りするMACアドレスと異なる事を確認する。
- MACアドレスから、juniperのNATで既に使用しているアドレスである事を確認する。
- このNAT設定は既に使われていないため、この設定を削除する。
- このARPテーブルを更新させるために、下位テーブルからMACアドレスをGARPで更新させる。
具体的にやっていったこと。
サーバ 1から、インターネットに向けてtracerouteをする。
traceroute -nI 8.8.8.8
この時、下位ルータと上位ルータは一応通っていたが、下位ルータがすごい反応が遅かった。
また、帰りの通信が戻ってこなかった。
下位ルータ2台にて、以下のコマンドを実行する。
show ip route
これで、上位ルータへのスタティックルートが設定されている事を確認する。
また、図では記載していないが他の社内セグメントには疎通ができる事を確認できた。
ECMP(分散処理)の設定が働いていないのか?と思い、下位ルータにてOSPFのコストを確認する。ここでは、1台だけコストを上げ、片方は下げるという事を行っている。
show ip ospf interface xxx
tcpdumpを下位ルータに実行する。すると、ルータ側では戻りのパケットでは返ってこない事を確認した。
tcpdump -nn -e -i eth2 host 8.8.8.8 and icmp
上位ルータ側で、下位ルータのMACアドレスが表示されるか確認した。
2台冗長構成の場合は2台両方で実施すること。
show arp | include 下位ルータのMACアドレス。
これをみると、うまくMACアドレスが表示されない事を確認した。
下位ルータにて、以下のコマンドを実行してみる。この時点で、上位ルータのMACアドレスが見れるか確認する。
tcpdump -nn -i eth2 arp
ここで、上位ルータにて以下のコマンドを実行する。
show arp 下位ルータのIPアドレス
これで表示されるMACアドレスが、どうも下位ルータのMACアドレスと異なるようだ。
juniper側のコンフィグを見ると、アドレスが使用されている事を確認したため、削除を行った。
その後、下位ルータで以下のGARPコマンドを実行して、隣接するネットワーク帯にいるMACアドレステーブルを書き換えさせた。-U
は、-A
でも更新できる。
arping -U -I eth2 下位ルータのIPアドレス