Voici une meilleure façon de configurer la redirection de port, en utilisant un script de raccordement ( source ).
Dans /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
Vous devez définir les quatre variables en haut pour qu'elles correspondent à votre configuration libvirt.
Vous devrez redémarrer libvirt-bin, ce qui se fait sur Ubuntu avec:
sudo sh -c 'service libvirt-bin stop; service libvirt-bin start'
alors vous devrez redémarrer l'invité. Sur Ubuntu, vous devrez vous ajuster /etc/apparmor.d/usr.sbin.libvirtd
pour permettre au script hook de s'exécuter:
À côté de
/usr/sbin/* PUx,
ajouter
/etc/libvirt/hooks/* PUx,
Rechargez ensuite l'apparmeur:
sudo service apparmor reload
Il y a probablement un moyen de configurer automatiquement en $GUEST_IPADDR
utilisant virsh / dumpxml / iface-dumpxml, mais je ne l'ai pas trouvé. Alternativement, l'IP peut être définie statiquement dans la documentation réseau xml : .
Pour autant que je sache, les filtres réseau ne peuvent être utilisés que pour restreindre ce qui se passe sur le réseau virtuel, et ils ne sont pas utiles pour la redirection de port.