Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité de passage
    Inscrit en
    mars 2006
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : mars 2006
    Messages : 56
    Points : 4
    Points
    4

    Par défaut Règles iptables : simples, mais ne fonctionnent pas.

    Bonsoir,

    Contexte
    J'ai deux machines en réseau :
    • "Machine" (avec IP_02) qui est sur un réseau local : machine de travail
    • "Gateway" (abec IP_10) qui est sur le même réseau local : c'est ma passerelle/parefeu pour sortir sur internet.


    IP_02 utilise IP_10 comme passserelle dans son paramétrage (c'est un windows).
    IP_10 utilise iptables pour filtrer les paquets. Elle a une interface eth0 pour le réseau locale (avec IP_10) et eth1 pour sortir sur le net (avec IP_WEB).

    Demande
    Je voudrais envoyer un mail à partir de "Machine" (IP_02), en passant par IP_10 (normal) et en n'autorisant que le port nécessaire, à savoir le 587 (smtp orange).

    J'ai donc mis les règles suivantes :

    1) Règles pour autoriser les trames entre mes 2 interfaces de ma passerelle
    Code :
    1
    2
    iptables -t filter -A FORWARD -i eth1 -o eth0 -s 0.0.0.0/0      -d IP_02       -p tcp --sport 587      -j ACCEPT
    iptables -t filter -A FORWARD -i eth0 -o eth1 -s IP_02 -d 0.0.0.0/0            -p tcp --dport 587      -j ACCEPT
    2) Règles pour nater les adresses sources et destinatrices
    Code :
    1
    2
    iptables -t nat -A PREROUTING -i eth1   -s 0.0.0.0/0 -d IP_WEB -p tcp --dport 587      -j DNAT --to-destination IP_02:587
    iptables -t nat -A POSTROUTING -o eth0  -s 0.0.0.0/0 -d IP_02 -p tcp --dport 587       -j SNAT --to-source IP_10
    Pour une raison que j'ignore, ça bloque. Et j'ai un peu de mal à identifier le problème, mais je crois que c'est le forward qui me gêne...

    A noter que les règles suivantes fonctionnent (mais elles routent tous les ports et ça, je veux pas):
    Code :
    1
    2
    3
    iptables -t filter -A FORWARD -i eth1 -o eth0 -s 0.0.0.0/0      -d IP_02       -j ACCEPT
    iptables -t filter -A FORWARD -i eth0 -o eth1 -s IP_02 -d 0.0.0.0/0           -j ACCEPT
    iptables -t nat -A POSTROUTING -o eth1 -s IP_02 -j MASQUERADE

    Une idée du pourquoi ?

    Merci bien !

  2. #2
    Modérateur
    Avatar de IP_Steph
    Homme Profil pro Steph
    Architecte réseau
    Inscrit en
    février 2012
    Messages
    1 854
    Détails du profil
    Informations personnelles :
    Nom : Homme Steph
    Localisation : France

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : février 2012
    Messages : 1 854
    Points : 3 747
    Points
    3 747

    Par défaut

    Salut,

    j'aurais fait de la façon suivante :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # Reset des iptables
    iptables -F
    iptables -X
    iptables -t nat -F
    iptables -t nat -X
    iptables -t mangle -F
    iptables -t mangle -X
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT
     
     
    # On droppe tout par défaut
    iptables -p INPUT DROP
    iptables -p OUTPUT DROP
    iptables -p FORWARD DROP
     
     
    #On ne translate que l'adresse IP_02 en n'acceptant que le port 587
    iptables -t nat -A POSTROUTING -s IP_02 -p tcp --dport 587 -j SNAT --to-source IP_10:587
    Ca suppose certains pré-requis, notamment que l'IP Forwarding est bien activé et que le routage est fait (default route vers ton opérateur par exemple). Si ça n'est pas le cas, il faudrait peut-être passer par une étape préliminaire pour vérifier qu'on part bien de quelque chose de fonctionnel.

    Steph
    ʇɥıs uǝʍ uʌıpıɐ pɹıʌǝɹ snɔʞs :-)

  3. #3
    Invité de passage
    Inscrit en
    mars 2006
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : mars 2006
    Messages : 56
    Points : 4
    Points
    4

    Par défaut

    Je m'aperçois d'un truc en fait :
    Je mets des règles sans port forwarding (je natte tous les ports) afin que les trames passent. Quand je fais un tcpdump pour voir un peu ce qui passe sur ma passerelle/pare-feu, je vois que le port qui est demandé sur mon interface eth0, c'est pas du tout un 587, mais un 49xxx (et à chaque nouvelle tentative, ça change, parfois c'est 50xxx).

    D'où cela peut-il provenir ? Je tente un "telnet smtp.orange.fr 587", mais aussi directement depuis l'application qui doit envoyer un mail automatique et le port que je vois n'est JAMAIS 587... du coup, je comprends que mes règles ne fonctionnent pas quand je ne route que ce port. Mais je ne sais pas d'où ça vient :-(

  4. #4
    Invité de passage
    Inscrit en
    mars 2006
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : mars 2006
    Messages : 56
    Points : 4
    Points
    4

    Par défaut

    Bon en fait, je suis trop con je pense.

    J'étais tellement orienté sur l'idée de prerouting et postrouting, parce que c'est ce que je connaissais que j'en ai pas tilté que c'était principalement vrai pour une machine sur internet qui accède à mon réseau local...

    Or, là, je suis dans une configuration où je pars du LAN vers Internet... classique cas avec "MASQUERADE"....

    Code :
    1
    2
    3
    iptables -t filter -A FORWARD -i eth0   -o eth1 -s IP_02       -p tcp --dport 587      -m state --state NEW,ESTABLISHED,RELATED        -j ACCEPT
    iptables -t filter -A FORWARD -i eth1   -o eth0 -d IP_02       -p tcp --sport 587      -m state --state ESTABLISHED,RELATED            -j ACCEPT
    iptables -t nat -A POSTROUTING  -o eth1 -s IP_02 -j MASQUERADE
    Voilà qui fait très bien ce que j'attends :
    - autoriser le forward sur le port 587 pour la machine IP_02.
    - masquer mon adresse local avec celle de la passerelle quand les trames sortent sur internet...

    Tout con. Mais ça fonctionne...
    Merci à ceux qui ont pris le temps de réfléchir à mon problème, et d'y répondre :-)

    Et bon week-end !

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •