Есть /etc/network/interfaces
auto eth1
iface eth1 inet static
pre-up /srv/server_scripts/iptables_restore.sh
address 192.168.1.232
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
Есть скрипт iptables_restore.sh:
iptables -t nat -I PREROUTING -p TCP -d 192.168.1.232 --dport 3389 -j DNAT --to-destination 192.168.122.100:3389
iptables -t filter -I FORWARD -p TCP -d 192.168.122.100 --dport 3389 -j ACCEPT
iptables -t filter -I FORWARD -p TCP -s 192.168.122.100 --sport 3389 -j ACCEPT
По идее это должно при старте системы пробрасывать RDP порт в гостевую систему. Но libvirt видит все по-своему. Он уже после восстановленных правил в iptables записывает свои строки, из-за чего DROP'ается весь FORWARD'инд для RDP. вот вывод iptables-save:
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.122.100/32 -p tcp -m tcp --sport 3389 -j ACCEPT
-A FORWARD -d 192.168.122.100/32 -p tcp -m tcp --dport 3389 -j ACCEPT
Посоветуйте, как сделать такой проброс правильно?
Пользователь решил продолжить мысль 16 Августа 2013, 10:19:33:
Нашел следующее руководство
http://wiki.libvirt.org/page/Networking#Forwarding_Incoming_Connections.
Сделал через него. Правда сначала скрипт отказывался работать, пришлось исправить /bin/sh на /bin/bash.
Сейчас все ок.