Como passar todo o tráfego através do ip virtual no linux

1

Eu tenho uma placa Ethernet no servidor CentOS. Foi configurado:

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 é um VIP (o IP virtual é criado pelo keepalived).

Eu quero passar todo o tráfego através de IP virtual (192.168.1.2) e os pacotes de saída têm que ser incluídos VIP não IP real (192.168.1.1). E eu usei o iptables, mas não está funcionando: os pacotes de saída ainda incluem IP real e não VIP. Aqui está o comando para o iptables:

iptables -t nat -I POSTROUTING -d x.x.x.x -j SNAT --to 192.168.1.2
    
por LinhTran 28.01.2015 / 08:00

1 resposta

1

Você alterou sua tabela de roteamento? Você precisa adicionar route to gateway com src 192.168.1.2, talvez. Você pode olhar para a tabela de roteamento usando o iproute2:

ip route

Se você tem algo assim:

default via 192.168.1.254 dev eth1

você adiciona uma rota a este endereço:

ip route add 192.168.1.254 dev eth1 src 192.168.1.2

ou você pode adicionar rota à sub-rede:

ip route add 192.168.1.0/24 dev eth1 src 192.168.1.2

Na verdade, a rota para esta sub-rede já está na sua tabela de roteamento, mas com o endereço IP src 192.168.1.1, então você deve excluir esta entrada. A primeira coisa a fazer é olhar para a tabela de roteamento. Espero que isso ajude um pouco.

    
por 29.01.2015 / 03:52