Eu tenho uma caixa do Ubuntu atuando como um gateway NAT, bem como hospedando máquinas virtuais KVM. Eu segui um guia para usar o gancho libvirt qemu para encaminhar portas para uma das VMs do KVM, mas isso também parece estar seqüestrando conexões de saída para essas portas de qualquer uma das caixas NAT.
eno0 = 192.168.70.1 = Interface interna no gateway NAT
eno1 = 10.240.45.45 = Interface externa no gateway NAT
virbr0 = 192.168.122.1 = Bridge para VMs do KVM
IP do convidado do KVM = 192.168.122.81
/ etc / libvirt / hooks / qemu:
if [ "${1}" = "myvm" ]; then
GUEST_IP=192.168.122.81
if [ "${2}" = "stopped" ] || [ "${2}" = "reconnect" ]; then
/sbin/iptables -D FORWARD -o virbr0 -d $GUEST_IP -j ACCEPT
/sbin/iptables -t nat -D PREROUTING -p tcp -d 10.240.45.45 --dport 443 -j DNAT --to $GUEST_IP:443
fi
if [ "${2}" = "start" ] || [ "${2}" = "reconnect" ]; then
/sbin/iptables -I FORWARD -o virbr0 -d $GUEST_IP -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -p tcp -d 10.240.45.45 --dport 443 -j DNAT --to $GUEST_IP:443
fi
fi
Isso encaminha corretamente o tráfego de qualquer host externo apontando para 10.240.45.45. No entanto, se eu tentar acessar qualquer página HTTPS (incluindo o link ) de um sistema atrás do NAT, ele será desviado e redirecionado para a VM em vez de indo para o host externo.
Por que ele está ignorando o parâmetro -d e como posso fazer isso apenas para o tráfego de encaminhamento destinado a 10.240.45.45?