Rediriger un port vers une autre IP

bonsoir/bonjour a tous,

j’ai une passerelle sous debian qui me rend de nombreux services mais j’ai cependant quelque chose que je n’arrive pas a faire

j’ai ma connexion A qui est ma connexion principal la ou passe par défault tout le trafique internet.

j’aimerai rediriger un port par exemple vers une connexion B

du style

route add PORT wg connexion B

est-ce possible ?

pour un exemple encore plus claire je voudrais rediriger le port 25 vers le port 25 de la conneixon b par exemple

Jérémy

Tu ne peux pas faire une règle iptables qui forward tout ce qui passe par un port vers une ip?
+++

bonjour,

j’ai bien testez avec la règles iptables que je vais mettre si dessous mais bon pour un site http ça m’ouvre la page http du routeur concerner mais pas le site web lol

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.2.1:80

pensez vous a une règles différente ?

Jérémy

iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 80 -j DNAT -i $IF_LAN -d $IP_EXTERIEURE --to 192.168.2.1:80 iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 80 -j DNAT -i $IF_EXT --to 192.168.2.1:80 iptables -t nat -A POSTROUTING -o $IF_LAN -p tcp --dport 80 -s 192.168.2.0/24 -j MASQUERADE
IF_LAN = interface du LAN
IF_EXT = interface extérieure

j’ai connu un fran.b autrefois, mais il était moins avare en explications … :mrgreen:

m’enfin faut comprendre, faire du iptable a 07h00 du matin

:smt006

Ouaip, François ne devait pas être bien réveillé pour avoir oublié que les chaînes de la table ‘nat’ ne voient que des paquets dans l’état NEW, et donc que l’option “-m state” était parfaitement inutile.

@ jeremyp3 :
Que veux-tu faire exactement ?
Modifier l’adresse de destination des communications émises vers un certain port, qui est ce qu’on entend généralement par “rediriger un port vers une autre IP” ?
Ou bien router les communications émises vers un certain port via une connexion internet alors que le reste du trafic est routé via une autre connexion internet, ce qui me semble davantage correspondre à ta description ?

bonjour pascale,

la seconde solution …

mais les deux solutions ne se ressemble pas au finale ?

Jérémy

Non, rien à voir.

Dans le premier cas, on modifie juste l’adresse destination et on laisse le routage normal faire son boulot avec la nouvelle destination. La destination finale a donc changé.

Dans le second cas, on ne modifie pas l’adresse de destination, on ne fait qu’agir sur le routage. La destination finale n’a donc pas changé, c’est juste le chemin pour l’atteindre qui a changé.

ok.

quelqu’un connais la manipulation de la seconde solution au finale ?

puisque effectivement c’est celle qui m’interresse.

Jérémy

C’est expliqué dans le LARTC howto (Linux Advanced Routing & Traffic Control) dont tu trouveras facilement une copie sur le web.
En résumé :
iptables MARK pour marquer les paquets
ip rule fwmark pour aiguiller les paquets marqués vers une table de routage
ip route add pour remplir cette table de routage
Et le cas échéant :
iptables SNAT ou MASQUERADE pour que l’adresse source corresponde à l’interface de sortie
désactiver rp_filter sur les interfaces internet dans /proc/sys/net/ipv4/conf/.

oula

c’est pas simple

j’aurai penser que ça se ferai en une seule manipulation…

partons par exemple sur le port 80 rediriger vers l’interface 192.168.2.1

Jérémy

Ce que j’ai compris, c’est que jeremyp3 veut faire du simple ip forwarding et donc avec des simples règles iptables du type celles d’au-dessus suffises.

+++

bonjour,

je pense que ce que je souhaite faire ressemble plus az du routage qu’as du simple ip forware

Jérémy

Certes ce n’est pas simple, mais avec un peu de pratique ce n’est pas bien compliqué non plus une fois qu’on a assimilé les principes du routage avancé, et surtout comment le noyau Linux route un paquet.

D’autres ont aussi trouvé la procédure trop lourde, et il en a résulté la cible ROUTE d’iptables qui permet de forcer le routage d’un paquet en court-circuitant la décision de routage normale. Cependant cette approche qu’il faut bien qualifier de “hack” a été quasi-unanimement rejetée par les développeurs de netfilter et elle n’a jamais été intégrée au noyau officiel.

Note : “l’interface 192.168.2.1” n’a pas de sens car 192.168.2.1 est une adresse, pas une interface.

oui lol je disais l’interface 192.168.2.1 pour simplifier

mais autrement c’est l’interface eth2

avez vous quelque chose qui parle concraitement de ce que je souhaite faire ?

je suis pas un utilisateur très avancer mais je me débrouille dison…

merci pour votre patiance

Jérémy

J’ai déjà mentionné le howto LARTC. De mémoire, il contient un exemple concret de routage avancé avec deux connexion internet.

Dans ton cas, en supposant que le paquet iproute est installé, que l’interface eth2 est configurée, qu’il y a une route par défaut sur l’autre connexion internet, et que le jeu de règles iptables en place ne gêne pas le trafic, ça donnerait quelque chose comme ça :

# desactiver la validation d'adresse source sur eth2
sysctl -w net.ipv4.conf.eth2.rp_filter=0

# marquer les paquets recus par l'interface LAN destinés au port TCP 25
iptables -t mangle -A PREROUTING -i $interface_lan -p tcp --dport 25 -j MARK --set-mark 0x1

# idem avec les paquets emis par le routeur vers internet si necessaire
iptables -t mangle -A OUTPUT -o $autre_interface_internet -p tcp --dport 25 -j MARK --set-mark 0x1

# router les paquets marques avec une table de routage alternative (100)
ip rule add fwmark 0x1 table 100

# creer une route par defaut dans la table alternative
ip route add default dev eth2 via $adresse_passerelle table 100

# NATer l'adresse source avec l'adresse de l'interface de sortie
iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to $adresse_eth2

je vous remerci de cette réponse

mais j’ai sependants un problème avec la route

debian:~# ip rule add fwmark 0x1 table 100
debian:~# ip rule add default dev eth2 via 192.168.2.1 table 100
Error: argument “default” is wrong: Failed to parse rule type

que lui arrive t’il ?

Jérémy

C’était “ip route”, j’ai corrigé.

Pour être sûr, 192.168.2.1 est bien l’adresse du routeur qui est en face de eth2 et non l’adresse de l’interface eth2 ?

oui, c’est ça

l’adresse de l’interface eth2 est 192.168.2.20
merci pour votre correction

je m’en vais retestez ça

et … ça fonctionne !

merci de m’avoir détaillé pas a pas la procédure

Jérémy