Salut Patrice,
dans la suite du mail, je considérerai que la machine qui fait
passerelle a :
- son interface réseau eth0 connectée à la FreeBox
- son interface réseau eth1 connectée au réseau interne
Patrice Karatchentzeff a écrit :
> Salut,
>
> J'ai eu une expérience amusante à la maison... je suis branché sur
> Internet via un modem ADSL (une freebox en l'occurence) et j'ai une
> machine qui fait passerelle et pare-feu. Au moment de la connexion, je
> lance un script de pare-feu (celui d'Olivier)
Je pense que tu parles de
http://olivieraj.free.fr/fr/linux/programme/netfilter_cfg/ ?
> qui me coupe tout de
> l'extérieur et me fait le nat depuis mon réseau.
>
> Bien sûr, je suis obligé de le relancer à chaque fois que Free me
> change mon adresse IP.
Oui, c'est en effet comportement normal de ce script.
> Et c'est là que c'est drôle puisque, normalement, à chaque changement
> d'adresse IP, la connexion tombe. Sur le serveur, je ne peux plus rien
> pinguer par exemple...
C'est normal car les règles en INPUT et OUTPUT sont du type
iptables -A INPUT -i eth0 -d adresse_ip_free -m state
--state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth0 -s adresse_ip_free -m state
--state ! INVALID -j ACCEPT
Donc pour TOUT les PROCESSUS LOCAUX de cette machine (mozilla,
thunderbird, client IRC, client de newsgroup, /bin/ping, etc...) les
règles d'entrée-sortie sont liées à ton adresse de Free. Donc dès que
cette adresse change, tout tes processus locaux ne peuvent plus
dialoguer sur Internet.
> Et bien, depuis le réseau interne (hors passerelle), je pouvais encore
> le faire, quelque soit la machine... Il y a là un mystère qui
> m'échappe... quelqu'un a-t-il une idée de ce qui a pu se passer ?
Il n'y a la aucun mystère. Le comportement que tu as vu est
parfaitement normal. Mais cela ne veut pas dire pour autant que les
script sont des passoires... ;)
Ce que tu décris s'explique très simplement en lisant ceci
http://olivieraj.free.fr/fr/linux/information/firewall/fw-03-04.html#III-4-1
et en regardant plus particulièrement ceci :
http://olivieraj.free.fr/fr/linux/information/firewall/pictures/filter.jpg
Comme dit plus haut les règles sur INPUT et OUTPUT NE protègent QUE, je
dis bien QUE, les PROCESSUS LOCAUX: Clients web ou serveur web. Par
contre, les paquets passant d'une interface réseau à l'autre ne font QUE
utiliser la chaîne "FORWARD" de la table "NAT.
Or, si tu regardes les règles qui sont créées par mes scripts, tu verra
ceci :
iptables -A FORWARD -i eth0 -o eth1 \
-m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 \
-m state --state ! INVALID -j ACCEPT
Ce qui veut dire que tu autorises les paquets à sortir de ton LAN pour
aller sur Internet. Et que tu acceptes ceux en retour.
MAIS, et c'est là ce qui explique le "mystère" : AUCUNE de ces règles
ne prend en compte ton adresse IP free. Donc ces règles sont
indépendantes des changement d'adresses IP que tu fais Free.
On me pose souvent cette question, et je donne toujours de la même
réponse : Le NAT/port forwarding est I-N-D-E-P-E-N-D-A-N-T des règles
INPUT et OUTPUT. Vous pouvez interdire toute connexion aux processus
locaux ("iptables -A INPUT -j DROP" / "iptables -A OUTPUT -j DROP"),
cela N'interdira PAS les paquets de passer d'une interface réseau à
l'autre (le "echo 0 > /proc/sys/net/ipv4/ip_forward" est le moyen le
plus efficace pour empêcher le NAT/Port forwarding).
Tu peux penser que ceci est un faille de mes scripts, ou un problème de
Netfilter. En fait, ce n'est ni l'un ni l'autre. Il s'avère tout
simplement que lorsque les paquets passent par la chaîne "FORWARD", ils
sont déjà "épurés" de l'adresse IP de free. Je passe sous silence le
fait que l'on pourrait jouer avec la table "MANGLE" pour que les règles
gérant le NAT soit dépendant de ton adresse IP Free : Cela serait plus
de boulot, pour un bénéfice pas forcément utile.
Donc pour conclure :
- les applications locales de ta passerelle sont pénalisées par les
changement d'adresse IP que t'impose Free
- les machines de ton LAN n'en sont pas affectés.
- il n'y a aucun mystère à ceci
- l'explication plus complète est ici :
http://olivieraj.free.fr/fr/linux/information/firewall/fw-03-08.html .
Et notamment, à propos du "port forwarding", il y a ceci:
<extrait>
Au passage, vous noterez qu'il n'est pas nécessaire d'ouvrir d'autres
accès. Et notamment via les chaînes "INPUT" et "OUTPUT" afin autoriser
l'échange avec le port 80. Pourquoi ? Simplement parce que dans le cas
du port forwarding, les trames à destination de paradise.sky.net ne sont
pas destinées aux processus locaux, et donc elle ne passent pas à
travers les chaînes "INPUT" et "OUTPUT". En fait, comme on le verra tout
de suite, seul la chaîne "FORWARD" de la table "Filter" devra être modifiée.
</extrait>
A plus,
Olivier
--
~~~~~~~ _____/\_____ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Phoenix / _ \/ _ \ Olivier Allard-Jacquin
/ / \ / \ \ Web: http://olivieraj.free.fr/
/___/ / \ \___\ Mail: olivieraj@???
~~~~ ///// ///\\\ \\\\\ ~~~~~~~~~~~~~~~~~~~~~~~ Linux Powered !!