[RESOLU] Pb de Forwarding / NAT


#1

Bonjour a tous,

Pour debuter, un recap de ma config :

PC |------| eth1 NAT eth0 |-------| LiveBox

PC : IP fixe 192.168.50.2
eth1 : IP fixe 192.168.50.1

eth0 : IP DHCP de la LiveBox

L’origine de mon pb est que je ne peux plus utiliser emule sur mon PC : les ports 4662/4672 ne peuvent etre atteints…

Au niveau de la LiveBox, j’ai tout desactivé…a priori, je ne pense pas que cela vienne d’elle (pare feu au mini + DMZ)

Coté firewall de la debian (qui fait du NAT vous l’aurez compris), j’ai joints en fin de post les règles établies : quelle est mon erreur ?? :cry:

Remise a zero des regles de filtrage

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

Debut des regles firewall

Connexions entrantes bloquee par defaut

Connexions forwardee acceptee par defaut

Connexions sortantes acceptee par defaut

Connexions entrantes deja etablies

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Connexions entrantes port 20 et 21

iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT

Connexions pour SSH

iptables -A INPUT -p tcp --destination-port ssh -j ACCEPT

Connexions entrantes Emule TCP:4662 UDP:4672

iptables -A INPUT -p tcp --dport 4662 -j ACCEPT
iptables -A INPUT -p udp --dport 4672 -j ACCEPT

Connexions entrantes Azureus TCP:1979

iptables -A INPUT -p tcp --dport 1979 -j ACCEPT

Connexion SAMBA depuis le LAN uniquement sur eth1

iptables -A INPUT -p tcp --dport 139 -i eth1 -j ACCEPT
iptables -A INPUT -p udp --dport 139 -i eth1 -j ACCEPT

Pas de filtrage sur localhost et le reseau local

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT

REGLE DE PARTAGE DE CONNEXION NAT

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

REGLE DE PORT FORWARDING

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1979 -j DNAT --to-destination 192.168.50.2:1979
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 4662 -j DNAT --to-destination 192.168.50.2:4662
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 4672 -j DNAT --to-destination 192.168.50.2:4672

REGLE INPUT PAR DEFFAUT

iptables -A INPUT -j DROP


#2

slt,

[quote]
PC |------| eth1 NAT eth0 |-------| LiveBox
PC : IP fixe 192.168.50.2
eth1 : IP fixe 192.168.50.1
eth0 : IP DHCP de la LiveBox [/quote]

Qu’as tu comme interface sur ton poste, je comprend pas ton shéma, tu as un pc avec ip fixe, un firewall sous debian avec combien d’interface, et ta livebox, c’est ca ?


#3

J’ai effectivement deux interfaces sur ma Debian eth0 connecté a la LiveBox et eth1 connecté à mon PC


#4

Si tu enlèves la ligne

iptables -A INPUT -j DROP à la fin

et

que tu mets

iptables -P INPUT ACCEPT

au début, est ce que ça marche (pour voir où se situes le pbm)


#5

Je viens de faire un test, j’ai ajouté la ligne juste apres la reinitialisation de toutes les chaines…Mais les ports restent toujours inaccessibles…

J’ai utilisés certains scripts sur internet qui permettent de définir les ports ouverts et fermés…

Les ports ouverts sont les 21 22 25 et 113 consequence de la chaine iptables ajoutée.

Sans cette chaine, seul le port 21 et 22 (ssh) sont ouverts…

On avance mais c’est pas encore ca ! :smiley: Je vais essayer de scruter de mon coté les tuto sur iptables mais si c’est un outil puissant, il est assez compliqué a mon gout !!! :confused:

@+ et merci pour les idées !!
Kenavo

Seb


#6

Pour t’aider à ouvrir les bons ports, il faut ajouter des rêgles LOG en fin de chaine INPUT OUTPUT.

$ iptables -A INPUT -j LOG
$ iptables -A OUTPUT -j LOG

Ca logue tout les paquets, avec leurs protocols et leurs ports, qui ne passent pas les filtres INPUT et OUTPUT, dans le fichier /var/log/message.
Ensuite, pour voir les logs iptables en temps réel :

$ tail -f /var/log/message

Tu affines ton iptables jusqu’à ce que ça marche.


#7

ok ! merci du tuyau…je vous tiens au courant !! :wink:

@ +
Seb


#8

bo…pas mieux…En fait c’est pas tres facile a dechiffrer. Le probleme c’est que je voudrais bien pouvoir “affiner” mes regles iptables…mais comment ? Avec quelle syntaxe ? C’est ca mon véritable probleme. Sur le net, il y a des dizaines d’exemples qui sont plus ou moins bien expliqués…lequel choisir ? pourquoi telle regle plutot qu’une autre ?

Je vais continuer a invesiguer…mais quelq’un connait il un bon tuto ou howto sur le sujet ?

merci encore en tout cas et @+

Seb


#9

Pour ce qui est de la doc, as tu au moins survolé le ‘man iptables’ ?
quand tu fais tes scans sur eth0, est ce que tu les fais bien d’une machine située à l’exterieur ?
Sinon, Damsss a raison: il faut apprendre à interprèter ce qui passe.

  • déjà, tu peux, dans une console à part, regarder en temps réel ce qui tombe dans les logs - kern.log plutot que messages qui est trés verbeux - pour détecter ce qui t’interresse au moment ou tu fais ton lancement de la mule .
    -> tail -qf /var/log/kern.log | grep “[DEBUG]”

ensuite, tu rajoutes une chaine de log (pas besoin de modifier ton script, tu l’ajoutes à la volée) pour suivre, par exemple les paquets à destination du port 4662 en tcp sur eth0 (au passage, on va faire un marquage des lignes de log, pour éventuellement les filtrer avec un grep dans le tail -qf )
-> iptables -A INPUT -i eth0 -p tcp --dport -j LOG --log-prefix “[DEBUG]”

Voilà.
Mais dis moi, tu es sûr que c’est du tcp, la mule ?
Et le port 4667, c’est un lien de controle ?


#10

J’ai réussi à résoudre mon pb de port apres avoir pas mal cherché de doc sur le net : je poste le lien qui a servi à m’éclairer :

nbs-system.com/article/iptables_howto

Au départ, je me suis basé sur les chaines INPUT et OUTPUT (cf premier post) : c’est, par rapport à ce que je veux faire (simple dans un premier tps… :wink: ), une erreur. Ce sont les chaines PREROUTING (pour la table DNAT) et FORWARD qu’il faut définir correctement

Au final voici le script que j’ai concu, il est simple mais fonctionne !

Remise a zero des regles de filtrage

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

Connexions entrantes deja etablies

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Connexions pour SSH

iptables -A INPUT -p tcp --destination-port ssh -j ACCEPT

Pas de filtrage sur localhost et le reseau local

iptables -A INPUT -i lo -j ACCEPT

REGLE DE PARTAGE DE CONNEXION NAT

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

REGLE DE PORT FORWARDING POUR EMULE

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 4662 -j DNAT --to-destination [IP PC DU LAN]:4662

iptables -A FORWARD -i eth0 -d [IP PC DU LAN] -p tcp --dport 4662 -j ACCEPT

iptables -t nat -A PREROUTING -i eth0 -p udp --dport 4672 -j DNAT --to-destination [IP PC DU LAN]:4672

iptables -A FORWARD -i eth0 -d [IP PC DU LAN] -p udp --dport 4672 -j ACCEPT