Ainda não consegui encontrar uma solução para isso. Não tenho muita experiência em IPTables, então qualquer suporte que você puder fornecer será apreciado.
Eu tenho um servidor com algumas VMs. O nó principal possui um IP remoto e uma sub-rede. Cada VM é criada usando virtualização Linux e uma rede roteada, e recebe um IP local. Em seguida, estou usando tabelas de IP para atribuir a eles um IP remoto, encaminhando todo o tráfego do IP remoto dedicado para o IP local. Isso parece estar funcionando na maior parte, mas parece que qualquer tráfego enviado de cada VM vem do IP primário dos nós, e não do IP remoto que encaminhei para a VM.
Aqui estão 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 então 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
Configuração de exemplo
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 sai via XXX172
Qualquer sugestão que você possa fornecer será muito apreciada.
Responder1
É exatamente isso que MASQUERADE
acontece: 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 mascaramento.