Posez votre question Signaler

Configuration routage avec iptables

fxfranck - Dernière réponse le 5 juin 2010 à 12:07
salut,
j'ai un problème avec iptables, mon but est de permettre à un LAN d'accéder à Internet via une machine debian qui fait routeur, voici ma config :
J'ai un pc 192.168.222.2.
ma debian qui fait passerelle a 2 interfaces réseau : eth0 pour Internet et eth1(192.168.222.1) pour le LAN.
J'arrive à pinguer google ou autre ainsi que la 192.168.222.2 à partir de ma debian.

J'active le forward :
echo 1 > /proc/sys/net/ipv4/ip_forward

J'applique les règles iptables suivantes :
//j'interdit tout :
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
//je fais la config pour la machine locale :
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
//j'accepte les requêtes web :
iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT
//j'active le forward entre les 2 interfaces :
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -o eth0 -i eth1 -j ACCEPT

mais ça ne marche pas, la 192.168.222.2 ne parvient pas à se connecter au net, d'ou provient le pb?
merci pour vos réponses...
Lire la suite 
Réponse
+10
moins plus
merci Kilian et kmf31 pour vos réponses,
en effet aprés avoir ajouté la ligne pour le masqerading au niveau du routeur :
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
et la rourte qui va bien au niveau du pc du LAN :
route add default gw 192.168.222.1
et bien ça marche !!!
il n'y a plus qu'à affiner pour sécuriser tout ça...

@+
Ajouter un commentaire
Réponse
+2
moins plus
merci Kilian pour ta réponse,
j'ai ajouté les règles ci-dessus, mais ça ne marche toujours pas, j'ai remarqué que même sans règles iptables (iptables -P INPUT ACCEPT,iptables -P FORWARD ACCEPT et iptables -P OUTPUT ACCEPT), ça ne marche pas non plus : la 192.168.222.2 ne peut se connecter au net, le pb vient peut-être d'ailleurs.
Ne serait-ce pas un pb de route?
Ajouter un commentaire
Réponse
+2
moins plus
Pour faire facile il faut completement ouvrir la direction OUTPUT (pour tout port, on peut quand meme faire confiance a son pc) et appliquer cette regle avec "state" donne par kilian pour la direction INPUT. Sinon on ne pourra pas faire de ftp, ssh, ping, ...
Par contre on n'a pas besoin d'ouvrir le port 80 pour INPUT sans condition (sauf si on a soi meme un serveur web). Les regles INPUT et OUTPUT ne sont que pour le pc routeur.
Apres pour les autres PC c'est la meme chose avec les regles FORWARD et la tu acceptes trop et sans conditions pour la direction entree, il faut aussi mettre le blabla RELATED, ESTABLISHED ici (pour le 1er FORWARD que tu as mis).

Le plus important: tu n'as pas active le NAT sur le routeur et ca ne peut pas marcher. Alors tu dois mettre une regle comme:
iptables -A POSTROUTING -o eth0 -j MASQUERADE

Pour finir tu n'ouvres rien pour eth1 (avec INPUT, OUTPUT), donc le reseau/pc interne ne peut pas contacter le pc routeur (car ton defaut est DROP) mais ca ne devrait pas empecher son acces internet une fois le NAT active. Ca depend de tes intentions si c'est bon ou pas. Pour l'instant le pc routeur ne peut rien envoyer vers le pc interne ni recevoir quelque chose du pc internet (sauf si c'est transmis pour internet).

Regarde le IP-Masquerade-HOWTO:
http://www.tldp.org/HOWTO/IP-Masquerade-HOWTO/
notamment les sections: 3.4.1 et 6.4.1 avec les scripts (presque) tout prets.
Ajouter un commentaire
Réponse
+1
moins plus
Salut,

D'abord il faut que tu laisses aussi passer les requêtes DNS vers l'exterieur (port udp 53).
Il faut que tu laisses l'exterieur répondre à tes requêtes:
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Et que tu actives le masquerading (pour que l'adresse ip de ton pc en réseau local soit traduite avec ton adresse ip publique sur internet pour pouvoir communiquer avec l'exterieur):
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.222.2 -j MASQUERADE
Ajouter un commentaire
Réponse
+1
moins plus
Ah oui.
Ajoute voir cette ligne de commande sur le 192.168.222.2:
route add default gw 192.168.222.1
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour,

J'essaie de faire fonctionner, mais j'ai un problème de permission, je crois. Quelque détails:

$ ls -l /proc/sys/net/ipv4/ip_forward
-rw-r--r-- 1 root root 0 2007-09-28 07:11 /proc/sys/net/ipv4/ip_forward
$ cat /proc/sys/net/ipv4/ip_forward
0
$ sudo echo "1" > /proc/sys/net/ipv4/ip_forward
bash: /proc/sys/net/ipv4/ip_forward: Permission denied

En fait, je suis le HOWTO ici: http://ubuntulinuxhowto.blogspot.com/2006/06/setup-your-computer-to-be-router.html

Donc, mon problème principal est que je ne peux pas activer ip_forward. Je suis sur Ubuntu Feisty Fawn 7.04.

Quelqu'un a-t-il une idée ?

Merci !
François
Ajouter un commentaire
Réponse
+1
moins plus
Salut,

essaie
sudo -s
echo 1 > /proc/sys/net/ipv4/ip_forward 
--
lami20j
Ajouter un commentaire
Réponse
+0
moins plus
Et aussi laisser sortir les requêtes icmp pour les ping:
iptables -A OUTPUT -p icmp -j ACCEPT
Ajouter un commentaire
Réponse
+0
moins plus
Merci lami20j. En fait, j'ai réussi en suivant les instructions de http://www.tldp.org/HOWTO/IP-Masquerade-HOWTO/

Bonne journée !
François
Ajouter un commentaire
Réponse
+0
moins plus
tu peux aussi faire sysctl -w /proc/sys/net/ipv4/ip_forward=1
Ajouter un commentaire
Ce document intitulé «  configuration routage avec iptables  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.