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

Re: iptables forward et qemu



david hannequin a écrit :
[...]
Ces régles sont permisives mais permettent de à la machine virtuelle d'accéder à internet et de communiquer avec la machine hote.

Bien.

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

Pas vraiment utile, ces modules (et les autres) auraient été chargés automatiquement lors de la création des règles iptables qui en ont besoin.

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
;-)

Bonne initiative.

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 rajouterais "-i eth0", mais ce n'est pas essentiel.
Et à ce stade, le serveur de la machine virtuelle est-il accessible depuis internet ?

# je compte remplacer les régles tro pemissives

Lesquelles ?

par celle ci mais pour l'instant ca marche po :-(

C'est-à-dire ?

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

Ça m'a l'air correct. Il faudrait autoriser l'ICMP aussi, et peut-être le DNS (pour la résolution inverse d'adresses IP sources des requêtes) mais c'est secondaire.

Tu as bien essayé d'accéder au serveur depuis internet et pas depuis la machine hôte, car d'une part ça ne marchera pas sans créer une règle DNAT dans la chaîne OUTPUT (et avoir un noyau qui va bien) et d'autre part ça ne prouvera pas que l'accès depuis internet fonctionne.



Reply to: