IPTABLES : livebox + passerelle + windows emule

bonjour a tous,

je suis en train de me battre avec mes iptables, pour faire fonctionner ma mule!

Donc voici mon archi dans un premier temps :

  • une livebox 192.168.1.1
  • une passerelle debian (2.6.18) en 192.168.1.69 et 192.168.0.69
  • mon pc windows 192.168.0.15

Sur ma livebox, j’ai ouvert les ports tcp 4662, udp 4672 et les ait reroute via l’option nat sur 192.168.1.69

Dans un deuxieme temps, j’ai ouvert les ports sur ma passerelle :

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

puis les ait forwardé vers ma machine windows :

iptables -t nat -A PREROUTING -p tcp --dport 4662 -j DNAT --to-destination 192.169.0.15 iptables -A FORWARD -s 192.169.0.15 -p tcp --dport 4662 -j ACCEPT iptables -t nat -A PREROUTING -p udp --dport 4672 -j DNAT --to-destination 192.169.0.15 iptables -A FORWARD -s 192.169.0.15 -p udp --dport 4672 -j ACCEPT

est ce bien comme ca que ela doit fonctionner ?

Merci
ced

Si les paquets sont forwardés, ils ne passent pas au travers de la chaîne INPUT et OUTPUT, par conséquent tu peux supprimer les règles pour ces deux chaînes.

Comme ton poste Debian fait du forwarding, il est nécessaire de le mettre en place avec une règle SNAT puisque l’ip de ton serveur est fixe.

iptables -t nat -A POSTROUTING -o $NET_IFACE -j SNAT --to-source 192.168.1.69

De cette manières les requêtes forwardées de ton réseau privé vers Internet auront pour source l’ip de ton serveur Debian côté Internet, et non plus une adresse de ton réseau privé.

Ensuite, il te faut autoriser le traffic pour la chaîne FORWARD, (on va faire simple)

iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $LAN_IFACE -o $NET_IFACE -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -i $NET_IFACE -p tcp --dport 4662 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -i $NET_IFACE -p udp --dport 4672 -m conntrack --ctstate NEW -j ACCEPT

Je suppose ici que ta politique par défaut pour la chaine FORWARD est DROP (iptables -P FORWARD DROP).
1/ La règle autorise tout le traffic forwardé dont l’état est RELATED, ESTABLISHED à entrer et sortir.
2/ On autorise toutes les requêtes sortantes, avec un état NEW, vers Internet depuis tout réseau privé à sortir.
3/ et 4/ On autorise toutes les requêtes de type NEW pour les ports 4662(tcp) et 4672(udp) à être forwadées vers le réseau privé.

Et puis un petit :

sysctl -w net.ipv4.ip_forward=1

On pensera ensuite à rediriger les ports emule attaquants le serveur depuis Internet, vers ta machine windows. :

iptables -A PREROUTING -t nat -d 192.168.1.69 -p udp --dport 4672 -j DNAT --to-destination 192.168.0.15
iptables -A PREROUTING -t nat -d 192.168.1.69 -p tcp --dport 4662 -j DNAT --to-destination 192.168.0.15

Comme la chaîne PREROUTING est placée avant les chaîne INPUT et OUTPUT, les requêtes vers les ports 4662 et 4672 se verront modifier leur adresse source et n’iront plus vers INPUT mais FORWARD ou elles devront matcher les règles mentionnées un peu plus haut.

J’ai pas emule d’installé mais je pense que cela devrait fonctionner. A vérifier car j’ai peut-être oublié quelque chose ou je me suis fourvoyé.

Merci a toi thialme,

effectivement, ca a l’air de bien marcher pour le bittorent. Je ne connaissait pas le SNAT.
Pour ce qui est de la mule, elle ne veut toujours pas se connecter, mais d’autres ports seraientt a ouvrir apparement (et deja, il faudrait que je la remette a jour).
Mais bon, j’ai compris le principe, et le torrent tourne plutot convenablement. C’est le principal !!!

:smiley:

Bonne soiree, merci