Por que o redirecionamento de porta via libvirt intercepta o tráfego NAT externo?

1

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?

    
por sysrage 25.07.2017 / 21:28

0 respostas