調整またはタブデバイスを使用したネットワーク名前空間間の接続

調整またはタブデバイスを使用したネットワーク名前空間間の接続

私は、「ワイヤ」を介して送信されたすべてのパケットを見ることができ、後で変更できる必要があるユーザースペースプログラムを介して接続された2つのタブインターフェイスを作成しようとしています。これは異なるホストを使用してTCP接続を介してパケットを転送するときに機能しますが、両方のTAPインターフェイスが同じホスト上にある場合、この設定に問題が発生します。誰かがタスクを実行するために別の名前空間を使用するように提案しました。

だから私の考えは次のとおりです。

  • root 名前空間に tun1 を設定します。
  • root 名前空間に tun2 を設定します。
  • ユーザー空間プログラムを使用して両方を接続します(以下のPOCではsocatを使用しています)。
  • tun1を新しい名前空間ns1に移動する
  • tun2を新しい名前空間ns2に移動する
  • ns1 または ns2 インターフェイス間の Ping

ただし、これはTap fdに書き込むときにsocat(または他のユーザースペース「コネクタ」)でIOエラーを引き起こします。どうすればいいですか?

私のPOCコードは次のとおりです。

openvpn --mktun --dev tun1 --user timos
openvpn --mktun --dev tun2 --user timos

ip link set dev tun1 up
ip link set dev tun2 up

ip addr add 192.168.1.1/24 dev tun1
ip addr add 192.168.1.2/24 dev tun2

socat TUN:192.168.1.1/24,tun-name=tun1 TUN:192.168.0.2/24,tun-name=tun2 &

ip netns add ns1
ip netns add ns2

ip netns exec ns1 ip link set dev lo up
ip netns exec ns2 ip link set dev lo up

ip link set tun1 netns ns1
ip link set tun2 netns ns2

ip netns exec ns1 ip link set dev tun1 up
ip netns exec ns2 ip link set dev tun2 up

ip netns exec ns1 ip addr add 192.168.1.1/24 dev tun1
ip netns exec ns2 ip addr add 192.168.1.2/24 dev tun2

ip netns del ns1
ip netns del ns2

同様の質問に対する回答TUN / TAPインターフェイスのみを使用してネットワーク名前空間間でパケットを送信できますか?これはうまくいくはずですが、再現できません。

ベストアンサー1

おすすめ記事