あるインターフェイスで開始されたパケットをホストの他のインターフェイスにルーティングする方法

あるインターフェイスで開始されたパケットをホストの他のインターフェイスにルーティングする方法

eth0とeth1という2つのインターフェースがあります。

私のアプリケーションはeth1で実行されています。

eth0(10.43.16.249)からの着信パケットは、次のコマンドを使用してeth1(10.43.18.110)に事前ルーティングされます。

iptables -t nat -p udp -A PREROUTING -d 10.43.16.249 -j DNAT --to-destination 10.43.18.110

着信パケット

10:34:06.373083 IP 10.43.18.124.67 > 10.43.16.249.67: BOOTP/DHCP, Request from 00:a0:bc:00:00:02, length 259

奇妙なことは、私のアプリケーションの応答がeth0の送信元IP(10.43.16.249)に送信されていることを示しており、クライアントを介してクライアントへのパスがないため、応答パケットがクライアントIP(10.43.18.124)に到達できないことです。 。 eth0。

発信パケット

10:34:06.375043 IP 10.43.16.249.67 > 10.43.18.124.67: BOOTP/DHCP, Reply, length 300

eth0パケットをeth1経由でルーティングする方法はありますか?

ルーティングテーブル

# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         gateway         0.0.0.0         UG        0 0          0 eth0
10.43.16.128    0.0.0.0         255.255.255.128 U         0 0          0 eth0
10.43.18.64     0.0.0.0         255.255.255.192 U         0 0          0 eth1

POSTROUTING SNATを試しましたが、ルーティングルールを調べた後にPOSTROUTINGが発生するため、機能しないようです(eth0のパスはありません)。

(eth1)要求を処理するために中間にKeepalived NATロードバランサーがあるため、要求はサーバーのeth0に到達できます。

ベストアンサー1

おすすめ記事