NAT 게이트웨이 역할을 하고 KVM 가상 머신을 호스팅하는 Ubuntu 상자가 있습니다. libvirt qemu 후크를 사용하여 포트를 KVM 가상 머신 중 하나로 전달하는 가이드를 따랐지만 이는 또한 모든 NAT 상자에서 이러한 포트로 나가는 연결을 가로채는 것 같습니다.
eno0 = 192.168.70.1 = NAT 게이트웨이의 내부 인터페이스
eno1 = 10.240.45.45 = NAT 게이트웨이의 외부 인터페이스
virbr0 = 192.168.122.1 = KVM 가상 머신용 브리지
KVM 게스트 IP = 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
이렇게 하면 10.240.45.45를 가리키는 외부 호스트의 트래픽이 올바르게 전달됩니다. 하지만 다음을 포함한 HTTPS 페이지에 액세스하려고 하면https://google.com) NAT 뒤에 있는 시스템에서 하이재킹되어 외부 호스트로 이동하는 대신 가상 머신으로 리디렉션됩니다.
-d 매개변수를 무시하는 이유는 무엇이며 10.240.45.45에 대한 트래픽만 전달하도록 하려면 어떻게 해야 합니까?