Bonjour à tous,
J'ai un souci, un truc incompréhensible... Considérons une machine
qui possède trois cartes réseau avec trois adresses :
192.168.1.1 -> eth2 sur un routeur ADSL et une adresse IP fixe
publique
192.168.254.1 -> eth0, même configuration
192.168.0.128 -> eth1, réseau local.
Seuls trois ports sont autorisés sur eth2 : ssh et les 3000 et 3001.
Le ssh fonctionne, donc l'interface est bien configurée. Par contre,
pas moyen de forwarder les ports 3000 et 3001 sur une machine du
réseau local.
Pour information :
Root kant:[~] > ip rule list
0: from all lookup local
32763: from all fwmark 0xbb9 lookup intranet
32764: from all fwmark 0xbb8 lookup intranet
Root kant:[~] > ip route list table intranet
default via 192.168.1.254 dev eth2
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere kant.astelys.fr
ACCEPT all -- anywhere bergson.astelys.fr
ACCEPT tcp -- anywhere thibon.astelys.fr tcp dpt:ssh
ACCEPT tcp -- anywhere thibon.astelys.fr tcp
dpt:3000
ACCEPT tcp -- anywhere thibon.astelys.fr tcp
dpt:3001
Root kant:[~] > iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere kant.astelys.fr tcp
dpt:8000 to:192.168.0.130:8080
DNAT tcp -- anywhere thibon.astelys.fr tcp
dpt:3000 to:192.168.0.130:3000
DNAT tcp -- anywhere thibon.astelys.fr tcp
dpt:3001 to:192.168.0.130:3001
Root kant:[~] > iptables -L -t mangle
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
MARK tcp -- anywhere anywhere tcp
dpt:3000 MARK set 0xbb8
MARK tcp -- anywhere anywhere tcp
dpt:3001 MARK set 0xbb9
Je ne vois vraiment pas ce qui coince. La machine est une UltraSparc
tournant sous Debian (noyau officiel 2.4.29). Je précise que je vois
arriver les paquets sur eth2:3000, mais que ceux-ci sont ignorés par
les règles de la table nat d'iptables...
Une idée ?
Bonjour à tous,
J'ai un souci, un truc incompréhensible... Considérons une machine
qui possède trois cartes réseau avec trois adresses :
192.168.1.1 -> eth2 sur un routeur ADSL et une adresse IP fixe
publique
192.168.254.1 -> eth0, même configuration
192.168.0.128 -> eth1, réseau local.
Seuls trois ports sont autorisés sur eth2 : ssh et les 3000 et 3001.
Le ssh fonctionne, donc l'interface est bien configurée. Par contre,
pas moyen de forwarder les ports 3000 et 3001 sur une machine du
réseau local.
Pour information :
Root kant:[~] > ip rule list
0: from all lookup local
32763: from all fwmark 0xbb9 lookup intranet
32764: from all fwmark 0xbb8 lookup intranet
Root kant:[~] > ip route list table intranet
default via 192.168.1.254 dev eth2
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere kant.astelys.fr
ACCEPT all -- anywhere bergson.astelys.fr
ACCEPT tcp -- anywhere thibon.astelys.fr tcp dpt:ssh
ACCEPT tcp -- anywhere thibon.astelys.fr tcp
dpt:3000
ACCEPT tcp -- anywhere thibon.astelys.fr tcp
dpt:3001
Root kant:[~] > iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere kant.astelys.fr tcp
dpt:8000 to:192.168.0.130:8080
DNAT tcp -- anywhere thibon.astelys.fr tcp
dpt:3000 to:192.168.0.130:3000
DNAT tcp -- anywhere thibon.astelys.fr tcp
dpt:3001 to:192.168.0.130:3001
Root kant:[~] > iptables -L -t mangle
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
MARK tcp -- anywhere anywhere tcp
dpt:3000 MARK set 0xbb8
MARK tcp -- anywhere anywhere tcp
dpt:3001 MARK set 0xbb9
Je ne vois vraiment pas ce qui coince. La machine est une UltraSparc
tournant sous Debian (noyau officiel 2.4.29). Je précise que je vois
arriver les paquets sur eth2:3000, mais que ceux-ci sont ignorés par
les règles de la table nat d'iptables...
Une idée ?
Bonjour à tous,
J'ai un souci, un truc incompréhensible... Considérons une machine
qui possède trois cartes réseau avec trois adresses :
192.168.1.1 -> eth2 sur un routeur ADSL et une adresse IP fixe
publique
192.168.254.1 -> eth0, même configuration
192.168.0.128 -> eth1, réseau local.
Seuls trois ports sont autorisés sur eth2 : ssh et les 3000 et 3001.
Le ssh fonctionne, donc l'interface est bien configurée. Par contre,
pas moyen de forwarder les ports 3000 et 3001 sur une machine du
réseau local.
Pour information :
Root kant:[~] > ip rule list
0: from all lookup local
32763: from all fwmark 0xbb9 lookup intranet
32764: from all fwmark 0xbb8 lookup intranet
Root kant:[~] > ip route list table intranet
default via 192.168.1.254 dev eth2
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere kant.astelys.fr
ACCEPT all -- anywhere bergson.astelys.fr
ACCEPT tcp -- anywhere thibon.astelys.fr tcp dpt:ssh
ACCEPT tcp -- anywhere thibon.astelys.fr tcp
dpt:3000
ACCEPT tcp -- anywhere thibon.astelys.fr tcp
dpt:3001
Root kant:[~] > iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere kant.astelys.fr tcp
dpt:8000 to:192.168.0.130:8080
DNAT tcp -- anywhere thibon.astelys.fr tcp
dpt:3000 to:192.168.0.130:3000
DNAT tcp -- anywhere thibon.astelys.fr tcp
dpt:3001 to:192.168.0.130:3001
Root kant:[~] > iptables -L -t mangle
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
MARK tcp -- anywhere anywhere tcp
dpt:3000 MARK set 0xbb8
MARK tcp -- anywhere anywhere tcp
dpt:3001 MARK set 0xbb9
Je ne vois vraiment pas ce qui coince. La machine est une UltraSparc
tournant sous Debian (noyau officiel 2.4.29). Je précise que je vois
arriver les paquets sur eth2:3000, mais que ceux-ci sont ignorés par
les règles de la table nat d'iptables...
Une idée ?
Dans le message <news:,
*JKB* tapota sur f.c.o.l.configuration :Bonjour à tous,
Bonjour,
J'ai un souci, un truc incompréhensible... Considérons une machine
qui possède trois cartes réseau avec trois adresses :
192.168.1.1 -> eth2 sur un routeur ADSL et une adresse IP fixe
publique
192.168.254.1 -> eth0, même configuration
192.168.0.128 -> eth1, réseau local.
Seuls trois ports sont autorisés sur eth2 : ssh et les 3000 et 3001.
Le ssh fonctionne, donc l'interface est bien configurée. Par contre,
pas moyen de forwarder les ports 3000 et 3001 sur une machine du
réseau local.
Pour information :
Root kant:[~] > ip rule list
0: from all lookup local
32763: from all fwmark 0xbb9 lookup intranet
32764: from all fwmark 0xbb8 lookup intranet
Ici vous dites que tous les paquets marqués 0xbb8 et 0xbb9, venant de
n'importe où, doivent utiliser la table de routage nommée intranet.
Root kant:[~] > ip route list table intranet
default via 192.168.1.254 dev eth2
Dans la table de routage intranet, il n'y a qu'une seule route, une route
par défaut et qui dit que tous les paquets traversant cette table devront
être routés vers la passerelle 192.168.1.254 en passant par l'interface
eth2.
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Ici, on accepte *tout* dès le départ. Les règles suivantes de la chaîne
INPUT ne seront donc jamais traversées. J'imagine que cette règle a peut
être été introduite entre-temps pour faciliter le débuggage de votre
problème.
ACCEPT all -- anywhere kant.astelys.fr
Nous avons ici en adresse de destination un nom d'hôte, mais quelle est
l'adresse IP qui lui est associé sur votre machine ? L'adresse publique ou
l'adresse privée ?
S'il s'agit de l'adresse publique, il y a comme un soucis puisque votre
machine n'a, comme adresses de destination, que des adresses privées
(192.168.1.1, 192.168.254.1 et 192.168.0.128). Donc dans vos règles
iptables, les adresses de destination doivent correspondre exactement aux
adresses de vos interfaces.
La prochaine fois, pensez à ajouter l'option '-n' d'iptables pour avoir la
valeur numérique des adresses et des ports.
ACCEPT all -- anywhere bergson.astelys.fr
ACCEPT tcp -- anywhere thibon.astelys.fr tcp dpt:ssh
ACCEPT tcp -- anywhere thibon.astelys.fr tcp
dpt:3000
ACCEPT tcp -- anywhere thibon.astelys.fr tcp
dpt:3001
Si j'ai bien compris, le trafic à destination des ports 3000 et 3001 doit
être forwardé sur une autre machine et n'est pas à destination de votre
machine. Donc les deux dernières règles ne sont pas dans la bonne chaîne,
elles devraient être placées dans la chaîne FORWARD. En tout cas en restant
dans cette chaîne INPUT, elles n'auront *aucun* effet sur les connexions
forwardées.
Root kant:[~] > iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere kant.astelys.fr tcp
dpt:8000 to:192.168.0.130:8080
DNAT tcp -- anywhere thibon.astelys.fr tcp
dpt:3000 to:192.168.0.130:3000
DNAT tcp -- anywhere thibon.astelys.fr tcp
dpt:3001 to:192.168.0.130:3001
Ici, même remarque sur la destination que précédemment. Est-ce que le nom
d'hôte a pour adresse IP 192.168.1.1 ? Si non, alors les paquets venant de
l'interface eth2 et à destination des ports 3000 et 3001 ne seront jamais
natés.
Root kant:[~] > iptables -L -t mangle
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
MARK tcp -- anywhere anywhere tcp
dpt:3000 MARK set 0xbb8
MARK tcp -- anywhere anywhere tcp
dpt:3001 MARK set 0xbb9
Ici vous demandez à ce que tous les paquets à destination des ports 3000 et
3001 soient marqués. Comme on a vu précédemment, ces paquets marqués doivent
utiliser la table de routage intranet. Donc tous les paquets à destination
des ports 3000 et 3001 venant de n'importe où (eth2, mais aussi eth0 et
eth1) doivent sortir sur l'interface eth2 et router vers la passerelle
192.168.1.254.
Conclusion, les paquets à destination des ports 3000 et 3001 et venant de
l'interface eth2 ressortiront par cette même interface.
Une remarque générale sur vos règles iptables : il n'y figure jamais les
interfaces d'entrée et de sortie, car vous n'avez pas ajouté l'option '-v' à
la commande 'iptables -L'. Il se cache alors peut être des erreurs dans vos
règles iptables que nous ne pouvons voir ici.
D'une manière générale, je recommande toujours d'utiliser la commande
'iptabes-save' pour lister l'ensemble de ces règles.Je ne vois vraiment pas ce qui coince. La machine est une UltraSparc
tournant sous Debian (noyau officiel 2.4.29). Je précise que je vois
arriver les paquets sur eth2:3000, mais que ceux-ci sont ignorés par
les règles de la table nat d'iptables...
À quoi le voyez vous ?
Une idée ?
Oui, supprimer vos règles iproute2 et iptables concernant le marquage des
paquets, c'est-à-dire les règles suivantes :
32763: from all fwmark 0xbb9 lookup intranet
32764: from all fwmark 0xbb8 lookup intranet
et
MARK tcp -- anywhere anywhere tcp dpt:3000
MARK set 0xbb8
MARK tcp -- anywhere anywhere tcp dpt:3001
MARK set 0xbb9
Elles sont inutiles dans ce que vous souhaitez faire et de plus, comme nous
avons pu le voir, font le contraire de ce que vous souhaitez puisqu'elles ne
permettent pas de forwarder vers l'interface eth1 les paquets venant de
l'interface eth2 à destination des ports 3000 et 3001.
Il n'y a pas besoin de règle particulière pour dire où doivent être forwardé
ces paquets venant de eth2. La table de routage principale suffit pour que
les paquets, une fois l'adresse de destination natée, puisse emprunter le
bon chemin, c'est-à-dire sortir sur l'interface eth1.
Par contre, les paquets retours venant de eth1, qui une fois seront «
dénatés » et qui auront donc comme adresse source 192.168.1.1, devront
savoir sur quelle passerelle et quelle interface sortir. Par défaut, nous
avons vu que c'est par l'interface eth0, alors qu'il faudrait, en principe,
qu'ils ressortent par là d'où ils venaient, donc par eth2.
C'est pourquoi que votre règle iproute2 suivante :
32765: from 192.168.1.1 lookup intranet
est à conserver et suffit pour router les paquets sur eth2 puisque la table
de routage intranet indique que les paquets doivent passer par eth2.
Il faudrait aussi s'assurer que le forwarding est activé sur chacune des
interfaces concernées en allant vérifier les entrées suivantes :
/proc/sys/net/ipv4/ip_forward
/proc/sys/net/ipv4/conf/{all,default,eth0,eth1,eth2}/forwarding
et, avant tous tests finaux, faire en sorte que la table des suivis des
connexions (/proc/net/ip_conntrack) soit vide ou du moins ne contienne pas
d'entrée sur des connexions vers les ports 3000 et 3001 pouvant venir de
connexions précédentes. En effet, si les règles de nat ont changé entre
temps, la table ip_conntrack peut avoir conservé des entrées avec les
précédentes règles, empêchant alors aux paquets retours d'être « dénatés »
comme il faut. Malheureusement, pour vider cette table il n'existe pas de
solution fiable. Soit attendre, parfois indéfiniment si la machine reste
connectée, ou soit rebooter... (le déchargement du module ip_conntrack
pouvant bloquer le système).
Dans le message <news:slrnd16m5j.m0d.knatschke@rayleigh.systella.fr>,
*JKB* tapota sur f.c.o.l.configuration :
Bonjour à tous,
Bonjour,
J'ai un souci, un truc incompréhensible... Considérons une machine
qui possède trois cartes réseau avec trois adresses :
192.168.1.1 -> eth2 sur un routeur ADSL et une adresse IP fixe
publique
192.168.254.1 -> eth0, même configuration
192.168.0.128 -> eth1, réseau local.
Seuls trois ports sont autorisés sur eth2 : ssh et les 3000 et 3001.
Le ssh fonctionne, donc l'interface est bien configurée. Par contre,
pas moyen de forwarder les ports 3000 et 3001 sur une machine du
réseau local.
Pour information :
Root kant:[~] > ip rule list
0: from all lookup local
32763: from all fwmark 0xbb9 lookup intranet
32764: from all fwmark 0xbb8 lookup intranet
Ici vous dites que tous les paquets marqués 0xbb8 et 0xbb9, venant de
n'importe où, doivent utiliser la table de routage nommée intranet.
Root kant:[~] > ip route list table intranet
default via 192.168.1.254 dev eth2
Dans la table de routage intranet, il n'y a qu'une seule route, une route
par défaut et qui dit que tous les paquets traversant cette table devront
être routés vers la passerelle 192.168.1.254 en passant par l'interface
eth2.
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Ici, on accepte *tout* dès le départ. Les règles suivantes de la chaîne
INPUT ne seront donc jamais traversées. J'imagine que cette règle a peut
être été introduite entre-temps pour faciliter le débuggage de votre
problème.
ACCEPT all -- anywhere kant.astelys.fr
Nous avons ici en adresse de destination un nom d'hôte, mais quelle est
l'adresse IP qui lui est associé sur votre machine ? L'adresse publique ou
l'adresse privée ?
S'il s'agit de l'adresse publique, il y a comme un soucis puisque votre
machine n'a, comme adresses de destination, que des adresses privées
(192.168.1.1, 192.168.254.1 et 192.168.0.128). Donc dans vos règles
iptables, les adresses de destination doivent correspondre exactement aux
adresses de vos interfaces.
La prochaine fois, pensez à ajouter l'option '-n' d'iptables pour avoir la
valeur numérique des adresses et des ports.
ACCEPT all -- anywhere bergson.astelys.fr
ACCEPT tcp -- anywhere thibon.astelys.fr tcp dpt:ssh
ACCEPT tcp -- anywhere thibon.astelys.fr tcp
dpt:3000
ACCEPT tcp -- anywhere thibon.astelys.fr tcp
dpt:3001
Si j'ai bien compris, le trafic à destination des ports 3000 et 3001 doit
être forwardé sur une autre machine et n'est pas à destination de votre
machine. Donc les deux dernières règles ne sont pas dans la bonne chaîne,
elles devraient être placées dans la chaîne FORWARD. En tout cas en restant
dans cette chaîne INPUT, elles n'auront *aucun* effet sur les connexions
forwardées.
Root kant:[~] > iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere kant.astelys.fr tcp
dpt:8000 to:192.168.0.130:8080
DNAT tcp -- anywhere thibon.astelys.fr tcp
dpt:3000 to:192.168.0.130:3000
DNAT tcp -- anywhere thibon.astelys.fr tcp
dpt:3001 to:192.168.0.130:3001
Ici, même remarque sur la destination que précédemment. Est-ce que le nom
d'hôte a pour adresse IP 192.168.1.1 ? Si non, alors les paquets venant de
l'interface eth2 et à destination des ports 3000 et 3001 ne seront jamais
natés.
Root kant:[~] > iptables -L -t mangle
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
MARK tcp -- anywhere anywhere tcp
dpt:3000 MARK set 0xbb8
MARK tcp -- anywhere anywhere tcp
dpt:3001 MARK set 0xbb9
Ici vous demandez à ce que tous les paquets à destination des ports 3000 et
3001 soient marqués. Comme on a vu précédemment, ces paquets marqués doivent
utiliser la table de routage intranet. Donc tous les paquets à destination
des ports 3000 et 3001 venant de n'importe où (eth2, mais aussi eth0 et
eth1) doivent sortir sur l'interface eth2 et router vers la passerelle
192.168.1.254.
Conclusion, les paquets à destination des ports 3000 et 3001 et venant de
l'interface eth2 ressortiront par cette même interface.
Une remarque générale sur vos règles iptables : il n'y figure jamais les
interfaces d'entrée et de sortie, car vous n'avez pas ajouté l'option '-v' à
la commande 'iptables -L'. Il se cache alors peut être des erreurs dans vos
règles iptables que nous ne pouvons voir ici.
D'une manière générale, je recommande toujours d'utiliser la commande
'iptabes-save' pour lister l'ensemble de ces règles.
Je ne vois vraiment pas ce qui coince. La machine est une UltraSparc
tournant sous Debian (noyau officiel 2.4.29). Je précise que je vois
arriver les paquets sur eth2:3000, mais que ceux-ci sont ignorés par
les règles de la table nat d'iptables...
À quoi le voyez vous ?
Une idée ?
Oui, supprimer vos règles iproute2 et iptables concernant le marquage des
paquets, c'est-à-dire les règles suivantes :
32763: from all fwmark 0xbb9 lookup intranet
32764: from all fwmark 0xbb8 lookup intranet
et
MARK tcp -- anywhere anywhere tcp dpt:3000
MARK set 0xbb8
MARK tcp -- anywhere anywhere tcp dpt:3001
MARK set 0xbb9
Elles sont inutiles dans ce que vous souhaitez faire et de plus, comme nous
avons pu le voir, font le contraire de ce que vous souhaitez puisqu'elles ne
permettent pas de forwarder vers l'interface eth1 les paquets venant de
l'interface eth2 à destination des ports 3000 et 3001.
Il n'y a pas besoin de règle particulière pour dire où doivent être forwardé
ces paquets venant de eth2. La table de routage principale suffit pour que
les paquets, une fois l'adresse de destination natée, puisse emprunter le
bon chemin, c'est-à-dire sortir sur l'interface eth1.
Par contre, les paquets retours venant de eth1, qui une fois seront «
dénatés » et qui auront donc comme adresse source 192.168.1.1, devront
savoir sur quelle passerelle et quelle interface sortir. Par défaut, nous
avons vu que c'est par l'interface eth0, alors qu'il faudrait, en principe,
qu'ils ressortent par là d'où ils venaient, donc par eth2.
C'est pourquoi que votre règle iproute2 suivante :
32765: from 192.168.1.1 lookup intranet
est à conserver et suffit pour router les paquets sur eth2 puisque la table
de routage intranet indique que les paquets doivent passer par eth2.
Il faudrait aussi s'assurer que le forwarding est activé sur chacune des
interfaces concernées en allant vérifier les entrées suivantes :
/proc/sys/net/ipv4/ip_forward
/proc/sys/net/ipv4/conf/{all,default,eth0,eth1,eth2}/forwarding
et, avant tous tests finaux, faire en sorte que la table des suivis des
connexions (/proc/net/ip_conntrack) soit vide ou du moins ne contienne pas
d'entrée sur des connexions vers les ports 3000 et 3001 pouvant venir de
connexions précédentes. En effet, si les règles de nat ont changé entre
temps, la table ip_conntrack peut avoir conservé des entrées avec les
précédentes règles, empêchant alors aux paquets retours d'être « dénatés »
comme il faut. Malheureusement, pour vider cette table il n'existe pas de
solution fiable. Soit attendre, parfois indéfiniment si la machine reste
connectée, ou soit rebooter... (le déchargement du module ip_conntrack
pouvant bloquer le système).
Dans le message <news:,
*JKB* tapota sur f.c.o.l.configuration :Bonjour à tous,
Bonjour,
J'ai un souci, un truc incompréhensible... Considérons une machine
qui possède trois cartes réseau avec trois adresses :
192.168.1.1 -> eth2 sur un routeur ADSL et une adresse IP fixe
publique
192.168.254.1 -> eth0, même configuration
192.168.0.128 -> eth1, réseau local.
Seuls trois ports sont autorisés sur eth2 : ssh et les 3000 et 3001.
Le ssh fonctionne, donc l'interface est bien configurée. Par contre,
pas moyen de forwarder les ports 3000 et 3001 sur une machine du
réseau local.
Pour information :
Root kant:[~] > ip rule list
0: from all lookup local
32763: from all fwmark 0xbb9 lookup intranet
32764: from all fwmark 0xbb8 lookup intranet
Ici vous dites que tous les paquets marqués 0xbb8 et 0xbb9, venant de
n'importe où, doivent utiliser la table de routage nommée intranet.
Root kant:[~] > ip route list table intranet
default via 192.168.1.254 dev eth2
Dans la table de routage intranet, il n'y a qu'une seule route, une route
par défaut et qui dit que tous les paquets traversant cette table devront
être routés vers la passerelle 192.168.1.254 en passant par l'interface
eth2.
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Ici, on accepte *tout* dès le départ. Les règles suivantes de la chaîne
INPUT ne seront donc jamais traversées. J'imagine que cette règle a peut
être été introduite entre-temps pour faciliter le débuggage de votre
problème.
ACCEPT all -- anywhere kant.astelys.fr
Nous avons ici en adresse de destination un nom d'hôte, mais quelle est
l'adresse IP qui lui est associé sur votre machine ? L'adresse publique ou
l'adresse privée ?
S'il s'agit de l'adresse publique, il y a comme un soucis puisque votre
machine n'a, comme adresses de destination, que des adresses privées
(192.168.1.1, 192.168.254.1 et 192.168.0.128). Donc dans vos règles
iptables, les adresses de destination doivent correspondre exactement aux
adresses de vos interfaces.
La prochaine fois, pensez à ajouter l'option '-n' d'iptables pour avoir la
valeur numérique des adresses et des ports.
ACCEPT all -- anywhere bergson.astelys.fr
ACCEPT tcp -- anywhere thibon.astelys.fr tcp dpt:ssh
ACCEPT tcp -- anywhere thibon.astelys.fr tcp
dpt:3000
ACCEPT tcp -- anywhere thibon.astelys.fr tcp
dpt:3001
Si j'ai bien compris, le trafic à destination des ports 3000 et 3001 doit
être forwardé sur une autre machine et n'est pas à destination de votre
machine. Donc les deux dernières règles ne sont pas dans la bonne chaîne,
elles devraient être placées dans la chaîne FORWARD. En tout cas en restant
dans cette chaîne INPUT, elles n'auront *aucun* effet sur les connexions
forwardées.
Root kant:[~] > iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere kant.astelys.fr tcp
dpt:8000 to:192.168.0.130:8080
DNAT tcp -- anywhere thibon.astelys.fr tcp
dpt:3000 to:192.168.0.130:3000
DNAT tcp -- anywhere thibon.astelys.fr tcp
dpt:3001 to:192.168.0.130:3001
Ici, même remarque sur la destination que précédemment. Est-ce que le nom
d'hôte a pour adresse IP 192.168.1.1 ? Si non, alors les paquets venant de
l'interface eth2 et à destination des ports 3000 et 3001 ne seront jamais
natés.
Root kant:[~] > iptables -L -t mangle
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
MARK tcp -- anywhere anywhere tcp
dpt:3000 MARK set 0xbb8
MARK tcp -- anywhere anywhere tcp
dpt:3001 MARK set 0xbb9
Ici vous demandez à ce que tous les paquets à destination des ports 3000 et
3001 soient marqués. Comme on a vu précédemment, ces paquets marqués doivent
utiliser la table de routage intranet. Donc tous les paquets à destination
des ports 3000 et 3001 venant de n'importe où (eth2, mais aussi eth0 et
eth1) doivent sortir sur l'interface eth2 et router vers la passerelle
192.168.1.254.
Conclusion, les paquets à destination des ports 3000 et 3001 et venant de
l'interface eth2 ressortiront par cette même interface.
Une remarque générale sur vos règles iptables : il n'y figure jamais les
interfaces d'entrée et de sortie, car vous n'avez pas ajouté l'option '-v' à
la commande 'iptables -L'. Il se cache alors peut être des erreurs dans vos
règles iptables que nous ne pouvons voir ici.
D'une manière générale, je recommande toujours d'utiliser la commande
'iptabes-save' pour lister l'ensemble de ces règles.Je ne vois vraiment pas ce qui coince. La machine est une UltraSparc
tournant sous Debian (noyau officiel 2.4.29). Je précise que je vois
arriver les paquets sur eth2:3000, mais que ceux-ci sont ignorés par
les règles de la table nat d'iptables...
À quoi le voyez vous ?
Une idée ?
Oui, supprimer vos règles iproute2 et iptables concernant le marquage des
paquets, c'est-à-dire les règles suivantes :
32763: from all fwmark 0xbb9 lookup intranet
32764: from all fwmark 0xbb8 lookup intranet
et
MARK tcp -- anywhere anywhere tcp dpt:3000
MARK set 0xbb8
MARK tcp -- anywhere anywhere tcp dpt:3001
MARK set 0xbb9
Elles sont inutiles dans ce que vous souhaitez faire et de plus, comme nous
avons pu le voir, font le contraire de ce que vous souhaitez puisqu'elles ne
permettent pas de forwarder vers l'interface eth1 les paquets venant de
l'interface eth2 à destination des ports 3000 et 3001.
Il n'y a pas besoin de règle particulière pour dire où doivent être forwardé
ces paquets venant de eth2. La table de routage principale suffit pour que
les paquets, une fois l'adresse de destination natée, puisse emprunter le
bon chemin, c'est-à-dire sortir sur l'interface eth1.
Par contre, les paquets retours venant de eth1, qui une fois seront «
dénatés » et qui auront donc comme adresse source 192.168.1.1, devront
savoir sur quelle passerelle et quelle interface sortir. Par défaut, nous
avons vu que c'est par l'interface eth0, alors qu'il faudrait, en principe,
qu'ils ressortent par là d'où ils venaient, donc par eth2.
C'est pourquoi que votre règle iproute2 suivante :
32765: from 192.168.1.1 lookup intranet
est à conserver et suffit pour router les paquets sur eth2 puisque la table
de routage intranet indique que les paquets doivent passer par eth2.
Il faudrait aussi s'assurer que le forwarding est activé sur chacune des
interfaces concernées en allant vérifier les entrées suivantes :
/proc/sys/net/ipv4/ip_forward
/proc/sys/net/ipv4/conf/{all,default,eth0,eth1,eth2}/forwarding
et, avant tous tests finaux, faire en sorte que la table des suivis des
connexions (/proc/net/ip_conntrack) soit vide ou du moins ne contienne pas
d'entrée sur des connexions vers les ports 3000 et 3001 pouvant venir de
connexions précédentes. En effet, si les règles de nat ont changé entre
temps, la table ip_conntrack peut avoir conservé des entrées avec les
précédentes règles, empêchant alors aux paquets retours d'être « dénatés »
comme il faut. Malheureusement, pour vider cette table il n'existe pas de
solution fiable. Soit attendre, parfois indéfiniment si la machine reste
connectée, ou soit rebooter... (le déchargement du module ip_conntrack
pouvant bloquer le système).
Dans le message <news:,
*JKB* tapota sur f.c.o.l.configuration :
[...]
Puis-je vous demander de publier vos sorties de commandes dans un fichier ?
La coupure des lignes de nos clients Usenet ne facilite pas la lecture des
règles.
Dans le message <news:slrnd178ao.nbn.knatschke@rayleigh.systella.fr>,
*JKB* tapota sur f.c.o.l.configuration :
[...]
Puis-je vous demander de publier vos sorties de commandes dans un fichier ?
La coupure des lignes de nos clients Usenet ne facilite pas la lecture des
règles.
Dans le message <news:,
*JKB* tapota sur f.c.o.l.configuration :
[...]
Puis-je vous demander de publier vos sorties de commandes dans un fichier ?
La coupure des lignes de nos clients Usenet ne facilite pas la lecture des
règles.
Que vous faut-il ?
Que vous faut-il ?
Que vous faut-il ?
Dans le message <news:,
*JKB* tapota sur f.c.o.l.configuration :Que vous faut-il ?
Tout. :)
Ou plus exactement :
iptables-save -c
ip rule show
ip -4 route show table all
Dans le message <news:slrnd1796t.nbn.knatschke@rayleigh.systella.fr>,
*JKB* tapota sur f.c.o.l.configuration :
Que vous faut-il ?
Tout. :)
Ou plus exactement :
iptables-save -c
ip rule show
ip -4 route show table all
Dans le message <news:,
*JKB* tapota sur f.c.o.l.configuration :Que vous faut-il ?
Tout. :)
Ou plus exactement :
iptables-save -c
ip rule show
ip -4 route show table all
Bonjour, et merci de vous intéresser à mon problème...
En fait, on le le voit pas ici, mais il s'agit d'une règle sur le
loopback.
Je précise que je vois arriver les paquets sur eth2:3000, mais que
ceux-ci sont ignorés par les règles de la table nat d'iptables...
À quoi le voyez vous ?
tcpdump
Par contre, les paquets retours venant de eth1, qui une fois seront «
dénatés » et qui auront donc comme adresse source 192.168.1.1, devront
savoir sur quelle passerelle et quelle interface sortir. Par défaut,
nous avons vu que c'est par l'interface eth0, alors qu'il faudrait, en
principe, qu'ils ressortent par là d'où ils venaient, donc par
eth2. C'est pourquoi que votre règle iproute2 suivante :
32765: from 192.168.1.1 lookup intranet
est à conserver et suffit pour router les paquets sur eth2 puisque la
table de routage intranet indique que les paquets doivent passer par
eth2.
J'ai fait les modifications comme indiquées. Mais le résultat est le
même
un tcpdump -i eth2 me montre des paquets entrant sur le port
3000, mais rien sur l'interface eth1...
Cela s'éclaire tout doucement, mais ce n'est pas encore ça ;-)
Bonjour, et merci de vous intéresser à mon problème...
En fait, on le le voit pas ici, mais il s'agit d'une règle sur le
loopback.
Je précise que je vois arriver les paquets sur eth2:3000, mais que
ceux-ci sont ignorés par les règles de la table nat d'iptables...
À quoi le voyez vous ?
tcpdump
Par contre, les paquets retours venant de eth1, qui une fois seront «
dénatés » et qui auront donc comme adresse source 192.168.1.1, devront
savoir sur quelle passerelle et quelle interface sortir. Par défaut,
nous avons vu que c'est par l'interface eth0, alors qu'il faudrait, en
principe, qu'ils ressortent par là d'où ils venaient, donc par
eth2. C'est pourquoi que votre règle iproute2 suivante :
32765: from 192.168.1.1 lookup intranet
est à conserver et suffit pour router les paquets sur eth2 puisque la
table de routage intranet indique que les paquets doivent passer par
eth2.
J'ai fait les modifications comme indiquées. Mais le résultat est le
même
un tcpdump -i eth2 me montre des paquets entrant sur le port
3000, mais rien sur l'interface eth1...
Cela s'éclaire tout doucement, mais ce n'est pas encore ça ;-)
Bonjour, et merci de vous intéresser à mon problème...
En fait, on le le voit pas ici, mais il s'agit d'une règle sur le
loopback.
Je précise que je vois arriver les paquets sur eth2:3000, mais que
ceux-ci sont ignorés par les règles de la table nat d'iptables...
À quoi le voyez vous ?
tcpdump
Par contre, les paquets retours venant de eth1, qui une fois seront «
dénatés » et qui auront donc comme adresse source 192.168.1.1, devront
savoir sur quelle passerelle et quelle interface sortir. Par défaut,
nous avons vu que c'est par l'interface eth0, alors qu'il faudrait, en
principe, qu'ils ressortent par là d'où ils venaient, donc par
eth2. C'est pourquoi que votre règle iproute2 suivante :
32765: from 192.168.1.1 lookup intranet
est à conserver et suffit pour router les paquets sur eth2 puisque la
table de routage intranet indique que les paquets doivent passer par
eth2.
J'ai fait les modifications comme indiquées. Mais le résultat est le
même
un tcpdump -i eth2 me montre des paquets entrant sur le port
3000, mais rien sur l'interface eth1...
Cela s'éclaire tout doucement, mais ce n'est pas encore ça ;-)
Dans le message <news:,
*JKB* tapota sur f.c.o.l.configuration :
iptables -t mangle -A PREROUTING -p tcp --sport 3000:3001
-s 192.168.0.130 -j MARK --set-mark 1
ip rule add fwmark 0x01 table intranet
iptables -t mangle -A PREROUTING -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: prerouting: '
iptables -t mangle -A FORWARD -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: forward: '
iptables -t mangle -A POSTROUTING -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: postrouting: '
le résultat des logs dans les messages du noyau.
Dans le message <news:slrnd178ao.nbn.knatschke@rayleigh.systella.fr>,
*JKB* tapota sur f.c.o.l.configuration :
iptables -t mangle -A PREROUTING -p tcp --sport 3000:3001
-s 192.168.0.130 -j MARK --set-mark 1
ip rule add fwmark 0x01 table intranet
iptables -t mangle -A PREROUTING -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: prerouting: '
iptables -t mangle -A FORWARD -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: forward: '
iptables -t mangle -A POSTROUTING -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: postrouting: '
le résultat des logs dans les messages du noyau.
Dans le message <news:,
*JKB* tapota sur f.c.o.l.configuration :
iptables -t mangle -A PREROUTING -p tcp --sport 3000:3001
-s 192.168.0.130 -j MARK --set-mark 1
ip rule add fwmark 0x01 table intranet
iptables -t mangle -A PREROUTING -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: prerouting: '
iptables -t mangle -A FORWARD -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: forward: '
iptables -t mangle -A POSTROUTING -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: postrouting: '
le résultat des logs dans les messages du noyau.
Feb 17 10:34:30 kant kernel: NETFILTER: prerouting: IN=eth2 OUT > MAC:00:20:c0:ff:ee:00:20:ea:f9:d5:f3:08:00 SRC.101.6.157
DST2.168.1.1 LEN` TOS=0x00 PREC=0x00 TTLW IDC208 DF PROTO=TCP
SPTR431 DPT000 WINDOWX40 RES=0x00 CWR ECE SYN URGP=0
En attaquant sur l'autre interface, j'obtiens :
Feb 17 10:35:29 kant kernel: NETFILTER: prerouting: IN=eth0 OUT > MAC:00:20:c0:ff:ee:00:0b:23:0e:cf:74:08:00 SRC.101.6.157
DST2.168.254.1 LENR TOS=0x00 PREC=0x00 TTLV ID0749 DF PROTO=TCP
SPTR440 DPT000 WINDOWX40 RES=0x00 ACK URGP=0
Feb 17 10:35:29 kant kernel: NETFILTER: forward: IN=eth0 OUT=eth1
SRC.101.6.157 DST2.168.0.130 LENR TOS=0x00 PREC=0x00 TTLU
ID0749 DF PROTO=TCP SPTR440 DPT000 WINDOWX40 RES=0x00 ACK URGP=0
Je sèche de plus en plus. On y est presque, le tout est dans le
presque ;-)
Feb 17 10:34:30 kant kernel: NETFILTER: prerouting: IN=eth2 OUT > MAC:00:20:c0:ff:ee:00:20:ea:f9:d5:f3:08:00 SRC.101.6.157
DST2.168.1.1 LEN` TOS=0x00 PREC=0x00 TTLW IDC208 DF PROTO=TCP
SPTR431 DPT000 WINDOWX40 RES=0x00 CWR ECE SYN URGP=0
En attaquant sur l'autre interface, j'obtiens :
Feb 17 10:35:29 kant kernel: NETFILTER: prerouting: IN=eth0 OUT > MAC:00:20:c0:ff:ee:00:0b:23:0e:cf:74:08:00 SRC.101.6.157
DST2.168.254.1 LENR TOS=0x00 PREC=0x00 TTLV ID0749 DF PROTO=TCP
SPTR440 DPT000 WINDOWX40 RES=0x00 ACK URGP=0
Feb 17 10:35:29 kant kernel: NETFILTER: forward: IN=eth0 OUT=eth1
SRC.101.6.157 DST2.168.0.130 LENR TOS=0x00 PREC=0x00 TTLU
ID0749 DF PROTO=TCP SPTR440 DPT000 WINDOWX40 RES=0x00 ACK URGP=0
Je sèche de plus en plus. On y est presque, le tout est dans le
presque ;-)
Feb 17 10:34:30 kant kernel: NETFILTER: prerouting: IN=eth2 OUT > MAC:00:20:c0:ff:ee:00:20:ea:f9:d5:f3:08:00 SRC.101.6.157
DST2.168.1.1 LEN` TOS=0x00 PREC=0x00 TTLW IDC208 DF PROTO=TCP
SPTR431 DPT000 WINDOWX40 RES=0x00 CWR ECE SYN URGP=0
En attaquant sur l'autre interface, j'obtiens :
Feb 17 10:35:29 kant kernel: NETFILTER: prerouting: IN=eth0 OUT > MAC:00:20:c0:ff:ee:00:0b:23:0e:cf:74:08:00 SRC.101.6.157
DST2.168.254.1 LENR TOS=0x00 PREC=0x00 TTLV ID0749 DF PROTO=TCP
SPTR440 DPT000 WINDOWX40 RES=0x00 ACK URGP=0
Feb 17 10:35:29 kant kernel: NETFILTER: forward: IN=eth0 OUT=eth1
SRC.101.6.157 DST2.168.0.130 LENR TOS=0x00 PREC=0x00 TTLU
ID0749 DF PROTO=TCP SPTR440 DPT000 WINDOWX40 RES=0x00 ACK URGP=0
Je sèche de plus en plus. On y est presque, le tout est dans le
presque ;-)
J'ai remis ceci :iptables -t mangle -A PREROUTING -p tcp --sport 3000:3001
-s 192.168.0.130 -j MARK --set-mark 1
ip rule add fwmark 0x01 table intranet
et cela :iptables -t mangle -A PREROUTING -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: prerouting: '
iptables -t mangle -A FORWARD -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: forward: '
iptables -t mangle -A POSTROUTING -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: postrouting: '
le résultat des logs dans les messages du noyau.
et j'obtiens :
Feb 17 10:34:30 kant kernel: NETFILTER: prerouting: IN=eth2 OUT > MAC:00:20:c0:ff:ee:00:20:ea:f9:d5:f3:08:00 SRC.101.6.157
DST2.168.1.1 LEN` TOS=0x00 PREC=0x00 TTLW IDC208 DF PROTO=TCP
SPTR431 DPT000 WINDOWX40 RES=0x00 CWR ECE SYN URGP=0
Je sèche de plus en plus.
On y est presque, le tout est dans le presque ;-)
J'ai remis ceci :
iptables -t mangle -A PREROUTING -p tcp --sport 3000:3001
-s 192.168.0.130 -j MARK --set-mark 1
ip rule add fwmark 0x01 table intranet
et cela :
iptables -t mangle -A PREROUTING -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: prerouting: '
iptables -t mangle -A FORWARD -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: forward: '
iptables -t mangle -A POSTROUTING -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: postrouting: '
le résultat des logs dans les messages du noyau.
et j'obtiens :
Feb 17 10:34:30 kant kernel: NETFILTER: prerouting: IN=eth2 OUT > MAC:00:20:c0:ff:ee:00:20:ea:f9:d5:f3:08:00 SRC.101.6.157
DST2.168.1.1 LEN` TOS=0x00 PREC=0x00 TTLW IDC208 DF PROTO=TCP
SPTR431 DPT000 WINDOWX40 RES=0x00 CWR ECE SYN URGP=0
Je sèche de plus en plus.
On y est presque, le tout est dans le presque ;-)
J'ai remis ceci :iptables -t mangle -A PREROUTING -p tcp --sport 3000:3001
-s 192.168.0.130 -j MARK --set-mark 1
ip rule add fwmark 0x01 table intranet
et cela :iptables -t mangle -A PREROUTING -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: prerouting: '
iptables -t mangle -A FORWARD -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: forward: '
iptables -t mangle -A POSTROUTING -p tcp --dport 3000
-j LOG --log-prefix 'NETFILTER: postrouting: '
le résultat des logs dans les messages du noyau.
et j'obtiens :
Feb 17 10:34:30 kant kernel: NETFILTER: prerouting: IN=eth2 OUT > MAC:00:20:c0:ff:ee:00:20:ea:f9:d5:f3:08:00 SRC.101.6.157
DST2.168.1.1 LEN` TOS=0x00 PREC=0x00 TTLW IDC208 DF PROTO=TCP
SPTR431 DPT000 WINDOWX40 RES=0x00 CWR ECE SYN URGP=0
Je sèche de plus en plus.
On y est presque, le tout est dans le presque ;-)