[HOWTO] Debian y Netfilter ?

[quote=“Soyouz”]ok, cette commande

Sert donc a configurer le noyau afin qu’il joue le role de routeur et que donc IPTABLES puisse traiter les paquets via les ses tables et ses chaines.
[/quote]

Oui.

Oui, mais je ne sais plus pourquoi :p!

Oui.

Tu installes la doc du noyau : linux-doc-2.6.22 par exemple. Ensuite tu vas faire un petit tour dans /usr/share/doc/linux-doc-2.6.22/Documentation/networking/

Et là un petit :

Et tu trouveras les réponses à tes questions et même plus.

Super merci bcp mais … comment j installe la doc de mon noyau (uname -r = 2.6.18-4-486) ?

J ai essayé un apt-get install linux-doc-2.6.18-4-486 mais ça marche pas … :blush:

ah … :blush: :blush: :blush:

Desolé j ai pas encore tout les reflexes … merci encore , que ferais-je sans ton aide devouée :slightly_smiling:

Bonjour á tous,

Voila j’ai maintenant mes 2 interfaces reseaux connectés et fonctionnelles :

eth0 : LAN - DHCP
eth1 : INTERNET - IP STATIQUE

Petite question au passage, lors des modifications du fichier etc/network/interface , j’ai remarqué (et lu) qu’il est necessaire de redemarrer les interfaces afin que les modifications soient prises en charge.

la commande networking restart ne fonctionne pas pas plus que network restart

j’ai un command not found

Je passe donc par ifdown ethx et tout de suite apres ifup ethx

Une idée de pourquoi les commandes Network ne fonctionne pas ?

Merci

Autre question, cette fois sur le NAT d’IPTABLES :

sur cette page : http://christian.caleca.free.fr/netfilter/nat.htm

Il est expliqué qu’on peut faire du NAT sur la chaine OUTPUT (paquets issus d’un processus local du routeur), mais les explications ne sont pas tres claires.

L’auteur explique que l’interet reside dans le fait de modifier les socket destinataires lorsque les paquets issus de OUTPUT sont a destination d’un process local externe.

[quote]La chaîne OUTPUT, quant-à elle, permet de modifier le socket de destination d’un paquet issu d’un processus local. L’utilité de cette chaîne n’est pas évidente, dans la mesure où, normalement, les paquets sortant d’un processus local devraient aussi passer par POSTROUTING.
La seule possibilité supplémentaire est de pouvoir rediriger les paquets qui sortent d’un processus local à destination d’une cible extérieure, vers un autre processus local (127.0.0.1).[/quote]

Je ne comprend pas le terme d’externe ici … s’agit-il d’un process serveur externe a mon reseau local ex . un serveur web situé sur Internet ?

Ou bien un process serveur situé sur mon reseau local

ou encore un process different sur mon routeur ???

Merci de vos reponses

un petit Up car je n’ai pas eu de reponses á mes questions… :frowning:

[quote=“Soyouz”]
Il est expliqué qu’on peut faire du NAT sur la chaine OUTPUT (paquets issus d’un processus local du routeur), mais les explications ne sont pas tres claires.

L’auteur explique que l’interet reside dans le fait de modifier les socket destinataires lorsque les paquets issus de OUTPUT sont a destination d’un process local externe.

[quote]La chaîne OUTPUT, quant-à elle, permet de modifier le socket de destination d’un paquet issu d’un processus local. L’utilité de cette chaîne n’est pas évidente, dans la mesure où, normalement, les paquets sortant d’un processus local devraient aussi passer par POSTROUTING.
La seule possibilité supplémentaire est de pouvoir rediriger les paquets qui sortent d’un processus local à destination d’une cible extérieure, vers un autre processus local (127.0.0.1).[/quote]

Je ne comprend pas le terme d’externe ici … [/quote]

Ce qui me gêne plus c’est de parler de la chaîne POSTROUTING. La modification de la destination d’un paquet ne peut être fait que en PREROUTING pour les paquets entrants, et en OUTPUT pour les paquets sortants, toutes deux avant le routage. En POSTROUTING, on ne peut faire que du SNAT.

Pour le DNAT en OUTPUT, il y a deux possibilités :

  • les paquets générés localement ayant pour destination une machine différente de la machine locale : On peut alors rediriger ces paquets vers la machine locale.
  • les paquets générés localement ayant pour destination localhost peuvent être redirigés vers une machine extérieur.

En espérant avoir été assez clair.

Quant à la mise en place de telles règles, je n’ai pas d’idées.

Si quelqu’un voit une erreur dites le moi.

Pour ton problème réseau mets cela dans un autre thread avec les messages d’erreurs obtenus, les commandes exactes, la sortie de dmesg | grep -i eth et de ifconfig -a

Tiens, j’ai trouvé un exemple :

http://iptables-tutorial.frozentux.net/iptables-tutorial.html#DNATTARGET

Ok merci, je vais jeter un oeil a cette page.

ERn ce qui concerne les regles de IPTABLES, jai quelques incomprehensions.

Pour le moment mon IPTABLES ressemble a ça :

Table FILTER

Chain INPUT (Policy DROP)
Target     Prot   opt    source         destination
ACCEPT   0       -        Anywhere    Anywhere
ACCEPT   0       -        Anywhere    Anywhere

