デュアルポートイーサネットNICがあります。両方のポートをリングに接続し、次のIPを2つのイーサネットインターフェイスに割り当てたとします。
- eth2 -> 192.168.2.1
- eth3 -> 192.168.3.1
192.168.3.1
たとえば、pingなどの物理ネットワークを介してポートの1つから別のポートにトラフィックを送信したいとします192.168.2.1
。ただし、LinuxカーネルのTCP / IPスタックはこれら2つのアドレスをローカルアドレスとして認識し、トラフィックをループバックアダプタに送信するため、トラフィックは物理ネットワークに到達しません。
私が持っていた最も近い解決策はAnastasovのものでした。自分にパッチを送る残念ながら、カーネル3.6から中断され、Ubuntu 13.10(カーネル3.11)では実行されません。 3.11用のパッチを再構築しようとしましたが、Ubuntuディストリビューションには見つかりませんでした。
- /linux/inetdevice.hを含む
- net/ipv4/devinet.c
- net/ipv4/fib_frontend.c
- ネットワーク/ipv4/route.c
- ドキュメント/ネットワーク/ip-sysctl.txt
「自分自身に送信」パッチを機能させる方法はありますか、それとも別の解決策がありますか?
ベストアンサー1
ネットワークネームスペースを作成し、インターフェイスの1つをそのネームスペースに移動します。
ip netns add test
ip link set eth1 netns test
新しい名前空間でシェルを起動します。
ip netns exec test bash
その後、2台のコンピュータがあるかのように進みます。完了したら、シェルを終了して名前空間を削除します。
ip netns del test