Strongswan IPv6 トンネル ルーティング

Strongswan IPv6 トンネル ルーティング

ルーティングに関する奇妙な問題を解決しようとしています。ルーターをセットアップし (Turris、カスタマイズされた OpenWRT を実行)、Strongswan トンネリング IPv6 接続を使用しました。ルーター自体は問題なく動作しており、IPv6 接続も正常に動作しています (トンネル経由、プロバイダーはネイティブ IPv6 を提供していません)。

TL;DR: ルートは私が期待したとおりには選択されません。/64 の一致は利用可能ですが、最も一般的な ::/0 が常に優先されるようです。

しかし、これを自宅のネットワークに拡張しようとしたときに問題が発生し、原因を見つけることができません。

ipsec は動作しますが、ipsec0 インターフェイスと次のルートが表示されます。

Kernel IPv6 routing table
Destination                                 Next Hop                                Flags Metric Ref    Use Iface
::/0                                        ::                                      U     1024   0        2 ipsec0  
2a01:490:19:42::/64                         ::                                      U     1024   0        0 br-lan  

ここで、2a01:490:19:42::/64 はローカル ネットワーク専用のランクであり、2a01:490:19:42::1 はそのネットワーク上のルーターの IP アドレスです。

以下にいくつかの観察結果を示します。

1) ローカル ネットワーク上のコンピューターから 2a01:490:19:42::1 に ping すると、ルーターは応答しますが、応答は ipsec0 インターフェイスに送信されます。理由はわかりません。br-lan 上のより具体的なプレフィックス 2a01:490:19:42::/64 が優先されるべきではないでしょうか。ソース IP アドレス 2a01:490:19:42::1 が正しく選択されているようです。

2) ローカル ネットワークから他のサイト (たとえば ping6 stackexchange.com) にパケットを送信しようとすると、同じことが起こります。パケットはルーターに到達し、転送され、サーバーが応答を送信し、ルーターがそれを受け取り、ipsec0 インターフェイスに返送します。

3) xfrm ポリシーがありません。ip xfrm pol何も返しません。しかし、Strongswan は実行されており、Strongswan は常に何らかのポリシーを作成するという印象を持っていました。以前のセットアップでは、パケットをトンネルに渡すためにポリシーを追加する必要がありましたが、ポリシー リストが空であることに少し困惑しています。

さて、何が問題なのでしょうか? 最も一般的なルート ::/0 が IPv6 パケットに優先されるのはなぜですか?

ありがとう!

答え1

問題は、ipsec がそのルールを別のルーティング テーブル (テーブル220) に挿入し、そこにトラフィックを誘導するポリシーを作成したことでした。

root@turris:/etc/config# ip rule list
0:  from all lookup local 
220:    from all lookup 220 
32766:  from all lookup main 
32767:  from all lookup default 

しかし、テーブル220には ipsec トンネルへのデフォルト ルートのみ含まれており、ローカル ネットワークは含まれていませんでした。

root@turris:/etc/config# ip -6 r show table 220
default dev ipsec0  proto static  src 2a01:490:19:42::1  metric 1024 

その結果、必然的にすべてのパケットがトンネルに転送されることになります。

ルータ自体のネットワークは、受け入れられただけでルーティングされなかったために機能しました。

charon.routing_table = 254私は、( に示されているメインの ID /etc/iproute2/rt_tables)を設定して、strongswan にルーティング ルールをメイン テーブルに挿入するように指示することで、この問題を修正しました。私のstrongswan.conf現在の状態は次のようになります。

charon {
#       load_modular = yes
        plugins {
                include strongswan.d/charon/*.conf
        }
        routing_table = 254 # main
}

関連情報