■ IPv6通信において、MTU関係の問題が発覚した。
「あなたの IPv6 接続性をテストしましょう。」というサイト(†1)で、IPv6の接続性について調べてもらった。
すると、次の項目について問題が判明した。
”IPv6 で MTU 設定に問題があるようです。このため、WebサイトがIPv6対応した際、Webサイトの読み込みが遅くなるか、全く読み込めない可能性があります。”
このクライアントマシンのゲートウェイとなっているルーターのログを確認した。
Rejected at IN filter: ICMP 2001:xxxx:xxxx:xxxx::78 > 2yyy:yyyy:yyyy:yyyy:yyyy:yyyy:yyyy:yyyy : too big2001:xxxx:xxxx:xxxx::78 は、上記テストサイトのIPv6アドレスで、
2yyy:yyyy:yyyy:yyyy:yyyy:yyyy:yyyy:yyyy は、アクセス元のクライアントマシンのアドレスである。
ルーターのインターネット側のインターフェイスの入力で、ICMPv6の”too big”というパケットがリジェクトされていた。
■ Too Big Message というパケットについて(†3)
このリジェクトされていた too big というパケットは、
Packet Too Big Message という種類のもので、ICMPv6 TYPE 2 で識別される。
目的は、「経路上においてパケットのサイズが大きすぎて送れない」旨を送信元に通知することだ。
送信元はこの通知を受け取ると、パケットのサイズを小さくして再送する。
これは、Path MTU Discovery process と呼ばれる。
つまり、先のパケットがリジェクトされてしまうと、
Path MTU Discovery process が正常に動作しなくなり、MTUに絡む不具合が発生することになる。
■ ICMPv6 TYPE 2パケットの入力を許可する。
そこで、次のようにPass Filter を記述した。
# ipv6 filter 103 pass * * icmp6 2ICMPv6 TYPE 2 を通過できるようにするためのフィルタである。(†2)
これをインターネット側インターフェイスの入力側に追加しフィルタを有効化した後、
冒頭の調査サイトに再度アクセスした。
すると、MTUの問題が解消されて、次のようにメッセージが表示された。
"よいお知らせ! ローンチ後も、現在お使いのブラウザ、このコンピュータ、そしてこの場所は問題無く動作し続けると思われます。"
また、ルーターのログでも、too big というパケットが通るようになったことが確認できた。
(ログを取るために、pass-log とした。)
Passed at IN filter: ICMP 2001:xxxx:xxxx:xxxx::78 > 2yyy:yyyy:yyyy:yyyy:yyyy:yyyy:yyyy:yyyy : too big
■ 他にもICMPv6関係でフィルタにひっかかっているものがあった
unreachable address
unreachable prohibited
time exceeded transit
そこで、次のようにPass Filter 定義を編集した。
# ipv6 filter 103 pass * * icmp6 1,2,3ICMPv6 TYPE 1と、2と、3 を通過できるようにするためのフィルタである。(†2)
<参考>
(1) あなたの IPv6 接続性をテストしましょう。
< http://test-ipv6.com/index.html.ja_JP > 2017年4月15日
(2) 30.7.1 IPv6 フィルタの定義
< http://www.rtpro.yamaha.co.jp/RT/manual/rt-common/ipv6/ipv6_filter.html > 2017年4月15日
(3) 3.2. Packet Too Big Message
< https://tools.ietf.org/html/rfc4443#section-3.2 > 2017年4月15日
(4) Internet Control Message Protocol version 6 (ICMPv6) Parameters
< https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml > 2017年4月15日
(5) ICMP Types and Codes
< http://www.nthelp.com/icmp.html > 2017年4月15日
(6) 4.3.1. Traffic That Must Not Be Dropped
< https://tools.ietf.org/html/rfc4890 > 2017年4月25日