Configuration routage avec iptables

Fermé
fxfranck - 13 févr. 2006 à 01:28
 bayefall76 - 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...

10 réponses

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...

@+
11
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?
2
kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 501
13 févr. 2006 à 08:15
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.
2
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
13 févr. 2006 à 01:37
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
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
13 févr. 2006 à 07:32
Ah oui.
Ajoute voir cette ligne de commande sur le 192.168.222.2:
route add default gw 192.168.222.1
1
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
1
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
28 sept. 2007 à 13:19
Salut,

essaie
sudo -s
echo 1 > /proc/sys/net/ipv4/ip_forward 
--
lami20j
1
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
13 févr. 2006 à 01:39
Et aussi laisser sortir les requêtes icmp pour les ping:
iptables -A OUTPUT -p icmp -j ACCEPT
0
Merci lami20j. En fait, j'ai réussi en suivant les instructions de https://tldp.org/HOWTO/IP-Masquerade-HOWTO/

Bonne journée !
François
0
tu peux aussi faire sysctl -w /proc/sys/net/ipv4/ip_forward=1
0