[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: iptables forward et qemu



Salut,

J'apporte quelques précisions à mon probléme. J'ai une machine relier à internet sur la carte eth0. Sur cette machine je fais fonctionner un machine virtuelle qemu avec le service apache2.
Pour que cela fonctionne correctement j'ai créer les régles :

iptables -A INPUT -i tun0 -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -s 172.20.0.0/24 -i tun0 -o eth0 -p tcp -j ACCEPT

tun0 est l'interface réseau de la machine virtuelle
172.20.0.0/24 est le réseau de la machine virtuelle
l'adresse de la machine virtuelle est 172.20.0.2

Ces régles sont permisives mais permettent de à la machine virtuelle d'accéder à internet et de communiquer avec la machine hote.

Maintenant, je souhaite pouvoir accéder au serveur apache depuis internet avec l'adresse ip publique de la machine hote.
Pour cela j'ai ajouté à mon script :
modprobe iptable_nat
modprobe iptable_filter
echo 1 > /proc/sys/net/ipv4/ip_forward  # pour autoriser le forwarding

# les 3 lignes pour accepter la tranlation
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

# les 6 lignes pour la machine virtuelle, j'affinerais les régles pour les rendre moin permissives une fois que ca marchera comme je veux
;-)
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -s 172.20.0.0/24 -i tun0 -o eth0 -p tcp -j ACCEPT

# tun0 est l'interface réseau de la machine virtuelle
# 172.20.0.0/24 est le réseau de la machine virtuelle
# l'adresse de la machine virtuelle est 172.20.0.2

# Web vers tun0 pour le serveur web
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 172.20.0.2:80 # 172.20.0.2 est l'adresse d l'interface réseau de la machine virtuelle où fonctione apache

# je compte remplacer les régles tro pemissives par celle ci mais pour l'instant ca marche po :-( iptables -A FORWARD -i eth0 -o tun0 -p tcp --destination-port 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A FORWARD -o eth0 -i tun0 -p tcp --source-port 80 -m state --state ESTABLISHED -j ACCEPT

# régles pour le masquerading pour le serveur web
iptables -t nat -A POSTROUTING -s 172.20.0.0/24 -j MASQUERADE j'ai cherché et testé plusieurs solution sans que ca marche et je vois pas mon erreur.
merci d'avance
David Hannequin



Reply to: