私は非常に単純なネットフィルターを作成しており、IPv6ヘッダーを解析してICMPv6タイプ、TCP / UDPポート番号などに一致させる場所に到達しています。
それで、IPv6パケット形式について詳しく読んでいて、まるで…ええと...何度も何度も何度も読んで、実際に正しく読み取っていることを確認しなければなりませんでした。40バイトの固定ヘッダーから始めて、次のヘッダーフィールドを見なければならないようです。次に、最後に到達するまで、リンクリストのように、次のヘッダーの次のヘッダーフィールドを確認する必要があります。ペイロードがある場合は、それに従います。
問題は、固定ヘッダーにも拡張ヘッダーにも長さフィールドがないことです。このリンクされたリストを最後まで追跡できるように、拡張ヘッダータイプとそのサイズのテーブルが必要です。
これは私を奇妙な、おそらくはうんざりしたデザインだと思います。認識できない拡張ヘッダータイプが見つかった場合はどうなりますか?私は何をしますか?長さはわかりません。ネットフィルターではパケットを許可するため、攻撃者は偽のヘッダータイプを含めることでネットフィルターを回避できるため、パケットを破棄してブロックする必要があると思います。しかし、これは、プロトコルが拡張される場合、新しい拡張が使用される場合は、これまでに作成されたすべてのIPv6ヘッダー解析ソフトウェアを同時に更新する必要があることを意味します。
それで、使用している拡張機能がわからない場合、どのようにしてIPv6ヘッダーを解析できますか?長さがわからないので、不明な拡張子のヘッダーをスキップするにはどうすればよいですか?