Linuxは間違ったインターフェイスを介してIPv6パケットをルーティングします。

Linuxは間違ったインターフェイスを介してIPv6パケットをルーティングします。

リンクローカルパケットが正しくルーティングされないArch Linuxシステムがあります。このコンピュータには4つのインターフェイス(wan、lan0、lan1、およびlan2)があります。 3 つの lanX インターフェイスはすべて一緒にブリッジされます。

私が走るとき

ping6 fe80::8e89:a5ff:feda:fa%lan

または

ping6 ff02::1%lan

パケットは、LANブリッジおよびlan2インターフェイス(対応するfe80アドレスを使用してコンピュータに直接接続されている)ではなくwanインターフェイスから来ます。カーネルが指定されたIPv6範囲IDを無視しているようです。もう一度確認しましたが、fe80アドレスへのパスはありません(しかし、IPv6デバイスごとにff0 :: 8へのパスがありますが、これは範囲を提供する他のシステムでも同じです)。

カーネルがこのように動作し、リンクローカルアドレスの明示的なipv6スコープ(IPv6の仕様に従って依然としてリンクローカルと見なされるff02 :: 16を含む)を無視できる設定はありますか?

答え1

問題は私の構成に関連していることがわかりました。私はnfqueueを使用してインラインIPSでSuricataを実行しており、「繰り返し」モードを使用してチェーンの先頭にパケットを再挿入します(パケットがIPSから権限を取得した場合)。その後、パッケージに追加されたSuricataタグを見つけて、Suricataに戻さないルールを作成しました。しかし、Suricataでチェーンを再挿入すると、カーネルがパケットのルーティング方法を忘れてしまうようです。 nfqueueルールを削除すると問題は解決しましたが、IPSを利用できませんでした。だから私がしたことは、すべての-j ACCEPT iptablesルールを-j NFQUEUE iptablesルールに置き換えることでした。この形式では、Suricataはすべてのトラフィックを見ることはできず、特にファイアウォールによってブロックされたパケットを見ることはできません。残念なことですが動作します。

関連情報