Burada, bir kanca komut dosyası ( kaynak ) kullanarak bağlantı noktası iletmeyi ayarlamanın daha iyi bir yolu vardır .
İçinde /etc/libvirt/hooks/qemu
:
#!/bin/sh
GUEST_NAME=
HOST_PORT=
GUEST_IPADDR=
GUEST_PORT=
if [ "$1" = "$GUEST_NAME" ]; then
if [ "$2" = start ]; then
iptables -t nat -A PREROUTING -p tcp --dport "$HOST_PORT" \
-j DNAT --to "$GUEST_IPADDR:$GUEST_PORT"
iptables -I FORWARD -d "$GUEST_IPADDR/32" -p tcp -m state \
--state NEW -m tcp --dport "$GUEST_PORT" -j ACCEPT
elif [ "$2" = stopped ]; then
iptables -t nat -D PREROUTING -p tcp --dport "$HOST_PORT" \
-j DNAT --to "$GUEST_IPADDR:$GUEST_PORT"
iptables -D FORWARD -d "$GUEST_IPADDR/32" -p tcp -m state \
--state NEW -m tcp --dport "$GUEST_PORT" -j ACCEPT
fi
fi
Üstteki dört değişkeni libvirt kurulumunuza uyacak şekilde ayarlamanız gerekir.
Ubuntu'da aşağıdakilerle yapılan libvirt-bin'i yeniden başlatmanız gerekir:
sudo sh -c 'service libvirt-bin stop; service libvirt-bin start'
o zaman konuğu yeniden başlatmanız gerekir. Ubuntu'da, /etc/apparmor.d/usr.sbin.libvirtd
kanca komut dosyasının yürütülmesine izin vermek için ayarlamanız gerekir :
Bitişik, yanında
/usr/sbin/* PUx,
ekleme
/etc/libvirt/hooks/* PUx,
Sonra apparmor'u yeniden yükleyin:
sudo service apparmor reload
Muhtemelen $GUEST_IPADDR
virsh / dumpxml / iface-dumpxml kullanarak otomatik yapılandırma yapmanın bir yolu var, ancak bulamadım. Alternatif olarak, IP ağ xml: belgelerinde statik olarak ayarlanabilir .
Anlayabildiğim kadarıyla, ağ filtreleri yalnızca sanal ağda olanları kısıtlamak için kullanılabilir ve bağlantı noktası yönlendirme için yararlı değildir.