仮想IPsecアダプターを追加するには何が必要ですか?


8

iproute2を使用して、コンソールから手動でIPsec接続をセットアップしようとしています。私が必要としているのは、IPsecがすべての進入(ESP / TUNNEL MODE)を変換し、それをeth0(私のシステムではem1と呼ばれます)に渡す仮想インターフェース(せいぜい、仮想IPアドレスでも十分です)です。もう一方のセットでは、ピアがパケットを自身のethから取り出して解読し、反対側の仮想インターフェイスに渡します。したがって、「通常の」IPsecトンネルを確立したいと思います。

ポリシーとSAには何の問題もありません。トランスポートモードのシステムの通常のイーサネットアドレスを使用して簡単に構成できます。

ip xfrm policy add src 198.51.100.1 dst 198.51.100.2 dir out tmpl proto esp
ip xfrm state  add src 198.51.100.1 dst 198.51.100.2 spi 24501 proto esp enc des 0xAABBCCDDEEFF0011
ip xfrm state  add src 198.51.100.2 dst 198.51.100.1 spi 24501 proto esp enc des 0xAABBCCDDEEFF0022

ピアの敵対的な構成は非常にうまく機能します。

今私は仮想IPと他のシステムへのルートをセットアップしてみました

ip address add 10.0.0.0 dev em1
ip route add to 10.0.0.2 via 10.0.0.1

反対側も同様です。これもうまくいきます。次に、IPsecポリシーとSAを

ip xfrm policy add src 10.0.0.1 dst 10.0.0.2 dir out tmpl src 198.51.100.1 dst 198.51.100.2 proto esp mode tunnel
ip xfrm state  add src 10.0.0.1 dst 10.0.0.2 spi 24501 proto esp enc des 0xAABBCCDDEEFF0011
ip xfrm state  add src 10.0.0.2 dst 10.0.0.1 spi 24501 proto esp enc des 0xAABBCCDDEEFF0022

tcpingピアにアクセスしようとすると、応答が得られずsetkey -PD、セキュリティポリシーがトリガーされなかったことがわかります。現在、IPsecトンネルを処理するために機能する仮想インターフェイスを作成しようとしていますが、それを物理インターフェイスにバインドする方法と、カーネルにセキュリティポリシーを適用させる方法がわかりません。

私はこれをiproute2で解決できることが重要です。これは、最終的にC ++プログラムからこれを実行したいため、ipコマンドと同じスタイルでNetlinkコマンドをドロップする適切なクラスがすでにあるためです(私ができることip、I私のコード内でも行うことができます)。実際、最初の部分はすでに私のプログラムで動作しており、残りの部分にも同じNetlink API関数を使用したいと思っています。

更新 私は状態がトンネルアドレスで設定される必要があることを理解したので、動作中のSAは

ip xfrm state  add src 10.0.0.1 dst 10.0.0.2 spi 24501 proto esp enc des 0xAABBCCDDEEFF0011
ip xfrm state  add src 10.0.0.2 dst 10.0.0.1 spi 24501 proto esp enc des 0xAABBCCDDEEFF0022

ポリシーは同じままですが。これでポリシーがトリガーされ、スニッフィングポートで変換されたパケットが表示されます。また、他のマシンのiptablesがパケットをブロックし、テストのためにそれを無効にしました。

そのため、現在は一方通行のように見えますが、それでも答えは得られません。問題がある場合、私にもわかりませんまだ、何とか変換ルーティングまたはインターフェース部。私が好む解決策は仮想インターフェイスを含むものですが、変換がそのように機能するかどうかは言うまでもなく、それを物理インターフェイスにバインドする方法はわかりません。

回答:


1

通常、使用するのはを使用して作成されたトンネルip tunnel addです。トンネルデバイスは、IPパケットを他のIPパケット内にカプセル化する仮想デバイスを提供します。次に、カプセル化されたパケットをIPsecを使用して暗号化できます。

たとえば、次を使用してGREトンネルを作成できます。

ip tunnel add mytunnel mode gre remote 198.51.100.2
ip addr add 10.0.0.1 peer 10.0.0.2/31 dev mytunnel

次に、GREパケットを暗号化するようにIPSecを構成できます(一般に、または単にその宛先に向けて)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.