Chain OUTPUT (Policy DROP)
Target     Prot   opt    source         destination
ACCEPT   0       -        Anywhere    Anywhere
ACCEPT   0       -        Anywhere    Anywhere

Chain FORWARD (Policy DROP)
Target     Prot   opt    source         destination


Table NAT

Chain PREROUTING (Policy ACCEPT)
Target     Prot   opt    source         destination

Chain POSTROUTING (Policy DROP)
Target             Prot   opt    source         destination
MASQUERADE   0       -        Anywhere    Anywhere

Chain OUTPUT (Policy DROP)
Target     Prot   opt    source         destination


Table MANGLE

Chain PREROUTING (Policy DROP)
Target     Prot   opt    source         destination

Chain INPUT (Policy DROP)
Target     Prot   opt    source         destination

Chain FORWARD (Policy DROP)
Target     Prot   opt    source         destination

Chain OUTPUT (Policy DROP)
Target     Prot   opt    source         destination

Chain POSTROUTING (Policy DROP)
Target     Prot   opt    source         destination
  1. Je peux me connecter par SSH depuis un client LAN.

  2. Je ping 127.0.0.1 depuis le routeur par eth0 (LAN) mais PAS par eth1 (INTERNET) => je comprend pas pourquoi puisque j 'ai fait un

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

et j’ai donc

Chain INPUT (Policy DROP)
Target     Prot   opt    source         destination
ACCEPT   0       -        Anywhere    Anywhere
ACCEPT   0       -        Anywhere    Anywhere

Chain OUTPUT (Policy DROP)
Target     Prot   opt    source         destination
ACCEPT   0       -        Anywhere    Anywhere
ACCEPT   0       -        Anywhere    Anywhere

les ping sur local (lo) devrait passer depuis n importe quelle interface non ?

  1. Depuis le routeur je ping ma machine locale sur eth0 (LAN) mais PAS sur eth1 (INTERNET) => je comprend pas (idem que pour le ping sur 127.0.0.1) puisque il s’agit de paquets generés localement ils devraient passer vers le LAN depuis n importe quelle interface vu que
Chain OUTPUT (Policy DROP)
Target     Prot   opt    source                   destination
ACCEPT   0       -        [b]Anywhere[/b]    [b]Anywhere[/b]
ACCEPT   0       -        [b]Anywhere[/b]    [b]Anywhere[/b]
  1. Depuis mon client LAN je ping le routeur sur l’IP de eth0 ET sur l’IP de eth1

  2. Depuis mon client LAN je ne ping pas Internet …

  3. Depuis le routeur je ne ping pas Internet …

QQues pistes ?

Merci de vos reponses

un petit Up… pas de reponses … ? je ne suis p-e pas assez clair dans mes explications …

tu peux donner le resultat d’iptables-save ?

Hello

[code]debian-test:/# iptables-save

Generated by iptables-save v1.3.6 on Wed Aug 29 12:07:05 2007

*mangle
:PREROUTING ACCEPT [10456:1852501]
:INPUT ACCEPT [9289:1781845]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4513:453926]
:POSTROUTING ACCEPT [4073:424038]
COMMIT

Completed on Wed Aug 29 12:07:05 2007

Generated by iptables-save v1.3.6 on Wed Aug 29 12:07:05 2007

*nat
:PREROUTING ACCEPT [5276:1448486]
:POSTROUTING ACCEPT [30:3160]
:OUTPUT ACCEPT [1882:151409]
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
COMMIT

Completed on Wed Aug 29 12:07:05 2007

Generated by iptables-save v1.3.6 on Wed Aug 29 12:07:05 2007

*filter
:INPUT DROP [5448:1480514]
:FORWARD DROP [0:0]
:OUTPUT DROP [441:30048]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A FORWARD -i eth0 -o eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eth0 -j ACCEPT
-A OUTPUT -o eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
COMMIT

Completed on Wed Aug 29 12:07:05 2007[/code]

bon en nat, le -A POSTROUTING -o eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT est superflu puisque tu es en policy ACCEPT par défaut.

Il y a un truc que je ne comprends pas: tu fais comment ton ping de lo “par” eth0 ou eth1 ?

sinon, as tu activé l’ipforward ?

c noté… a force de tapper et retapper les regles , je fini par plus trop m y retrouver

bah avec un ping -I eth0 127.0.0.1 ou ping -I eth1 127.0.0.1

[quote=“mattotop”]sinon, as tu activé l’ipforward ?

oui c fait

Merci de tes reponses

Pour ce qui est des problèmes liés à l’interface eth1, ils sont dûs au fait que la politique pour la chaîne INPUT pour cette interface est DROP.

Ensuite, pour les paquets routés localement, je ne m’avancerais pas.

Et pour finir, le ping des différentes adresses depuis ton LAN c’est normal que cela fonctionne, car une adresse ip n’est pas liée à une interface physique.Pour limiter un peu les choses, il faut regarder du côté du paramètre arp_ignore et ces petits amis au niveau du noyau.

Merci pour les reponses

Je fais des tests pas a pas avec un le routeur connecté au net et a un client LAN et de l autre coté une machine en wifi passant par le net pour tester les entrees par eth1.

Je viendrais mettre a jour ce fil afin d expliquer la demarche, ça peut servir a d autres qui galerent comme moi.