BBR-4HGをWZR-HP-300NHに変更して2ヶ月が経つ。変更時点からWZRのローカルLAN側に接続したPC(ADX2600)からひかり電話アダプタRT200NEへのhttp接続が出来なくなっていた。RT200NEへのpingも通じたり通じなかったり不思議な状態であった。BBRとWZRが異なるだけでネットワークトポロジーに変更は無い。もしかしたら、192.168.1.0/24のセグメントと192.168.11.0/24をルーティングするルータをlambからBBR-4HG改に変更したことが原因か探るためパケットキャプチャで分析してみた。
どうみてもバッファロのWZR-HP-300NHがおかしい、、、、、
(1)ping応答のパケットをキャプチャした
No71でADX2600(Micro-St_17:53:68)192.168.11.2からRT200NE192.168.1.1へpingを打つ。このセグメントは、Default GWがWZR(Buffalo_8e:6f:e8)192.168.11.1となっているためWZRへパケットが送信されている。
DefaultGWのWZRでは、192.168.1.0/24のセグメントへ静的経路情報設定で192.168.11.200がgwであることが設定されている。No.72でWZRは、BBR-4HG改linuxルータ(Melco_11:22:33)192.168.11.200へ送信元IPが192.168.11.2、送信先192.168.1.1のパケットを送り出している。
No77でBBR-4HG改linuxルータは、RT200NE192.168.1.1へpingパケットを送り、その応答パケットを192.168.11.2へ返している。このとき、linuxルータは、192.168.11.0/24のセグメントに直接接続されているため、192.168.11.2へのパケットをDefaultGWのWZRへ送らず、直接送信する。
この結果ADX2600は、RT200NEとのpingによる接続テストにパスする。
(よくあるDefaultGWは、No71で受け、No74で同一セグメント上のルータへ転送処理を行ったときにICMP Redirectを送信元の192.168.11.2へ送り、以降のパケットを直接192.168.1.0/24のセグメントを知っているGWへ送るよう指示する。このときのWZRはICMP Redirectを出さない。)
(2)RT200NEへADX2600のブラウザから接続しtcpパケットを調べる
No1297でADX2600(Micro-St_17:53:68)192.168.11.2からRT200NE192.168.1.1へhttpのtcp接続パケットである。DefaultGWのWZR(Buffalo_8e:6f:e8)へ送信されている。pingと同様にNo1300で192.168.1.0セグメント向けルータであるBBR-4HG改linux(Melco_11:22:33)へ転送される。
No1301でRT200NEからの応答パケット(Syn/Ack)がBBR-4HG改linuxルータからADX2600へ送信される。
No1302でADX2600からSyn/Ackに対する応答AckがWZRへ送られる。ADX2600はセッションが確立したと判断し、No1303で約100msec後にADX2600からhttpのGETデータのパケットが送られる。
しかし、WZRは、No1302のAckパケットを転送しない。
結果、RT200NE192.168.1.1は、Ackパケットを受けないため、No1310で約3秒後に再度Syn/Ackを再送する。
再送パケット受けたADX2600は、No1311,1317でAckとhttpのGETを再送する。
WZRは、No1311,1317のパケットを転送しない。
このような状態のためADX2600からRT200NEへの接続が出来ない。
推測だが、WZRは、ルータであると同時にWAN回線との接続を担っている。WAN側からのアタックパケットを防御するためSynパケットの応答パケットSyn/Ackが認識されないためAckパケットを阻止してしまうのでないかと思える。
ローカルネット側なので不要な阻止をしてはいけない。
もし、WZRがICMP Redirectを出す機能があれば、ADX2600は、Ackパケットの再送をWZRに投げず、直接192.168.1.0セグメントルータへ送るため、若干の応答遅延が発生するがRT200NEとの接続が確立すると思える。
本来は、WZRがAckパケットを正しく転送することである。
2009年6月28日バッファロのサポートにメールをしてみた
ICMP Redirect は、機能として持っていないとのこと。
WZRがhttpパケットを正しく転送しない件についてパケットデータをテキスト化し問い合わせてみた。WEB問い合わせは、5000文字しか受付けないため、二つに分割して問い合わせをしてみた。
同様の構成でシュミレーションして問題無く接続できるとのことである。?。。。
再度チェックしてみる
pingを確認し、http接続を確認すると接続が出来る。
pingを行った後に、「route -print」で経路情報を確認すると「192.168.1.1 gw 192.168.11.200」の経路情報が表示されている。?これって、ICMP Redirectを受けている?WZRはICMP Redirectを出さない仕様のはず。。。
パケットキャプチャすることにした
(3)pingの応答パケットをキャプチャしてみた
なんと、WZRがICMP Redirectを出している。
(4)RT200NEへADX2600のブラウザから接続しtcpパケットを調べる
ICMP Redirect が出ている。
2009年7月2日から7月9日の間にWZRの変更は、ログ出力関連の設定ON/OFF程度の変更しかしていない。
不思議だ。。。。
バッファローにICMP Redirectが出て接続できるようになった件を報告した結果、詳細なログを要求された。
取得していたWiresharkのパケットキャプチャデータと設定情報、ネットワーク構成図を送付した。
回答がこれだ!
・WZRの問題でなく他社ルータの問題だと
・MACアドレスを追跡してもWZRに問題ないと(パケット欠落を指摘するも何が不明で問題か指摘もしない)
このサポートとこれ以上問い合わせても無駄だろう
問題解決への意欲を失う
-------------------------------
2009/8/8 firmware version
どうみてもバッファロのWZR-HP-300NHがおかしい、、、、、
(1)ping応答のパケットをキャプチャした
No71でADX2600(Micro-St_17:53:68)192.168.11.2からRT200NE192.168.1.1へpingを打つ。このセグメントは、Default GWがWZR(Buffalo_8e:6f:e8)192.168.11.1となっているためWZRへパケットが送信されている。
DefaultGWのWZRでは、192.168.1.0/24のセグメントへ静的経路情報設定で192.168.11.200がgwであることが設定されている。No.72でWZRは、BBR-4HG改linuxルータ(Melco_11:22:33)192.168.11.200へ送信元IPが192.168.11.2、送信先192.168.1.1のパケットを送り出している。
No77でBBR-4HG改linuxルータは、RT200NE192.168.1.1へpingパケットを送り、その応答パケットを192.168.11.2へ返している。このとき、linuxルータは、192.168.11.0/24のセグメントに直接接続されているため、192.168.11.2へのパケットをDefaultGWのWZRへ送らず、直接送信する。
この結果ADX2600は、RT200NEとのpingによる接続テストにパスする。
(よくあるDefaultGWは、No71で受け、No74で同一セグメント上のルータへ転送処理を行ったときにICMP Redirectを送信元の192.168.11.2へ送り、以降のパケットを直接192.168.1.0/24のセグメントを知っているGWへ送るよう指示する。このときのWZRはICMP Redirectを出さない。)
(2)RT200NEへADX2600のブラウザから接続しtcpパケットを調べる
No1297でADX2600(Micro-St_17:53:68)192.168.11.2からRT200NE192.168.1.1へhttpのtcp接続パケットである。DefaultGWのWZR(Buffalo_8e:6f:e8)へ送信されている。pingと同様にNo1300で192.168.1.0セグメント向けルータであるBBR-4HG改linux(Melco_11:22:33)へ転送される。
No1301でRT200NEからの応答パケット(Syn/Ack)がBBR-4HG改linuxルータからADX2600へ送信される。
No1302でADX2600からSyn/Ackに対する応答AckがWZRへ送られる。ADX2600はセッションが確立したと判断し、No1303で約100msec後にADX2600からhttpのGETデータのパケットが送られる。
しかし、WZRは、No1302のAckパケットを転送しない。
結果、RT200NE192.168.1.1は、Ackパケットを受けないため、No1310で約3秒後に再度Syn/Ackを再送する。
再送パケット受けたADX2600は、No1311,1317でAckとhttpのGETを再送する。
WZRは、No1311,1317のパケットを転送しない。
このような状態のためADX2600からRT200NEへの接続が出来ない。
推測だが、WZRは、ルータであると同時にWAN回線との接続を担っている。WAN側からのアタックパケットを防御するためSynパケットの応答パケットSyn/Ackが認識されないためAckパケットを阻止してしまうのでないかと思える。
ローカルネット側なので不要な阻止をしてはいけない。
もし、WZRがICMP Redirectを出す機能があれば、ADX2600は、Ackパケットの再送をWZRに投げず、直接192.168.1.0セグメントルータへ送るため、若干の応答遅延が発生するがRT200NEとの接続が確立すると思える。
本来は、WZRがAckパケットを正しく転送することである。
2009年6月28日バッファロのサポートにメールをしてみた
ICMP Redirect は、機能として持っていないとのこと。
WZRがhttpパケットを正しく転送しない件についてパケットデータをテキスト化し問い合わせてみた。WEB問い合わせは、5000文字しか受付けないため、二つに分割して問い合わせをしてみた。
同様の構成でシュミレーションして問題無く接続できるとのことである。?。。。
再度チェックしてみる
pingを確認し、http接続を確認すると接続が出来る。
pingを行った後に、「route -print」で経路情報を確認すると「192.168.1.1 gw 192.168.11.200」の経路情報が表示されている。?これって、ICMP Redirectを受けている?WZRはICMP Redirectを出さない仕様のはず。。。
パケットキャプチャすることにした
(3)pingの応答パケットをキャプチャしてみた
なんと、WZRがICMP Redirectを出している。
(4)RT200NEへADX2600のブラウザから接続しtcpパケットを調べる
ICMP Redirect が出ている。
2009年7月2日から7月9日の間にWZRの変更は、ログ出力関連の設定ON/OFF程度の変更しかしていない。
不思議だ。。。。
バッファローにICMP Redirectが出て接続できるようになった件を報告した結果、詳細なログを要求された。
取得していたWiresharkのパケットキャプチャデータと設定情報、ネットワーク構成図を送付した。
回答がこれだ!
・WZRの問題でなく他社ルータの問題だと
・MACアドレスを追跡してもWZRに問題ないと(パケット欠落を指摘するも何が不明で問題か指摘もしない)
このサポートとこれ以上問い合わせても無駄だろう
問題解決への意欲を失う
-------------------------------
2009/8/8 firmware version