CentOSサーバーにイーサネットカードがあります。構成されています:
eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 40:f2:e9:9b:b7:bb brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 10.54.19.255 scope global eth1
inet 192.168.1.2/24 scope global secondary eth1
inet6 fe80::42f2:e9ff:fe9b:b7bb/64 scope link
192.168.1.2はVIP(仮想IPはkeepalivedによって作成されます)です。
すべてのトラフィックを仮想IP(192.168.1.2)に通したいので、出力パケットを含める必要がありますVIP実際のIPではありません(192.168.1.1)。iptablesを使用しましたが、機能しません。出力パケットには、VIPではなく実際のIPが含まれています。iptablesのコマンドは次のとおりです。
iptables -t nat -I POSTROUTING -d x.x.x.x -j SNAT --to 192.168.1.2
ルーティングテーブルを変更しましたか?おそらく、src192.168.1.2を使用してゲートウェイへのルートを追加する必要があります。 iproute2を使用してルーティングテーブルを確認できます。
ip route
あなたがそのようなものを持っているなら:
default via 192.168.1.254 dev eth1
このアドレスにルートを追加します。
ip route add 192.168.1.254 dev eth1 src 192.168.1.2
または、サブネットにルートを追加できます。
ip route add 192.168.1.0/24 dev eth1 src 192.168.1.2
実際、このサブネットへのルートはすでにルーティングテーブルにありますが、src ipアドレスは192.168.1.1であるため、このエントリを削除する必要があります。最初に行うことは、ルーティングテーブルを確認することです。これが少し役立つことを願っています。