J'ai un petit problème avec une machine tournant sous Linux et
accédant à internet par deux passerelle. Je m'explique...
J'ai deux lignes ADSL, l'une publique attanquant la partie serveur
web, smtp, pop3s, imaps et j'en passe et l'autre dédiée à un
intranet. J'ai installé iproute2, configuré le bazar et je peux
accéder en ssh à chacune de mes deux interfaces réseaux par chacune
des deux IP publiques. Donc, ça marche. Le problème est le port
forwarding...
L'interface publique est connectée à un routeur et possède l'adresse
192.168.254.1 et je reroute un port sur mon serveur intranet
(publique:8000 -> intranet:8080). Cela fonctionne à merveille.
Maintenant, je dois router les ports 3000 et 3001 provenant de mon
routeur intranet connecté à ma passerelle sur l'adresse 192.168.1.1
vers les ports de mon serveur intranet 3000 et 3001. J'ai donc
rajouté une règle dans la table nat :
Cela me semble logique. Sauf que... Rien ne fonctionne. Si je
remplace -d 192.168.1.1 par -d 192.168.254.1 (adresse connectée à
mon routeur "public"), le port forwarding fonctionne. Je sèche. Une
idée ? J'ai lancé un tcpdump sur l'interface côté réseau local et
les paquets arrivant sur l'interface connectée à mon routeur
intranet sont incapables de passer ma passerelle. Ceux qui arrivent
sur le routeur "public" passent sans encombre...
Le 18-02-2005, à propos de Re: Deux passerelles (Linux) et port forwarding..., Guillaume écrivait dans fr.comp.reseaux.ip :
Salut JKB,
JKB a wroté :
Le problème a évolué. En fait, j'ai :
Internet 1 Internet 2 | | --------- Linux ---------- | Intranet
J'utilise iproute.
Question bête : pourquoi ? Iptables seul n'est-il pas suffisant ? (je demande bêtement, je n'utilise que ce dernier et il me suffit :-S)
Parce qu'il y a deux passerelles, donc deux routes par défaut...
Si tu veux bien, j'aimerais bien résumer schématiquement tout ce dont tu as besoin, pour être bien sûr de comprendre (ce qui va sans dire va mieux en le disant ;), corrige-moi là ou j'ai mal compris STP . Soit :
- Intranet == ton LAN (réseau local) - Sur ta linuxette, tu as : eth0, ip 192.168.1.1 sur "Internet1" eth1, ip 192.168.254.1 sur "Internet2" eth2, ip 192.168.0.1 sur "intranet"
eth0: 192.168.254.1 qui va sur un modem routeur -> IP publique eth2: 192.168.1.1 qui va sur un autre modem routeur -> IP publique pour l'intranet eth1: 192.168.0.128 qui donne sur mon LAN (avec mon serveur intranet en 192.168.0.130)
La table par défaut renvoie tout sur Internet 1 qui est NATé.
Donc de "Intranet" vers "Internet1" tout passe en NAT. Ok.
Non, c'est eth0/eth1 qui est NATé.
Le port 8000 d'Internet 1 passe sur Intranet:8080 sans encombre.
De "Internet1:8000", tu PATes vers "Intranet:8080". Ok.
eth0:8000 -> eth1:8080.
Une table intranet (iproute) autorise l'accès en SSH d'Internet 2 sur la passerelle Linux
Pourquoi iproute t'est-il nécessaire ici ? Ne serait-il pas plus simple de tout faire faire par iptables dans la table input ?
Non... Ce n'est pas possible.
et iptables transmet les ports 3000 et 3001 à Intranet. Sauf qu'au retour, les paquets provenant des ports 3000 et 3001, marqués par iptables (-j MARK dans mangle, ça fonctionne) ignorent superbement la table intranet et ressortent par Internet 1 !
... comme le précise la table par défaut qui NATte, sauf qu'il se trompe de provenance, et fait le retour sur la mauvaise interface. J'ai bon ? Et donc, pour ce "retour" de "Intranet" vers "Internet2" en 3000/3001, tu ne pourrais pas ajouter une règle autorisant et dirigeant explicitement ce retour en utilisant le flag "established, related" d'iptables ?
Quelques autres petites questions :
La liaison vers "Internet2" te sert sans doute à une connexion professionnelle vers un autre réseau local. Celui-ci a sans doute une plage IP spécifique, que tu pourrais préciser en iptables pour renvoyer vers la bonne interface, et t'affranchir d'ip route qui visiblement te pose problème. Pourquoi ne pas procéder comme ça ?
Tu peux poster la sortie de # iptables -L et # ip route list _au_ _complet_ STP ?
Chain INPUT (policy DROP 545 packets, 72495 bytes) pkts bytes target prot opt in out source destination 3661 740K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 11309 2159K ACCEPT all -- * * 0.0.0.0/0 192.168.254.1 262 43999 ACCEPT all -- * * 0.0.0.0/0 192.168.0.128 914 69272 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.1 tcp dpt:22
Chain FORWARD (policy ACCEPT 36239 packets, 27M bytes) pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 19041 packets, 11M bytes) pkts bytes target prot opt in out source destination
ip route list 192.168.1.0/24 dev eth2 proto kernel scope link src 192.168.1.1 192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.128 192.168.254.0/24 dev eth0 proto kernel scope link src 192.168.254.1 default via 192.168.254.254 dev eth0
ip route list table intranet default via 192.168.1.254 dev eth2
Une idée ?
Cf. çi-dessus, et si je n'ai pas bien compris ton problème, je te remercie de bien vouloir préciser.
Cordialement,
Ah mais moi aussi :).
JKB
Le 18-02-2005, à propos de
Re: Deux passerelles (Linux) et port forwarding...,
Guillaume écrivait dans fr.comp.reseaux.ip :
Salut JKB,
JKB a wroté :
Le problème a évolué. En fait, j'ai :
Internet 1 Internet 2
| |
--------- Linux ----------
|
Intranet
J'utilise iproute.
Question bête : pourquoi ? Iptables seul n'est-il pas suffisant ?
(je demande bêtement, je n'utilise que ce dernier et il me suffit :-S)
Parce qu'il y a deux passerelles, donc deux routes par défaut...
Si tu veux bien, j'aimerais bien résumer schématiquement tout ce dont
tu as besoin, pour être bien sûr de comprendre (ce qui va sans dire va
mieux en le disant ;), corrige-moi là ou j'ai mal compris STP . Soit :
- Intranet == ton LAN (réseau local)
- Sur ta linuxette, tu as :
eth0, ip 192.168.1.1 sur "Internet1"
eth1, ip 192.168.254.1 sur "Internet2"
eth2, ip 192.168.0.1 sur "intranet"
eth0: 192.168.254.1 qui va sur un modem routeur -> IP publique
eth2: 192.168.1.1 qui va sur un autre modem routeur -> IP publique pour
l'intranet
eth1: 192.168.0.128 qui donne sur mon LAN (avec mon serveur intranet en
192.168.0.130)
La table par défaut renvoie tout sur Internet 1
qui est NATé.
Donc de "Intranet" vers "Internet1" tout passe en NAT. Ok.
Non, c'est eth0/eth1 qui est NATé.
Le port 8000 d'Internet 1 passe sur Intranet:8080 sans
encombre.
De "Internet1:8000", tu PATes vers "Intranet:8080". Ok.
eth0:8000 -> eth1:8080.
Une table intranet (iproute) autorise l'accès en SSH d'Internet 2
sur la passerelle Linux
Pourquoi iproute t'est-il nécessaire ici ? Ne serait-il pas plus
simple de tout faire faire par iptables dans la table input ?
Non... Ce n'est pas possible.
et iptables transmet les ports 3000 et 3001
à Intranet. Sauf qu'au retour, les paquets provenant des ports
3000 et 3001, marqués par iptables (-j MARK dans mangle, ça
fonctionne) ignorent superbement la table intranet et ressortent
par Internet 1 !
... comme le précise la table par défaut qui NATte, sauf qu'il se
trompe de provenance, et fait le retour sur la mauvaise interface.
J'ai bon ? Et donc, pour ce "retour" de "Intranet" vers "Internet2"
en 3000/3001, tu ne pourrais pas ajouter une règle autorisant et
dirigeant explicitement ce retour en utilisant le flag "established,
related" d'iptables ?
Quelques autres petites questions :
La liaison vers "Internet2" te sert sans doute à une connexion
professionnelle vers un autre réseau local. Celui-ci a sans doute une
plage IP spécifique, que tu pourrais préciser en iptables pour
renvoyer vers la bonne interface, et t'affranchir d'ip route qui
visiblement te pose problème. Pourquoi ne pas procéder comme ça ?
Tu peux poster la sortie de # iptables -L et # ip route list _au_
_complet_ STP ?
Chain INPUT (policy DROP 545 packets, 72495 bytes)
pkts bytes target prot opt in out source destination
3661 740K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
11309 2159K ACCEPT all -- * * 0.0.0.0/0 192.168.254.1
262 43999 ACCEPT all -- * * 0.0.0.0/0 192.168.0.128
914 69272 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.1 tcp dpt:22
Chain FORWARD (policy ACCEPT 36239 packets, 27M bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 19041 packets, 11M bytes)
pkts bytes target prot opt in out source destination
ip route list
192.168.1.0/24 dev eth2 proto kernel scope link src 192.168.1.1
192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.128
192.168.254.0/24 dev eth0 proto kernel scope link src 192.168.254.1
default via 192.168.254.254 dev eth0
ip route list table intranet
default via 192.168.1.254 dev eth2
Une idée ?
Cf. çi-dessus, et si je n'ai pas bien compris ton problème, je te
remercie de bien vouloir préciser.
Le 18-02-2005, à propos de Re: Deux passerelles (Linux) et port forwarding..., Guillaume écrivait dans fr.comp.reseaux.ip :
Salut JKB,
JKB a wroté :
Le problème a évolué. En fait, j'ai :
Internet 1 Internet 2 | | --------- Linux ---------- | Intranet
J'utilise iproute.
Question bête : pourquoi ? Iptables seul n'est-il pas suffisant ? (je demande bêtement, je n'utilise que ce dernier et il me suffit :-S)
Parce qu'il y a deux passerelles, donc deux routes par défaut...
Si tu veux bien, j'aimerais bien résumer schématiquement tout ce dont tu as besoin, pour être bien sûr de comprendre (ce qui va sans dire va mieux en le disant ;), corrige-moi là ou j'ai mal compris STP . Soit :
- Intranet == ton LAN (réseau local) - Sur ta linuxette, tu as : eth0, ip 192.168.1.1 sur "Internet1" eth1, ip 192.168.254.1 sur "Internet2" eth2, ip 192.168.0.1 sur "intranet"
eth0: 192.168.254.1 qui va sur un modem routeur -> IP publique eth2: 192.168.1.1 qui va sur un autre modem routeur -> IP publique pour l'intranet eth1: 192.168.0.128 qui donne sur mon LAN (avec mon serveur intranet en 192.168.0.130)
La table par défaut renvoie tout sur Internet 1 qui est NATé.
Donc de "Intranet" vers "Internet1" tout passe en NAT. Ok.
Non, c'est eth0/eth1 qui est NATé.
Le port 8000 d'Internet 1 passe sur Intranet:8080 sans encombre.
De "Internet1:8000", tu PATes vers "Intranet:8080". Ok.
eth0:8000 -> eth1:8080.
Une table intranet (iproute) autorise l'accès en SSH d'Internet 2 sur la passerelle Linux
Pourquoi iproute t'est-il nécessaire ici ? Ne serait-il pas plus simple de tout faire faire par iptables dans la table input ?
Non... Ce n'est pas possible.
et iptables transmet les ports 3000 et 3001 à Intranet. Sauf qu'au retour, les paquets provenant des ports 3000 et 3001, marqués par iptables (-j MARK dans mangle, ça fonctionne) ignorent superbement la table intranet et ressortent par Internet 1 !
... comme le précise la table par défaut qui NATte, sauf qu'il se trompe de provenance, et fait le retour sur la mauvaise interface. J'ai bon ? Et donc, pour ce "retour" de "Intranet" vers "Internet2" en 3000/3001, tu ne pourrais pas ajouter une règle autorisant et dirigeant explicitement ce retour en utilisant le flag "established, related" d'iptables ?
Quelques autres petites questions :
La liaison vers "Internet2" te sert sans doute à une connexion professionnelle vers un autre réseau local. Celui-ci a sans doute une plage IP spécifique, que tu pourrais préciser en iptables pour renvoyer vers la bonne interface, et t'affranchir d'ip route qui visiblement te pose problème. Pourquoi ne pas procéder comme ça ?
Tu peux poster la sortie de # iptables -L et # ip route list _au_ _complet_ STP ?
Chain INPUT (policy DROP 545 packets, 72495 bytes) pkts bytes target prot opt in out source destination 3661 740K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 11309 2159K ACCEPT all -- * * 0.0.0.0/0 192.168.254.1 262 43999 ACCEPT all -- * * 0.0.0.0/0 192.168.0.128 914 69272 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.1 tcp dpt:22
Chain FORWARD (policy ACCEPT 36239 packets, 27M bytes) pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 19041 packets, 11M bytes) pkts bytes target prot opt in out source destination
ip route list 192.168.1.0/24 dev eth2 proto kernel scope link src 192.168.1.1 192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.128 192.168.254.0/24 dev eth0 proto kernel scope link src 192.168.254.1 default via 192.168.254.254 dev eth0
ip route list table intranet default via 192.168.1.254 dev eth2
Une idée ?
Cf. çi-dessus, et si je n'ai pas bien compris ton problème, je te remercie de bien vouloir préciser.
Cordialement,
Ah mais moi aussi :).
JKB
JKB
Le 18-02-2005, à propos de Re: Deux passerelles (Linux) et port forwarding..., Bruno Bonfils écrivait dans fr.comp.reseaux.ip :
JKB writes:
Une idée ?>
Tu as essaye de desactiver les rp_filter et autre machin plus ou moins inutiles ?
Seulement "echo 0 > /proc/sys/net/ipv4/conf/eth2/rp_filter"
JKB
Le 18-02-2005, à propos de
Re: Deux passerelles (Linux) et port forwarding...,
Bruno Bonfils écrivait dans fr.comp.reseaux.ip :
JKB <knatschke@koenigsberg.fr> writes:
Une idée ?>
Tu as essaye de desactiver les rp_filter et autre machin plus ou moins
inutiles ?
Seulement "echo 0 > /proc/sys/net/ipv4/conf/eth2/rp_filter"
Le 18-02-2005, à propos de Re: Deux passerelles (Linux) et port forwarding..., Bruno Bonfils écrivait dans fr.comp.reseaux.ip :
JKB writes:
Une idée ?>
Tu as essaye de desactiver les rp_filter et autre machin plus ou moins inutiles ?
Seulement "echo 0 > /proc/sys/net/ipv4/conf/eth2/rp_filter"
JKB
point
Bonjour,
Ton problème me dépasse largement, mais comme je suis tout ouïe, je vais y apporter ma contribution en essayent d'éclaircir un peu.
Pour comprendre je me suis fait un petit schéma.
Donc: Une machine linux: 3 carte réseaux. avec: eth0 d'ip 192.168.254.1 qui vas ver routeur nat internet 1 eth1 d'ip 192.168.0.128 intranet eth2 d'ip 192.168.1.1 qui vas ver routeur nat internet 2
eth0 doit avoir comme passerelle l'ip privé du routeur net internet 1 et eth2 doit avoir comme passerelle l'ip privé du routeur net internet 2
Si cela été comme marqué si dessus les deux passerelles entreraient en conflit, a mois qu'il y est un règle sur l'adressage. Mais j'ai cru comprendre que tu veux faire une règle sur les ports.
Entre eth0 et eth1 tu as un nat. Et un dnat entre eth0:8000 et 192.168.0.130:8080 (la je suis pas certain d'avoir tout compris) (192.168.0.130 étend le serveur en intranet)
Entre eth2 et eth1: qu'es que tu as ? tu Nate ? tu routeur ?
Car tu veux que la communication fonctionne sur les port 3000 et 3001 entre internet 2 donc eth2 et le serveur intranet d'ip 192.168.0.130 via eth1
Voila se que j'ai compris et aussi se que je n'ai pas compris!
De la compréhension naîtra la solution.
@+
JM
Bonjour,
Ton problème me dépasse largement, mais comme je suis tout ouïe, je vais
y apporter ma contribution en essayent d'éclaircir un peu.
Pour comprendre je me suis fait un petit schéma.
Donc:
Une machine linux: 3 carte réseaux.
avec:
eth0 d'ip 192.168.254.1 qui vas ver routeur nat internet 1
eth1 d'ip 192.168.0.128 intranet
eth2 d'ip 192.168.1.1 qui vas ver routeur nat internet 2
eth0 doit avoir comme passerelle l'ip privé du routeur net internet 1
et
eth2 doit avoir comme passerelle l'ip privé du routeur net internet 2
Si cela été comme marqué si dessus les deux passerelles entreraient en
conflit, a mois qu'il y est un règle sur l'adressage. Mais j'ai cru
comprendre que tu veux faire une règle sur les ports.
Entre eth0 et eth1 tu as un nat.
Et un dnat entre eth0:8000 et 192.168.0.130:8080 (la je suis pas certain
d'avoir tout compris)
(192.168.0.130 étend le serveur en intranet)
Entre eth2 et eth1: qu'es que tu as ? tu Nate ? tu routeur ?
Car tu veux que la communication fonctionne sur les port 3000 et 3001
entre internet 2 donc eth2 et le serveur intranet d'ip 192.168.0.130 via
eth1
Voila se que j'ai compris et aussi se que je n'ai pas compris!
Ton problème me dépasse largement, mais comme je suis tout ouïe, je vais y apporter ma contribution en essayent d'éclaircir un peu.
Pour comprendre je me suis fait un petit schéma.
Donc: Une machine linux: 3 carte réseaux. avec: eth0 d'ip 192.168.254.1 qui vas ver routeur nat internet 1 eth1 d'ip 192.168.0.128 intranet eth2 d'ip 192.168.1.1 qui vas ver routeur nat internet 2
eth0 doit avoir comme passerelle l'ip privé du routeur net internet 1 et eth2 doit avoir comme passerelle l'ip privé du routeur net internet 2
Si cela été comme marqué si dessus les deux passerelles entreraient en conflit, a mois qu'il y est un règle sur l'adressage. Mais j'ai cru comprendre que tu veux faire une règle sur les ports.
Entre eth0 et eth1 tu as un nat. Et un dnat entre eth0:8000 et 192.168.0.130:8080 (la je suis pas certain d'avoir tout compris) (192.168.0.130 étend le serveur en intranet)
Entre eth2 et eth1: qu'es que tu as ? tu Nate ? tu routeur ?
Car tu veux que la communication fonctionne sur les port 3000 et 3001 entre internet 2 donc eth2 et le serveur intranet d'ip 192.168.0.130 via eth1
Voila se que j'ai compris et aussi se que je n'ai pas compris!
De la compréhension naîtra la solution.
@+
JM
Guillaume
Ainsi parla JKB en cette mémorable journée du vendredi 18 Février 2005 16:34 :
Re - ,
J'utilise iproute. Question bête : pourquoi ?
Parce qu'il y a deux passerelles, donc deux routes par défaut...
Hm. Je n'avais pas bien compris, ça va mieux maintenant avec tes précisions et un schéma sur papier (je ne vous le fais pas partager, je ne suis pas très doué en ascii-art).
C'est vrai que c'est pointu ton truc... je me permets tout de même quelques suggestions :
- Du temps de ipchains, l'ordre de passage des règles avait son importance. Est-ce encore le cas dans iptables ? Si oui, as-tu essayé de passer d'abord la règle conçernant le port 3000, et ensuite celle sur le port 8080 ? Est-ce que dans ce cas le problème s'inverse ? Et pour iproute pareil, l'ordre des instructions est-il important et change-t-il quelque chose ?
- La plage IP de "Internet2" t'est-elle connue, ou est-tu contraint de prendre en compte 0.0.0.0/0 ? Le routeur DSL transmet tout, ça arrive sur eth2 où le DNAT prend le relais, mais si tu connais la plage d'origine, tu pourrais la préciser en "source" dans ta table PREROUTING, et faire correspondre la table de routage pour forcer le retour via eth2 / le routeur "Internet2", donc sur la bonne interface, puisque c'est en sortie qu'est le problème.
- As-tu essayé de détailler encore plus tes chaînes PREROUTING, en précisant l'interface d'entrée du trafic (à défaut de pouvoir préciser la plage IP) ? Si ça ne sert à rien à l'aller, ça l'aiderait peut-être à retrouver son chemin au retour (on peut rêver).
Bon courage.
-- Guillaume
Ainsi parla JKB en cette mémorable journée du vendredi 18 Février 2005
16:34 :
Re - ,
J'utilise iproute.
Question bête : pourquoi ?
Parce qu'il y a deux passerelles, donc deux routes par défaut...
Hm. Je n'avais pas bien compris, ça va mieux maintenant avec tes
précisions et un schéma sur papier (je ne vous le fais pas partager,
je ne suis pas très doué en ascii-art).
C'est vrai que c'est pointu ton truc... je me permets tout de même
quelques suggestions :
- Du temps de ipchains, l'ordre de passage des règles avait son
importance. Est-ce encore le cas dans iptables ? Si oui, as-tu essayé
de passer d'abord la règle conçernant le port 3000, et ensuite celle
sur le port 8080 ? Est-ce que dans ce cas le problème s'inverse ? Et
pour iproute pareil, l'ordre des instructions est-il important et
change-t-il quelque chose ?
- La plage IP de "Internet2" t'est-elle connue, ou est-tu contraint
de prendre en compte 0.0.0.0/0 ? Le routeur DSL transmet tout, ça
arrive sur eth2 où le DNAT prend le relais, mais si tu connais la
plage d'origine, tu pourrais la préciser en "source" dans ta table
PREROUTING, et faire correspondre la table de routage pour forcer
le retour via eth2 / le routeur "Internet2", donc sur la bonne
interface, puisque c'est en sortie qu'est le problème.
- As-tu essayé de détailler encore plus tes chaînes PREROUTING,
en précisant l'interface d'entrée du trafic (à défaut de pouvoir
préciser la plage IP) ? Si ça ne sert à rien à l'aller, ça
l'aiderait peut-être à retrouver son chemin au retour (on peut
rêver).
Ainsi parla JKB en cette mémorable journée du vendredi 18 Février 2005 16:34 :
Re - ,
J'utilise iproute. Question bête : pourquoi ?
Parce qu'il y a deux passerelles, donc deux routes par défaut...
Hm. Je n'avais pas bien compris, ça va mieux maintenant avec tes précisions et un schéma sur papier (je ne vous le fais pas partager, je ne suis pas très doué en ascii-art).
C'est vrai que c'est pointu ton truc... je me permets tout de même quelques suggestions :
- Du temps de ipchains, l'ordre de passage des règles avait son importance. Est-ce encore le cas dans iptables ? Si oui, as-tu essayé de passer d'abord la règle conçernant le port 3000, et ensuite celle sur le port 8080 ? Est-ce que dans ce cas le problème s'inverse ? Et pour iproute pareil, l'ordre des instructions est-il important et change-t-il quelque chose ?
- La plage IP de "Internet2" t'est-elle connue, ou est-tu contraint de prendre en compte 0.0.0.0/0 ? Le routeur DSL transmet tout, ça arrive sur eth2 où le DNAT prend le relais, mais si tu connais la plage d'origine, tu pourrais la préciser en "source" dans ta table PREROUTING, et faire correspondre la table de routage pour forcer le retour via eth2 / le routeur "Internet2", donc sur la bonne interface, puisque c'est en sortie qu'est le problème.
- As-tu essayé de détailler encore plus tes chaînes PREROUTING, en précisant l'interface d'entrée du trafic (à défaut de pouvoir préciser la plage IP) ? Si ça ne sert à rien à l'aller, ça l'aiderait peut-être à retrouver son chemin au retour (on peut rêver).
Bon courage.
-- Guillaume
JKB
Le 18-02-2005, à propos de Re: Deux passerelles (Linux) et port forwarding..., point écrivait dans fr.comp.reseaux.ip :
Bonjour,
Ton problème me dépasse largement, mais comme je suis tout ouïe, je vais y apporter ma contribution en essayent d'éclaircir un peu.
Pour comprendre je me suis fait un petit schéma.
Donc: Une machine linux: 3 carte réseaux. avec: eth0 d'ip 192.168.254.1 qui vas ver routeur nat internet 1 eth1 d'ip 192.168.0.128 intranet eth2 d'ip 192.168.1.1 qui vas ver routeur nat internet 2
eth0 doit avoir comme passerelle l'ip privé du routeur net internet 1 et eth2 doit avoir comme passerelle l'ip privé du routeur net internet 2
Si cela été comme marqué si dessus les deux passerelles entreraient en conflit, a mois qu'il y est un règle sur l'adressage. Mais j'ai cru comprendre que tu veux faire une règle sur les ports.
Entre eth0 et eth1 tu as un nat. Et un dnat entre eth0:8000 et 192.168.0.130:8080 (la je suis pas certain d'avoir tout compris) (192.168.0.130 étend le serveur en intranet)
Entre eth2 et eth1: qu'es que tu as ? tu Nate ? tu routeur ?
Rien. Je route par ma passerelle Linux. eth2:3000 et 3001 -> 192.168.0.130:3000 et 3001 Et port d'origine eth1:192.168.0.130:3000 et 3001 sont censés être redirigés sur eth2.
Tout le reste est bon ;-)
Cordialement,
JKB
Le 18-02-2005, à propos de
Re: Deux passerelles (Linux) et port forwarding...,
point écrivait dans fr.comp.reseaux.ip :
Bonjour,
Ton problème me dépasse largement, mais comme je suis tout ouïe, je vais
y apporter ma contribution en essayent d'éclaircir un peu.
Pour comprendre je me suis fait un petit schéma.
Donc:
Une machine linux: 3 carte réseaux.
avec:
eth0 d'ip 192.168.254.1 qui vas ver routeur nat internet 1
eth1 d'ip 192.168.0.128 intranet
eth2 d'ip 192.168.1.1 qui vas ver routeur nat internet 2
eth0 doit avoir comme passerelle l'ip privé du routeur net internet 1
et
eth2 doit avoir comme passerelle l'ip privé du routeur net internet 2
Si cela été comme marqué si dessus les deux passerelles entreraient en
conflit, a mois qu'il y est un règle sur l'adressage. Mais j'ai cru
comprendre que tu veux faire une règle sur les ports.
Entre eth0 et eth1 tu as un nat.
Et un dnat entre eth0:8000 et 192.168.0.130:8080 (la je suis pas certain
d'avoir tout compris)
(192.168.0.130 étend le serveur en intranet)
Entre eth2 et eth1: qu'es que tu as ? tu Nate ? tu routeur ?
Rien. Je route par ma passerelle Linux.
eth2:3000 et 3001 -> 192.168.0.130:3000 et 3001
Et port d'origine eth1:192.168.0.130:3000 et 3001 sont censés être
redirigés sur eth2.
Le 18-02-2005, à propos de Re: Deux passerelles (Linux) et port forwarding..., point écrivait dans fr.comp.reseaux.ip :
Bonjour,
Ton problème me dépasse largement, mais comme je suis tout ouïe, je vais y apporter ma contribution en essayent d'éclaircir un peu.
Pour comprendre je me suis fait un petit schéma.
Donc: Une machine linux: 3 carte réseaux. avec: eth0 d'ip 192.168.254.1 qui vas ver routeur nat internet 1 eth1 d'ip 192.168.0.128 intranet eth2 d'ip 192.168.1.1 qui vas ver routeur nat internet 2
eth0 doit avoir comme passerelle l'ip privé du routeur net internet 1 et eth2 doit avoir comme passerelle l'ip privé du routeur net internet 2
Si cela été comme marqué si dessus les deux passerelles entreraient en conflit, a mois qu'il y est un règle sur l'adressage. Mais j'ai cru comprendre que tu veux faire une règle sur les ports.
Entre eth0 et eth1 tu as un nat. Et un dnat entre eth0:8000 et 192.168.0.130:8080 (la je suis pas certain d'avoir tout compris) (192.168.0.130 étend le serveur en intranet)
Entre eth2 et eth1: qu'es que tu as ? tu Nate ? tu routeur ?
Rien. Je route par ma passerelle Linux. eth2:3000 et 3001 -> 192.168.0.130:3000 et 3001 Et port d'origine eth1:192.168.0.130:3000 et 3001 sont censés être redirigés sur eth2.
Tout le reste est bon ;-)
Cordialement,
JKB
JKB
Le 18-02-2005, à propos de Re: Deux passerelles (Linux) et port forwarding..., Guillaume écrivait dans fr.comp.reseaux.ip :
Ainsi parla JKB en cette mémorable journée du vendredi 18 Février 2005 16:34 :
Re - ,
J'utilise iproute. Question bête : pourquoi ?
Parce qu'il y a deux passerelles, donc deux routes par défaut...
Hm. Je n'avais pas bien compris, ça va mieux maintenant avec tes précisions et un schéma sur papier (je ne vous le fais pas partager, je ne suis pas très doué en ascii-art).
C'est vrai que c'est pointu ton truc... je me permets tout de même quelques suggestions :
- Du temps de ipchains, l'ordre de passage des règles avait son importance. Est-ce encore le cas dans iptables ? Si oui, as-tu essayé de passer d'abord la règle conçernant le port 3000, et ensuite celle sur le port 8080 ? Est-ce que dans ce cas le problème s'inverse ? Et pour iproute pareil, l'ordre des instructions est-il important et change-t-il quelque chose ?
L'ordre a une importance. Mais c'est le retour qui coince, lorsque 192.168.0.130 envoie un paquet sur le port 3000, il est routé par eth0 et non par eth2 alors qu'il est bien marqué par la règle de la table mangle...
- La plage IP de "Internet2" t'est-elle connue, ou est-tu contraint
Elle n'est pas connue...
de prendre en compte 0.0.0.0/0 ? Le routeur DSL transmet tout, ça arrive sur eth2 où le DNAT prend le relais, mais si tu connais la plage d'origine, tu pourrais la préciser en "source" dans ta table PREROUTING, et faire correspondre la table de routage pour forcer le retour via eth2 / le routeur "Internet2", donc sur la bonne interface, puisque c'est en sortie qu'est le problème.
Non. J'ai essayé. Le problème est que la table iproute intranet est superbement ignorée (j'ai loggué les sorties d'iptables), et c'est pour cela que mes paquets sortent par eth0 !
- As-tu essayé de détailler encore plus tes chaînes PREROUTING, en précisant l'interface d'entrée du trafic (à défaut de pouvoir préciser la plage IP) ? Si ça ne sert à rien à l'aller, ça l'aiderait peut-être à retrouver son chemin au retour (on peut rêver).
Oui. Je pensais aussi que le problème venait d'un rebond sur eth2 (à cause d'un problème de route dans la table intranet qui m'aurait échappé). Mais forcer la source sur eth1 dans la table mangle ne change rien.
Bon courage.
Merci, mais je désespère...
JKB
Le 18-02-2005, à propos de
Re: Deux passerelles (Linux) et port forwarding...,
Guillaume écrivait dans fr.comp.reseaux.ip :
Ainsi parla JKB en cette mémorable journée du vendredi 18 Février 2005
16:34 :
Re - ,
J'utilise iproute.
Question bête : pourquoi ?
Parce qu'il y a deux passerelles, donc deux routes par défaut...
Hm. Je n'avais pas bien compris, ça va mieux maintenant avec tes
précisions et un schéma sur papier (je ne vous le fais pas partager,
je ne suis pas très doué en ascii-art).
C'est vrai que c'est pointu ton truc... je me permets tout de même
quelques suggestions :
- Du temps de ipchains, l'ordre de passage des règles avait son
importance. Est-ce encore le cas dans iptables ? Si oui, as-tu essayé
de passer d'abord la règle conçernant le port 3000, et ensuite celle
sur le port 8080 ? Est-ce que dans ce cas le problème s'inverse ? Et
pour iproute pareil, l'ordre des instructions est-il important et
change-t-il quelque chose ?
L'ordre a une importance. Mais c'est le retour qui coince, lorsque
192.168.0.130 envoie un paquet sur le port 3000, il est routé par
eth0 et non par eth2 alors qu'il est bien marqué par la règle de la
table mangle...
- La plage IP de "Internet2" t'est-elle connue, ou est-tu contraint
Elle n'est pas connue...
de prendre en compte 0.0.0.0/0 ? Le routeur DSL transmet tout, ça
arrive sur eth2 où le DNAT prend le relais, mais si tu connais la
plage d'origine, tu pourrais la préciser en "source" dans ta table
PREROUTING, et faire correspondre la table de routage pour forcer
le retour via eth2 / le routeur "Internet2", donc sur la bonne
interface, puisque c'est en sortie qu'est le problème.
Non. J'ai essayé. Le problème est que la table iproute intranet est
superbement ignorée (j'ai loggué les sorties d'iptables), et c'est
pour cela que mes paquets sortent par eth0 !
- As-tu essayé de détailler encore plus tes chaînes PREROUTING,
en précisant l'interface d'entrée du trafic (à défaut de pouvoir
préciser la plage IP) ? Si ça ne sert à rien à l'aller, ça
l'aiderait peut-être à retrouver son chemin au retour (on peut
rêver).
Oui. Je pensais aussi que le problème venait d'un rebond sur eth2 (à
cause d'un problème de route dans la table intranet qui m'aurait
échappé). Mais forcer la source sur eth1 dans la table mangle ne
change rien.
Le 18-02-2005, à propos de Re: Deux passerelles (Linux) et port forwarding..., Guillaume écrivait dans fr.comp.reseaux.ip :
Ainsi parla JKB en cette mémorable journée du vendredi 18 Février 2005 16:34 :
Re - ,
J'utilise iproute. Question bête : pourquoi ?
Parce qu'il y a deux passerelles, donc deux routes par défaut...
Hm. Je n'avais pas bien compris, ça va mieux maintenant avec tes précisions et un schéma sur papier (je ne vous le fais pas partager, je ne suis pas très doué en ascii-art).
C'est vrai que c'est pointu ton truc... je me permets tout de même quelques suggestions :
- Du temps de ipchains, l'ordre de passage des règles avait son importance. Est-ce encore le cas dans iptables ? Si oui, as-tu essayé de passer d'abord la règle conçernant le port 3000, et ensuite celle sur le port 8080 ? Est-ce que dans ce cas le problème s'inverse ? Et pour iproute pareil, l'ordre des instructions est-il important et change-t-il quelque chose ?
L'ordre a une importance. Mais c'est le retour qui coince, lorsque 192.168.0.130 envoie un paquet sur le port 3000, il est routé par eth0 et non par eth2 alors qu'il est bien marqué par la règle de la table mangle...
- La plage IP de "Internet2" t'est-elle connue, ou est-tu contraint
Elle n'est pas connue...
de prendre en compte 0.0.0.0/0 ? Le routeur DSL transmet tout, ça arrive sur eth2 où le DNAT prend le relais, mais si tu connais la plage d'origine, tu pourrais la préciser en "source" dans ta table PREROUTING, et faire correspondre la table de routage pour forcer le retour via eth2 / le routeur "Internet2", donc sur la bonne interface, puisque c'est en sortie qu'est le problème.
Non. J'ai essayé. Le problème est que la table iproute intranet est superbement ignorée (j'ai loggué les sorties d'iptables), et c'est pour cela que mes paquets sortent par eth0 !
- As-tu essayé de détailler encore plus tes chaînes PREROUTING, en précisant l'interface d'entrée du trafic (à défaut de pouvoir préciser la plage IP) ? Si ça ne sert à rien à l'aller, ça l'aiderait peut-être à retrouver son chemin au retour (on peut rêver).
Oui. Je pensais aussi que le problème venait d'un rebond sur eth2 (à cause d'un problème de route dans la table intranet qui m'aurait échappé). Mais forcer la source sur eth1 dans la table mangle ne change rien.
Bon courage.
Merci, mais je désespère...
JKB
Guillaume
Ainsi parla JKB en cette mémorable journée du samedi 19 Février 2005 09:44 :
Bon courage.
Merci, mais je désespère...
Bah non : je connais bien ce sentiment depuis que je m'intéresse aux manchots, mais nécessité fait loi, et tu vas bien finir par te dépanner :).
L'ordre a une importance. Mais c'est le retour qui coince, lorsque 192.168.0.130 envoie un paquet sur le port 3000, il est routé par eth0 et non par eth2 alors qu'il est bien marqué par la règle de la table mangle...
Il (0.130) renvoie un paquet, mais c'est toujours en réponse à une requête extérieure.
- La plage IP de "Internet2" t'est-elle connue, ou est-tu contraint Elle n'est pas connue...
Et c'est bien dommage, je l'avais plutôt compris comme un site distant de la même entité, un MAN quoi.
Non. J'ai essayé. Le problème est que la table iproute intranet est superbement ignorée (j'ai loggué les sorties d'iptables), et c'est pour cela que mes paquets sortent par eth0 !
Hm... le retour du NAT se fait sur la mauvaise interface.
Bon, il reste toujours deux solutions, pour plier le truc :
1) Tu tagges les entêtes de paquets à l'entrée de ta linuxette avant de les NATer vers ton serveur (comme le disait Bruno Bonfils), et au retour tu les renvoies vers l'interface kivabien en te fiant à ces tags.
2) Tu sépares les routeurs pour les dédier respectivement à chaque ligne. Tu qui aimes les vieusetés, il ne te reste pas un bon vieux 486 des familles dans un coin, et deux cartes réseau ?
Allez, courage et bonne humeur !
-- Guillaume
Ainsi parla JKB en cette mémorable journée du samedi 19 Février 2005
09:44 :
Bon courage.
Merci, mais je désespère...
Bah non : je connais bien ce sentiment depuis que je m'intéresse
aux manchots, mais nécessité fait loi, et tu vas bien finir par
te dépanner :).
L'ordre a une importance. Mais c'est le retour qui coince, lorsque
192.168.0.130 envoie un paquet sur le port 3000, il est routé par
eth0 et non par eth2 alors qu'il est bien marqué par la règle de la
table mangle...
Il (0.130) renvoie un paquet, mais c'est toujours en réponse à une
requête extérieure.
- La plage IP de "Internet2" t'est-elle connue, ou est-tu contraint
Elle n'est pas connue...
Et c'est bien dommage, je l'avais plutôt compris comme un site
distant de la même entité, un MAN quoi.
Non. J'ai essayé. Le problème est que la table iproute intranet est
superbement ignorée (j'ai loggué les sorties d'iptables), et c'est
pour cela que mes paquets sortent par eth0 !
Hm... le retour du NAT se fait sur la mauvaise interface.
Bon, il reste toujours deux solutions, pour plier le truc :
1) Tu tagges les entêtes de paquets à l'entrée de ta linuxette avant
de les NATer vers ton serveur (comme le disait Bruno Bonfils), et au
retour tu les renvoies vers l'interface kivabien en te fiant à ces
tags.
2) Tu sépares les routeurs pour les dédier respectivement à chaque
ligne. Tu qui aimes les vieusetés, il ne te reste pas un bon vieux
486 des familles dans un coin, et deux cartes réseau ?
Ainsi parla JKB en cette mémorable journée du samedi 19 Février 2005 09:44 :
Bon courage.
Merci, mais je désespère...
Bah non : je connais bien ce sentiment depuis que je m'intéresse aux manchots, mais nécessité fait loi, et tu vas bien finir par te dépanner :).
L'ordre a une importance. Mais c'est le retour qui coince, lorsque 192.168.0.130 envoie un paquet sur le port 3000, il est routé par eth0 et non par eth2 alors qu'il est bien marqué par la règle de la table mangle...
Il (0.130) renvoie un paquet, mais c'est toujours en réponse à une requête extérieure.
- La plage IP de "Internet2" t'est-elle connue, ou est-tu contraint Elle n'est pas connue...
Et c'est bien dommage, je l'avais plutôt compris comme un site distant de la même entité, un MAN quoi.
Non. J'ai essayé. Le problème est que la table iproute intranet est superbement ignorée (j'ai loggué les sorties d'iptables), et c'est pour cela que mes paquets sortent par eth0 !
Hm... le retour du NAT se fait sur la mauvaise interface.
Bon, il reste toujours deux solutions, pour plier le truc :
1) Tu tagges les entêtes de paquets à l'entrée de ta linuxette avant de les NATer vers ton serveur (comme le disait Bruno Bonfils), et au retour tu les renvoies vers l'interface kivabien en te fiant à ces tags.
2) Tu sépares les routeurs pour les dédier respectivement à chaque ligne. Tu qui aimes les vieusetés, il ne te reste pas un bon vieux 486 des familles dans un coin, et deux cartes réseau ?
Allez, courage et bonne humeur !
-- Guillaume
JKB
Le 19-02-2005, à propos de Re: Deux passerelles (Linux) et port forwarding..., Guillaume écrivait dans fr.comp.reseaux.ip :
Ainsi parla JKB en cette mémorable journée du samedi 19 Février 2005 09:44 :
Bon courage.
Merci, mais je désespère...
Bah non : je connais bien ce sentiment depuis que je m'intéresse aux manchots, mais nécessité fait loi, et tu vas bien finir par te dépanner :).
L'ordre a une importance. Mais c'est le retour qui coince, lorsque 192.168.0.130 envoie un paquet sur le port 3000, il est routé par eth0 et non par eth2 alors qu'il est bien marqué par la règle de la table mangle...
Il (0.130) renvoie un paquet, mais c'est toujours en réponse à une requête extérieure.
- La plage IP de "Internet2" t'est-elle connue, ou est-tu contraint Elle n'est pas connue...
Et c'est bien dommage, je l'avais plutôt compris comme un site distant de la même entité, un MAN quoi.
Non. J'ai essayé. Le problème est que la table iproute intranet est superbement ignorée (j'ai loggué les sorties d'iptables), et c'est pour cela que mes paquets sortent par eth0 !
Hm... le retour du NAT se fait sur la mauvaise interface.
Bon, il reste toujours deux solutions, pour plier le truc :
1) Tu tagges les entêtes de paquets à l'entrée de ta linuxette avant de les NATer vers ton serveur (comme le disait Bruno Bonfils), et au retour tu les renvoies vers l'interface kivabien en te fiant à ces tags.
Mais ils sont taggués !...
JKB
Le 19-02-2005, à propos de
Re: Deux passerelles (Linux) et port forwarding...,
Guillaume écrivait dans fr.comp.reseaux.ip :
Ainsi parla JKB en cette mémorable journée du samedi 19 Février 2005
09:44 :
Bon courage.
Merci, mais je désespère...
Bah non : je connais bien ce sentiment depuis que je m'intéresse
aux manchots, mais nécessité fait loi, et tu vas bien finir par
te dépanner :).
L'ordre a une importance. Mais c'est le retour qui coince, lorsque
192.168.0.130 envoie un paquet sur le port 3000, il est routé par
eth0 et non par eth2 alors qu'il est bien marqué par la règle de la
table mangle...
Il (0.130) renvoie un paquet, mais c'est toujours en réponse à une
requête extérieure.
- La plage IP de "Internet2" t'est-elle connue, ou est-tu contraint
Elle n'est pas connue...
Et c'est bien dommage, je l'avais plutôt compris comme un site
distant de la même entité, un MAN quoi.
Non. J'ai essayé. Le problème est que la table iproute intranet est
superbement ignorée (j'ai loggué les sorties d'iptables), et c'est
pour cela que mes paquets sortent par eth0 !
Hm... le retour du NAT se fait sur la mauvaise interface.
Bon, il reste toujours deux solutions, pour plier le truc :
1) Tu tagges les entêtes de paquets à l'entrée de ta linuxette avant
de les NATer vers ton serveur (comme le disait Bruno Bonfils), et au
retour tu les renvoies vers l'interface kivabien en te fiant à ces
tags.
Le 19-02-2005, à propos de Re: Deux passerelles (Linux) et port forwarding..., Guillaume écrivait dans fr.comp.reseaux.ip :
Ainsi parla JKB en cette mémorable journée du samedi 19 Février 2005 09:44 :
Bon courage.
Merci, mais je désespère...
Bah non : je connais bien ce sentiment depuis que je m'intéresse aux manchots, mais nécessité fait loi, et tu vas bien finir par te dépanner :).
L'ordre a une importance. Mais c'est le retour qui coince, lorsque 192.168.0.130 envoie un paquet sur le port 3000, il est routé par eth0 et non par eth2 alors qu'il est bien marqué par la règle de la table mangle...
Il (0.130) renvoie un paquet, mais c'est toujours en réponse à une requête extérieure.
- La plage IP de "Internet2" t'est-elle connue, ou est-tu contraint Elle n'est pas connue...
Et c'est bien dommage, je l'avais plutôt compris comme un site distant de la même entité, un MAN quoi.
Non. J'ai essayé. Le problème est que la table iproute intranet est superbement ignorée (j'ai loggué les sorties d'iptables), et c'est pour cela que mes paquets sortent par eth0 !
Hm... le retour du NAT se fait sur la mauvaise interface.
Bon, il reste toujours deux solutions, pour plier le truc :
1) Tu tagges les entêtes de paquets à l'entrée de ta linuxette avant de les NATer vers ton serveur (comme le disait Bruno Bonfils), et au retour tu les renvoies vers l'interface kivabien en te fiant à ces tags.