rabbit51

it's since Nov.30 2005
May.29 2014, transferred from broach

ひかり電話 HGW PR-600MIがネットボランチDDNS登録をTCP廃棄する原因と対策

2021-07-03 14:00:00 | ひかり電話
2021年5月13日の自動バージョンアップで「ひかり電話 HGW PR-600MIのfirmware更新とIPv6パケットフィルターの不具合」が発生した。バージョンを戻す(01.00.0007->01.00.0005)事を考え、NTTの「0120-970-413」へ電話した(「0120-000-113」では、機器交換しか対応出来ないとの事だった)。結果、「0120-000-113」へ回される。そして、「バージョンを戻すfirm提供が出来ない」「技術者派遣で機器確認しか対応出来ない」との事。コロナ下で入室させ対面対応はお断りし、「様子見」で状態確認を進めていた。「ひかり電話 HGW PR-600MIのIPv6パケットフィルターがネットボランチDDNS登録をTCP廃棄」で「2409:10:XXXX:YY00::/64」からの通信不具合が発生したり、「ひかり電話 HGW PR-600MIのIPv6パケットフィルタを無効にしてもTCP廃棄発生」で、万策つき、再度問い合わせを行った。サポートの方曰く、チェックツールで確認すると「グローバルprefixが二つ登録されている(?)」との事。複数の機器からDHCPv6-PDを行なっているので履歴がそのようになっているのかもしれない。時間切れで翌日対応。PR-600MIのIPv6パケットフィルタ「無効」対応のFirewallゲートウェイを介さず確認したいとの事だったので、深夜にVLAN設定を変更し、Firewallゲートウェイを外した。PR-600MIのDHCPクライアント取得情報が「保存済み自動設定情報にて起動」で取得出来ない。この状態になるとリースタイムが切れるまで取得出来ない。2時間30分から3時間程掛かるので翌朝の確認とした。翌朝、NTTサポートから連絡があり、「グローバルPrefixの登録が一つになっている」と連絡、「2409:10:XXXX:YY00::/64」からの通信が正常になっている事を確認した。
ひかり電話 HGW PR-600MIのSPI設定とIPv6パケットフィルタ設定(IPoE)で不具合」を解決させるのが目的だが、「ひかり電話 HGW PR-600MIのIPv6パケットフィルタを無効にしてもTCP廃棄発生」なのでどうにもならない。NTTサポートから「IPv6ファイアウォール機能の無効化」が出来ない件、「IPv6パケットフィルタ設定(IPoE)が有効にならない」件について、製品担当部門へ要望を上げてくれるとの事で終了した。

(1)「2409:10:XXXX:YY00::/64」からの通信不具合時構成

ひかり電話HGW PR-S300SEのIPv6スループットを確認する」「ひかり電話 HGW PR-600MIのIPv6スループットを確認する」「ひかり電話 HGW PR-600MI のオフライン設定」と同様の構成で「ひかり電話 HGW PR-600MIのIPv6パケットフィルタを無効にしてもTCP廃棄発生」と同じ「ip6tablesによるFirewall」を構成している。
PR-600MIのLAN4から「2409:10:XXXX:YY00::/64」ネットワークに接続され、NVR510。NVR500、OpenWrtなどのルータが接続されている。ホームネットワーク機器は、NVR510配下の「2409:10:XXXX:YY10::/64」ネットワークに接続されている。NVR510のネットボランチDDNS登録は、WAN側アドレス「2409:10:XXXX:YY00:ae44:f2ff:feaa:bbcc/64」をソースアドレスとして登録する。「2409:10:XXXX:YY00::/64」ネットワークでは、PR-600MIからのRAとDHCPv6-PDでホストやルータのアドレスが決定される。「2409:10:XXXX:YY00::/64」からのIPv6パケットは、PR-600MIのLAN4ポートを経由し、ルーティングされ、WANポートからDebian10のbr0ポートへ送られる。Debian10でルーティングされbr0ポートからLinkLocalアドレス経由でUNIポートを介し、NTT-GWへ送られる。応答パケットも逆順でこの経路を通過する設計。

(2)不具合原因
Debian10のenp3s0ポートが「2409:10:XXXX:YY00::/64」ネットワークに接続されているため、このポートから応答パケットが「2409:10:XXXX:YY00::/64」の機器にルーティングされるためだった。ネットワークに接続されると「暗黙」で経路が経路テーブルに設定され、IPv6 neighbor cashに接続機器のMACアドレスが記録される。
tcp接続では、「syn」パケットがPR-600MI -> Debian10 -> NTT-GW経由で宛先ホストに到達、「syn/ack」パケットがNTT-GW -> Debian10 -> 送出ホストへ戻り、「ack」パケットがPR-600MIへ送られる。PR-600MIのSPIが「syn/ack」を確認していないため、「ack」パケットを「TCP 廃棄[パケットフィルタ]」した。
ping(icmpv6)は、応答パケットが、送出ホストに戻るため、疎通が確認されていた。

(3)不具合対策
ポリシールーティング(PBR)で解決を計ったが、うまくいかない。
PBR
/etc/iproute2/rt_tables
100    PR600
-----------------------
ip -6 rule add iif br0 table PR600
ip -6 rule add from 2409:10:XXXX:YY02::/64 table PR600
ip -6 route add default via fe80::212:e2ff:feab:cdef dev br0 table PR600
ip -6 route add 2409:10:XXXX:YY00::/56 via fe80::2ae9:8eff:fe12:3457 dev br0 table PR600
neighbor cashも分離できそうなVRF(Virtual Router and Forwarder)で確認してみた
VRF
ip link add Tvrf type vrf table 2
ip link set dev enp3s0 up
ip link set dev enp3s0 master Tvrf
ip -6 route add default via fe80::2ae9:8eff:fe12:3456 dev enp3s0 table 2
通過するパケットは上手くルーティングされるが、enp3s0で受けたパケット応答がenp3s0経由で送出されない。「ip -6 route show table 2」と「ip -6 route show vrf Tvrf」で結果が異なる(local routeが異なる)のでバグかもしれない。。。
Namespaceを試してみる
namespace
ip netns add net0
ip link set dev enp3s0 netns net0
ip netns exec net0 ip link set enp3s0 up
ip netns exec net0 ip -6 a add fe80::c225:e9ff:fe67:89ab/64 dev enp3s0
ip netns exec net0 ip -6 a add 2409:10:XXXX:YY00::1:110/64 dev enp3s0
ip netns exec net0 ip -6 route add default via  fe80::2ae9:8eff:fe12:3456 dev enp3s0
これは、上手く動作する。

(4)その他
firmwareのバージョンアップを契機に最初に発生した「ひかり電話 HGW PR-600MIのfirmware更新とIPv6パケットフィルターの不具合」に関して、再現しなくなってしまった。引き続き、状況を見守る事とした。firmwareの自動更新は、停止した。

・IPv6パケットフィルタ設定(IPoE)
・IPv6ファイアウォール機能の「無効」化

が改善されるか注視する。

 


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ひかり電話 HGW PR-600MIのIP... | トップ | ひかり電話 HGW PR-600MIのDH... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

ひかり電話」カテゴリの最新記事