Altere o remetente-IP para VM no libvirt por trás do NAT

2

Eu tenho um servidor com minha própria rede pública / 28 IPv4.

Neste servidor eu tenho alguns vServers, feitos com o KVM / libvirt. Esses vServers estão conectados a uma rede virtual, ligada à Internet. Cada vServer tem um endereço privado (192.168.x.y / 24) e nem todo vServer deve obter um IP público.

O host roteia os IPs públicos para seu vServer específico, que está funcionando bem em conexões de entrada.

Meu problema: nas conexões de saída dos vServers, eles obtêm o IP do remetente do host e não o IP público deles. Existe alguma maneira de definir um IP do remetente público para um vServer no libvirt?

Eu já pesquisei o ServerFault, mas realmente não encontrei nada. Mas tenho que admitir, posso não saber os melhores termos de pesquisa para isso.

    
por LittleFox 05.07.2014 / 16:55

1 resposta

0

Para configurar o NAT na sua rede virtual libvirt está adicionando algumas regras do iptables que se parecem com isso:

$ iptables -t nat -S
[...]
-A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MASQUERADE
[...]

As ações do MASQUERADE nessas regras estão traduzindo o IP interno para o IP externo da NIC. Há uma outra ação chamada SNAT que faz a mesma coisa, mas usa um ip de origem específico que você mesmo define. Então, o que você pode fazer é inserir algumas regras do SNAT antes do seu MASQUERADE regras como esta:

$ iptables -t nat -I POSTROUTING -s 192.168.1.x ! -d 192.168.1.0/24 -j SNAT --to-source <public ip>
$ iptables -t nat -I POSTROUTING -s 192.168.1.x ! -d 192.168.1.0/24 -p udp -j SNAT --to-source <public ip>:1024-65535
$ iptables -t nat -I POSTROUTING -s 192.168.1.x ! -d 192.168.1.0/24 -p tcp -j SNAT --to-source <public ip>:1024-65535

Agora, o tráfego de saída de 192.168.1.x receberá um IP de origem de < public ip >

    
por 23.09.2016 / 13:54