Isso é exatamente o que o MASQUERADE
faz: ele substitui o endereço de origem original pelo endereço da interface pela qual o pacote está prestes a sair. Se você quiser manter o endereço original, não use o mascaramento.
Ainda não consegui encontrar uma solução para isso. Eu não tenho muita experiência em IPTables, então qualquer suporte que você possa fornecer será apreciado.
Eu tenho um servidor com algumas VMs lá. O nó principal tem um IP remoto e uma sub-rede. Cada VM é criada usando a Virtualização do Linux e uma Rede Roteada e recebe um IP local. Eu estou usando então IP Tables para atribuir-lhes um IP remoto, encaminhando todo o tráfego de seu IP remoto dedicado ao seu IP local. Isso parece estar funcionando na maior parte, mas parece que qualquer tráfego que é enviado de cada VM vem do IP primário dos nós, em vez do IP remoto que eu encaminhei para a VM.
Aqui estão as minhas Regras do IPTables:
iptables -t nat -A POSTROUTING -s 192.168.123.0/24 ! -d 192.168.123.0/24 -j MASQUERADE
iptables -A FORWARD -d 192.168.123.0/24 -o virbr1 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -s 192.168.123.0/24 -i virbr1 -j ACCEPT iptables -A FORWARD -i virbr1 -o virbr1 -j ACCEPT
E, em seguida, para cada VM:
iptables -t nat -A PREROUTING -d {Their-remote-IP} -j DNAT --to-destination 192.168.123.3
iptables -A FORWARD -p tcp -d 192.168.123.3 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m udp -p udp -d 192.168.123.3 -j ACCEPT
iptables -A FORWARD -m icmp -p icmp -d 192.168.123.3 -j ACCEPT
Exemplo de configuração
Primary Node IP: X.X.X.172
Additional IP X.X.X.173 1 (NATed to VM 1) to local address 192.168.123.2
Additional IP X.X.X.174 1 (NATed to VM 2) to local address 192.168.123.3
Additional IP X.X.X.175 1 (NATed to VM 3) to local address 192.168.123.4
No entanto, todo o tráfego de saída das VMs está saindo por meio de X.X.X.172
Qualquer sugestão que você puder fornecer será muito apreciada.
Isso é exatamente o que o MASQUERADE
faz: ele substitui o endereço de origem original pelo endereço da interface pela qual o pacote está prestes a sair. Se você quiser manter o endereço original, não use o mascaramento.
Tags virtualization iptables kvm