私は CentOS に詳しくないので、このルーティングを行うには助けが必要です。私は 3 つの NIC を備えた CentOS ボックスを持っています。
eth0 Link encap:Ethernet
inet addr:10.50.121.16 Bcast:10.50.121.255 Mask:255.255.255.0
eth1 Link encap:Ethernet
inet addr:10.50.128.134 Bcast:10.50.128.255 Mask:255.255.255.0
eth2 Link encap:Ethernet
inet addr:10.50.140.97 Bcast:10.50.140.255 Mask:255.255.255.0
eth0 は既存のインターフェイスで、デフォルト ルートがあります。eth1 と eth2 を追加しました。eth1 セグメントと eth2 セグメントにはゲートウェイがあります (両方とも .1 アドレス)。テストを行うには、eth1 NIC と eth2 NIC 間に (それぞれのゲートウェイを介して) ネットワーク フローが必要です。そのため、ポリシー ルーティングを設定する必要があると思いますか?
編集: 明確にして申し訳ありませんが、2 つの新しいインターフェイス間でパケットをルーティングしようとしているわけではありません。 eth1 の IP から eth2 の IP に、何らかのインフラストラクチャを介してパケットを送信する必要があります (つまり、eth1 の VLAN と eth2 の VLAN 間の会話をシミュレートします)。 そのため、eth1 -> eth1-vlan-router -> ??? -> eth2-vlan-router-> eth2 を実行し、逆ルートを使用して応答できるようにしたいと考えています。 ここで完全に明確にしておらず、申し訳ありません。
答え1
/etc/sysctl.conf
IPv4 ルーティングを変更して有効にします。
net.ipv4.ip_forward = 1
次に実行してsysctl -p
設定を適用します。
の現在の値を表示するにはnet.ipv4.ip_forward
、次を使用します:
sysctl net.ipv4.ip_forward
答え2
標準のネットワーク API を使用してこれを実行することはできません。
Linuxネットワークスタックは、いわゆる弱いホストモデルこれは特に、ローカル インターフェイスに割り当てられたアドレスはすべてローカルとみなされることを意味します。パケットをローカル インターフェイスに送信しようとすると、パケットはローカルでループされ、ネットワークに到達することはありません。
おそらく、raw ソケットを使用して何かをハックすることは可能ですが、最善の解決策は、おそらく仮想マシンとして実装された 2 番目のホストを使用することです。