J'ai une carte Ethernet sur le serveur CentOS. Il a été configuré :

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 est un VIP (l'IP virtuelle est créée par keepalived).

Je veux faire passer tout le trafic via une IP virtuelle (192.168.1.2) et les paquets sortants doivent être inclus VIP et non IP réelle (192.168.1.1). Et j'ai utilisé iptables mais ça ne marche pas : les paquets sortants incluent toujours la vraie IP et non le VIP. Voici la commande pour iptables :

iptables -t nat -I POSTROUTING -d x.x.x.x -j SNAT --to 192.168.1.2
answer

As-tu changé ta table de routage ? Vous devez peut-être ajouter une route vers la passerelle avec src 192.168.1.2. Vous pouvez consulter la table de routage en utilisant iproute2 :

ip route

Si vous avez quelque chose comme ça :

default via 192.168.1.254 dev eth1

vous ajoutez un itinéraire à cette adresse :

ip route add 192.168.1.254 dev eth1 src 192.168.1.2

ou vous pouvez ajouter une route au sous-réseau :

ip route add 192.168.1.0/24 dev eth1 src 192.168.1.2

En fait, la route vers ce sous-réseau est déjà dans votre table de routage, mais avec l'adresse IP src 192.168.1.1, vous devez donc supprimer cette entrée. La première chose à faire est de regarder la table de routage. J'espère que cela aidera un peu.