我在CentOS服务器上有一个以太网卡。 已configuration:
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创build)。
我想通过虚拟IP(192.168.1.2)所有stream量和出包必须包括VIP不是真正的IP(192.168.1.1)。 我用iptables,但它不工作:出包仍然包括真正的IP而不是VIP。 这里是iptables的命令:
iptables -t nat -I POSTROUTING -d xxxx -j SNAT --to 192.168.1.2
你有没有改变你的路由表? 你需要添加路由到网关与src 192.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,所以你必须删除这个条目。 首先要做的是看路由表。 希望这会有所帮助。