Что работает
внешнее устройство => хост => гостевая виртуальная машина
гостевая виртуальная машина => хост => внешнее устройство на портах, отличных от 80/443
что работает (без настройки IPTABLES)
гостевая виртуальная машина => хост => внешнее устройство (он же google. com:80)
что не работает (при настройке IPTABLES)
гостевая виртуальная машина => хост => внешнее устройство (он же google.com:80)Применены правила Iptables:
Код: Выделить всё
sudo iptables -I FORWARD -o virbr0 -p tcp -d 192.168.122.138 --dport 8080 -j ACCEPT
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.122.138:8080
sudo iptables -I FORWARD -o virbr0 -p tcp -d 192.168.122.138 --dport 8443 -j ACCEPT
sudo iptables -t nat -I PREROUTING -p tcp --dport 443 -j DNAT --to 192.168.122.138:8443
Код: Выделить всё
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N LIBVIRT_FWI
-N LIBVIRT_FWO
-N LIBVIRT_FWX
-N LIBVIRT_INP
-N LIBVIRT_OUT
-A INPUT -j LIBVIRT_INP
-A FORWARD -d 192.168.122.138/32 -o virbr0 -p tcp -m tcp --dport 8443 -j ACCEPT
-A FORWARD -d 192.168.122.138/32 -o virbr0 -p tcp -m tcp --dport 8080 -j ACCEPT
-A FORWARD -d 192.168.122.138/32 -o virbr0 -p tcp -m tcp --dport 8080 -j ACCEPT
-A FORWARD -j LIBVIRT_FWX
-A FORWARD -j LIBVIRT_FWI
-A FORWARD -j LIBVIRT_FWO
-A OUTPUT -j LIBVIRT_OUT
-A LIBVIRT_FWI -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A LIBVIRT_FWI -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWO -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A LIBVIRT_FWO -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWX -i virbr0 -o virbr0 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 68 -j ACCEPT
Код: Выделить всё
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-N LIBVIRT_PRT
-A PREROUTING -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.122.138:8443
-A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.122.138:8080
-A POSTROUTING -j LIBVIRT_PRT
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
Я чувствую, что это как-то связано с таблицей nat, поскольку удаление правило
Код: Выделить всё
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.122.138:8080
Подробнее здесь: https://stackoverflow.com/questions/787 ... atted-mode