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に到達できます。