se você executar o kvm desta maneira:
kvm -drive... -net nic -net tap ....
você se tornará uma nova interface (no host raiz) chamada tapX
(onde X é um número). Esta interface é normalmente configurada por padrão através de um script localizado em algum lugar em /etc
( /etc/kvm/kvm-ifup
, /etc/qemu-ifup
ou mais) você poderia alterá-las com: kvm -drive... -net nic -net tap,script=mynatbrigescript
...
A partir daí, essa interface precisa ser configurada em cada ponto:
ifconfig tapX 192.168.124.1/30
e no sistema operacional do cliente:
ifconfig eth0 192.168.124.2/30
então se você apertar (no host raiz), você verá uma nova rede local (supondo que seu ip público é 1.2.3.4):
ip r s
1.2.3.4 dev eth0 ...
192.168.124.0/30 dev tapX proto kernel scope link src 192.168.124.1
De lá, você deve poder fazer o ping para 192.168.124.2 do host raiz. Você poderia então DNAT
seus pacotes de entrada com:
iptables -t nat -A PREROUTING -i eth0 -d 192.168.122.31 --dport 5222 -j DNAT --to-destination 192.168.124.2:2521
e SNAT
os pacotes de resposta na outra direção:
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.124.2 -j SNAT --to-source 192.168.122.31
agora se para o nó raiz, este trabalho:
telnet 192.168.124.2 2521
Depois do seu domínio local, isso deve ser o mesmo:
telnet 1.2.3.4 5222
Em tudo, seu host raiz tem que encaminhar pacotes ip, isso pode ser verificado por:
cat /proc/sys/net/ipv4/ip_forward
1
ou
sysctl net.ipv4.conf.all.forwarding
net.ipv4.conf.all.forwarding = 1
Isso pode ser definido por:
echo 1 > /proc/sys/net/ipv4/ip_forward
ou
sysctl net.ipv4.conf.all.forwarding=1