Forum Linux.debian/ubuntu Netfilter / Iptables : Redirection de port

Posté par  .
Étiquettes :
0
17
août
2009
Bonjour,
j'ai un soucis avec mon firewall, je ne parviens plus à rediriger certains services (ssh et http en particulier) du firewall vers mon serveur.

Mon réseau est très classique, 1 routeur/firewall sous debian est connecté à la toile, le reste du LAN, dont 1 serveur de fichiers/apache (debian également) est connecté au firewall.

Voici les règles iptables que j'utilise, l'IP du serveur de fichier / apache étant 192.168.1.250 :


iptables -A FORWARD -i bridge_local -o eth1 -j LOG --log-level 4 --log-prefix="[RULE]"
iptables -A FORWARD -o bridge_local -i eth1 -j LOG --log-level 4 --log-prefix="[RULE]:"
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# Forwarding du port 80
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -d --dport 80 -j DNAT --to-destination 192.168.1.250:80


J'arrive à la bonne machine en tapant l'ip publique lorsque je suis dans le réseau interne, mais depuis l'extérieur, rien à faire, j'ai un timeout systématique.

J'ai essayé successivement des dizaines de configurations sans plus de succès, le plus étrange étant que cela marchait parfaitement depuis plusieurs mois, et c'est depuis une mise à jour du serveur de fichiers ce matin (par du routeur, sur lequel je ne suis intervenu qu'après avoir constaté le problème) que le problème est apparu.

Toute aide serait la bienvenue, je n'arrive plus à cerner le problème et c'est très handicapant d'avoir son réseau en rade...
  • # Re

    Posté par  . Évalué à 3.

    Je vois pas d'erreurs bloquantes sur ta redirection de port.
    Par contre, pour moi, ta première règle ne sert à rien:

    iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT


    La table INPUT te permet de filtrer ce qui arrive pour ton serveur.
    Si tu veux filtrer pour ce que ton serveur va forwarder (ce qui est le cas ici), il faut que tu utilises la table FORWARD...
    Je pense que malgré tout ça passe car la policy de ta table FORWARD doit être à accept ...
  • # -d adresse masquée ?

    Posté par  (site web personnel) . Évalué à 3.

    iptables -t nat -A PREROUTING -p tcp -d --dport 80 -j DNAT --to-destination 192.168.1.250:80
    Y-a pas un soucis après le "-d" ?

    Les routes sont bonnes sur la machine cible, cad le routeur comme paserelle ?
    Ou tes régles ne matchent pas car les interfaces ne sont pas les mêmes ( réseau interne/externe ) mais sans plus d'infos difficile à dire.

    Système - Réseau - Sécurité Open Source

  • # ip_forward à 1

    Posté par  . Évalué à 1.

    Ce n'est pas préciser, alors je demande confirmation...
    /proc/sys/net/ipv4/ip_forward est bien à 1 ?
  • # connexion internet

    Posté par  . Évalué à 2.

    comment tu te connecte à internet ?

    si c'est via un modem, alors ca devrait marcher
    si c'est via une box elle fait surement parefeu, et il faut soit lui dire de tout renvoyer vers ta passerelle (DMZ) soit de renvoyer le port 80 vers cette passerelle.
    • [^] # Re: connexion internet

      Posté par  . Évalué à 1.

      Merci à tous pour vos réponses...

      J'ai finalement résolu mon problème, c'est tellement stupide que j'en ai honte. En fait mes règles étaient bonnes, je ne regardais pas au bon endroit, tout simplement, puisque c'est le serveur de fichier qui avait perdu sa connexion à internet, un simple

      route add default gw 192.168.1.254

      et ça a été réglé.

      Pour répondre à vos questions, j'ai effectivement masqué mon ip publique dans mes règles, d'où le -d qui se ballade tout seul, et j'ai bien

      echo 1 > /proc/sys/net/ipv4/ip_forward

      à la fin de mon script d'initialisation de mes règles iptables.

      C'est rageant de perdre des heures à cause de ça, il faut croire que j'étais plus très en forme hier soir...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.