HS iptables et set mark pour séparer le trafic par interface
4 réponses
daniel huhardeaux
Bonjour,
désolé pour le HS, j'ai posé la question sur la liste Netfilter et n'ai
eu aucune réponse. Peut être aurai je plus de succès en la posant ici :-)
Sur un serveur tournant en Debian squeeze iptables 1.4.8 j'ai 3
interfaces réseau: eth0=FAI1 eth1=FAI2 eth2=br0/Intranet. Mes actuelles
règles de routage répartissent le trafic Intranet vers Internet soit par
adresse IP source soit par adresse IP destination via ip rule. Ma route
par défaut est eth1. L'ensemble est fonctionnel.
Ce que j'aimerai à présent, en complément, c'est de pouvoir répartir
également par port de destination, comme par ex le http et ssh via eth0,
le reste via la route par defaut, peu importe l'IP source. J'utilise
donc le marquage de paquet d'iptables de la manière suivante (l'IP
source 192.168.10.6 étant un test de marquage par IP qui n'est pas plus
fonctionnel que celui des ports):
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:CONNMARK1 - [0:0]
:CONNMARK2 - [0:0]
:RESTOREMARK - [0:0]
-A PREROUTING -j RESTOREMARK
-A PREROUTING -s 192.168.10.6/32 -m mark --mark 0x0 -j CONNMARK1
-A PREROUTING -p tcp -m mark --mark 0x0 -m tcp --sport 55555 -j CONNMARK1
-A POSTROUTING -p tcp -m mark --mark 0x0 -m tcp --dport 55555 -j CONNMARK1
-A POSTROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask
0xffffffff
-A CONNMARK1 -j LOG --log-prefix "MARK=1" --log-level 5
-A CONNMARK1 -j CONNMARK --set-xmark 0x1/0xffffffff
-A CONNMARK2 -j LOG --log-prefix "MARK=2" --log-level 5
-A CONNMARK2 -j CONNMARK --set-xmark 0x2/0xffffffff
-A RESTOREMARK -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask
0xffffffff
COMMIT
Nat Table
-A POSTROUTING -m mark --mark 0x1 -j SNAT --to-source xxx.xxx.xxx.xxx
-A POSTROUTING -j SNAT --to-source yyy.yyy.yyy.yyy
xxx.xxx.xxx.xxx adresse IP publique eth0/FAI1
yyy.yyy.yyy.yyy adresse IP publique eth1/FAI2
Dans IP rule list j'ai bien le routage des paquets marqués:
32760: from all fwmark 0x2 lookup isp2
32761: from all fwmark 0x1 lookup isp1
À présent j'exécutenc -kl 55555 sur un serveur externe ainsi que tshark -i eth0 port 55555.
À partir de mon serveur Debian ou de l'un des postes de travail de l'Intranet
j'exécute nc -vvv<ip du serveur externe> 55555 ainsi que tshark -i eth0 dst<ip du serveur externe>
Ce que j'observe est que le trafic sortant utilise toujours la route par défaut en lieu et place de eth0/IP xxx.xxx.xxx.xxx
Ou est mon erreur?
Merci pour toute indication qui me permettrai de résoudre ce problème.
--
Daniel
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/512E0BA4.6010604@tootai.net
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Bruno Muller
Hello,
Le mercredi 27 février 2013 à 14:35 +0100, daniel huhardeaux a écrit :
Ou est mon erreur?
Faire du routage sans modifier les routes !?
Merci pour toute indication qui me permettrai de résoudre ce problème.
cf. exemple 2 de http://www.linuxhorizon.ro/iproute2.html
Bruno -- DÉCEMBRE P : Autant j'aime bien les SDF en hivers... autant je les déteste au printemps. Au printemps, ils décongèlent et se mettent à puer... M : Fumier !
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
Hello,
Le mercredi 27 février 2013 à 14:35 +0100, daniel huhardeaux a écrit :
Ou est mon erreur?
Faire du routage sans modifier les routes !?
Merci pour toute indication qui me permettrai de résoudre ce problème.
cf. exemple 2 de http://www.linuxhorizon.ro/iproute2.html
Bruno
--
DÉCEMBRE
P : Autant j'aime bien les SDF en hivers... autant je les déteste au
printemps. Au printemps, ils décongèlent et se mettent à puer...
M : Fumier !
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/1361976360.11906.2.camel@bmuller-linux
Le mercredi 27 février 2013 à 14:35 +0100, daniel huhardeaux a écrit :
Ou est mon erreur?
Faire du routage sans modifier les routes !?
Merci pour toute indication qui me permettrai de résoudre ce problème.
cf. exemple 2 de http://www.linuxhorizon.ro/iproute2.html
Bruno -- DÉCEMBRE P : Autant j'aime bien les SDF en hivers... autant je les déteste au printemps. Au printemps, ils décongèlent et se mettent à puer... M : Fumier !
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
daniel huhardeaux
Le 27/02/2013 15:46, Bruno Muller a écrit :
Hello,
Le mercredi 27 février 2013 à 14:35 +0100, daniel huhardeaux a écrit :
Ou est mon erreur?
Faire du routage sans modifier les routes !?
Je ne pense pas puisque comme annoncé dans mon message:
"Mes actuelles règles de routage répartissent le trafic Intranet vers Internet soit par adresse IP source soit par adresse IP destination via ip rule. Ma route par défaut est eth1. L'ensemble est fonctionnel."
Merci pour toute indication qui me permettrai de résoudre ce problème.
cf. exemple 2 de http://www.linuxhorizon.ro/iproute2.html
Il est identique à ce que j'ai sauf que les paquets sont marqués en entrée de eth0. J'ai adapté, pas de changement.
Mes routes:
:~$ ip route show table main default via xxx.xxx.xxx.xxx dev eth1 xxx.xxx.xxx.0/24 dev eth0 proto kernel scope link src xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy/28 dev eth1 proto kernel scope link yyy.yyy.yyy.yyy 192.168.10.0/24 dev br0 proto kernel scope link src 192.168.10.250
:~$ ip route show table isp2 default via 109.237.252.177 dev eth1 xxx.xxx.xxx.0/24 dev eth0 proto kernel scope link src xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy/28 dev eth1 proto kernel scope link src yyy.yyy.yyy.yyy 192.168.10.0/24 dev br0 proto kernel scope link src 192.168.10.250
:~$ ip route show table isp1 default via 78.230.113.254 dev eth0 xxx.xxx.xxx.0/24 dev eth0 proto kernel scope link src xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy/28 dev eth1 proto kernel scope link src yyy.yyy.yyy.yyy 192.168.10.0/24 dev br0 proto kernel scope link src 192.168.10.250
:~$ ip rule show 0: from all lookup local 32762: from all fwmark 0x2 lookup isp2 32763: from all fwmark 0x1 lookup isp1 32764: from yyy.yyy.yyy.yyy lookup isp2 32765: from xxx.xxx.xxx.xxx lookup isp1 32766: from all lookup main 32767: from all lookup default
Merci de t'être penché sur mon cas ;-) -- Daniel
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
Le 27/02/2013 15:46, Bruno Muller a écrit :
Hello,
Le mercredi 27 février 2013 à 14:35 +0100, daniel huhardeaux a écrit :
Ou est mon erreur?
Faire du routage sans modifier les routes !?
Je ne pense pas puisque comme annoncé dans mon message:
"Mes actuelles règles de routage répartissent le trafic Intranet vers
Internet soit par adresse IP source soit par adresse IP destination via
ip rule. Ma route par défaut est eth1. L'ensemble est fonctionnel."
Merci pour toute indication qui me permettrai de résoudre ce problème.
cf. exemple 2 de http://www.linuxhorizon.ro/iproute2.html
Il est identique à ce que j'ai sauf que les paquets sont marqués en
entrée de eth0. J'ai adapté, pas de changement.
Mes routes:
dh@chezmoi:~$ ip route show table main
default via xxx.xxx.xxx.xxx dev eth1
xxx.xxx.xxx.0/24 dev eth0 proto kernel scope link src xxx.xxx.xxx.xxx
yyy.yyy.yyy.yyy/28 dev eth1 proto kernel scope link yyy.yyy.yyy.yyy
192.168.10.0/24 dev br0 proto kernel scope link src 192.168.10.250
dh@chezmoi:~$ ip route show table isp2
default via 109.237.252.177 dev eth1
xxx.xxx.xxx.0/24 dev eth0 proto kernel scope link src xxx.xxx.xxx.xxx
yyy.yyy.yyy.yyy/28 dev eth1 proto kernel scope link src yyy.yyy.yyy.yyy
192.168.10.0/24 dev br0 proto kernel scope link src 192.168.10.250
dh@chezmoi:~$ ip route show table isp1
default via 78.230.113.254 dev eth0
xxx.xxx.xxx.0/24 dev eth0 proto kernel scope link src xxx.xxx.xxx.xxx
yyy.yyy.yyy.yyy/28 dev eth1 proto kernel scope link src yyy.yyy.yyy.yyy
192.168.10.0/24 dev br0 proto kernel scope link src 192.168.10.250
dh@chezmoi:~$ ip rule show
0: from all lookup local
32762: from all fwmark 0x2 lookup isp2
32763: from all fwmark 0x1 lookup isp1
32764: from yyy.yyy.yyy.yyy lookup isp2
32765: from xxx.xxx.xxx.xxx lookup isp1
32766: from all lookup main
32767: from all lookup default
Merci de t'être penché sur mon cas ;-)
--
Daniel
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/512E2F2A.5040604@tootai.net
Le mercredi 27 février 2013 à 14:35 +0100, daniel huhardeaux a écrit :
Ou est mon erreur?
Faire du routage sans modifier les routes !?
Je ne pense pas puisque comme annoncé dans mon message:
"Mes actuelles règles de routage répartissent le trafic Intranet vers Internet soit par adresse IP source soit par adresse IP destination via ip rule. Ma route par défaut est eth1. L'ensemble est fonctionnel."
Merci pour toute indication qui me permettrai de résoudre ce problème.
cf. exemple 2 de http://www.linuxhorizon.ro/iproute2.html
Il est identique à ce que j'ai sauf que les paquets sont marqués en entrée de eth0. J'ai adapté, pas de changement.
Mes routes:
:~$ ip route show table main default via xxx.xxx.xxx.xxx dev eth1 xxx.xxx.xxx.0/24 dev eth0 proto kernel scope link src xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy/28 dev eth1 proto kernel scope link yyy.yyy.yyy.yyy 192.168.10.0/24 dev br0 proto kernel scope link src 192.168.10.250
:~$ ip route show table isp2 default via 109.237.252.177 dev eth1 xxx.xxx.xxx.0/24 dev eth0 proto kernel scope link src xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy/28 dev eth1 proto kernel scope link src yyy.yyy.yyy.yyy 192.168.10.0/24 dev br0 proto kernel scope link src 192.168.10.250
:~$ ip route show table isp1 default via 78.230.113.254 dev eth0 xxx.xxx.xxx.0/24 dev eth0 proto kernel scope link src xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy/28 dev eth1 proto kernel scope link src yyy.yyy.yyy.yyy 192.168.10.0/24 dev br0 proto kernel scope link src 192.168.10.250
:~$ ip rule show 0: from all lookup local 32762: from all fwmark 0x2 lookup isp2 32763: from all fwmark 0x1 lookup isp1 32764: from yyy.yyy.yyy.yyy lookup isp2 32765: from xxx.xxx.xxx.xxx lookup isp1 32766: from all lookup main 32767: from all lookup default
Merci de t'être penché sur mon cas ;-) -- Daniel
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
daniel huhardeaux
Je me répond ;-)
Le 27/02/2013 14:35, daniel huhardeaux a écrit :
Bonjour,
désolé pour le HS, j'ai posé la question sur la liste Netfilter et n'ai eu aucune réponse. Peut être aurai je plus de succès en la posant ici :-)
Sur un serveur tournant en Debian squeeze iptables 1.4.8 j'ai 3 interfaces réseau: eth0úI1 eth1úI2 eth2=br0/Intranet. Mes actuelles règles de routage répartissent le trafic Intranet vers Internet soit par adresse IP source soit par adresse IP destination via ip rule. Ma route par défaut est eth1. L'ensemble est fonctionnel.
Ce que j'aimerai à présent, en complément, c'est de pouvoir répartir également par port de destination, comme par ex le http et ssh via eth0, le reste via la route par defaut, peu importe l'IP source. J'utilise donc le marquage de paquet d'iptables de la manière suivante (l'IP source 192.168.10.6 étant un test de marquage par IP qui n'est pas plus fonctionnel que celui des ports):
[...]
Mes règles sont bonnes sauf que:
a) iptables ne tient pas compte de -j CONNMARK --set-mark [1|2] mais -j MARK --set-mark [1|2] fonctionne b) il faut désactiver le reverse path filtering qui protège de l'IP spoofing ( /etc/sysctl.conf net.ipv4.conf.all.rp_filter =0)
Le lien magique http://www.sysresccd.org/Sysresccd-Networking-EN-Iptables-and-netfilter-load-balancing-using-connmark
Bonne soirée
-- Daniel
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
Je me répond ;-)
Le 27/02/2013 14:35, daniel huhardeaux a écrit :
Bonjour,
désolé pour le HS, j'ai posé la question sur la liste Netfilter et
n'ai eu aucune réponse. Peut être aurai je plus de succès en la posant
ici :-)
Sur un serveur tournant en Debian squeeze iptables 1.4.8 j'ai 3
interfaces réseau: eth0úI1 eth1úI2 eth2=br0/Intranet. Mes
actuelles règles de routage répartissent le trafic Intranet vers
Internet soit par adresse IP source soit par adresse IP destination
via ip rule. Ma route par défaut est eth1. L'ensemble est fonctionnel.
Ce que j'aimerai à présent, en complément, c'est de pouvoir répartir
également par port de destination, comme par ex le http et ssh via
eth0, le reste via la route par defaut, peu importe l'IP source.
J'utilise donc le marquage de paquet d'iptables de la manière suivante
(l'IP source 192.168.10.6 étant un test de marquage par IP qui n'est
pas plus fonctionnel que celui des ports):
[...]
Mes règles sont bonnes sauf que:
a) iptables ne tient pas compte de -j CONNMARK --set-mark [1|2] mais -j
MARK --set-mark [1|2] fonctionne
b) il faut désactiver le reverse path filtering qui protège de l'IP
spoofing ( /etc/sysctl.conf net.ipv4.conf.all.rp_filter =0)
Le lien magique
http://www.sysresccd.org/Sysresccd-Networking-EN-Iptables-and-netfilter-load-balancing-using-connmark
Bonne soirée
--
Daniel
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/512E501E.40909@tootai.net
désolé pour le HS, j'ai posé la question sur la liste Netfilter et n'ai eu aucune réponse. Peut être aurai je plus de succès en la posant ici :-)
Sur un serveur tournant en Debian squeeze iptables 1.4.8 j'ai 3 interfaces réseau: eth0úI1 eth1úI2 eth2=br0/Intranet. Mes actuelles règles de routage répartissent le trafic Intranet vers Internet soit par adresse IP source soit par adresse IP destination via ip rule. Ma route par défaut est eth1. L'ensemble est fonctionnel.
Ce que j'aimerai à présent, en complément, c'est de pouvoir répartir également par port de destination, comme par ex le http et ssh via eth0, le reste via la route par defaut, peu importe l'IP source. J'utilise donc le marquage de paquet d'iptables de la manière suivante (l'IP source 192.168.10.6 étant un test de marquage par IP qui n'est pas plus fonctionnel que celui des ports):
[...]
Mes règles sont bonnes sauf que:
a) iptables ne tient pas compte de -j CONNMARK --set-mark [1|2] mais -j MARK --set-mark [1|2] fonctionne b) il faut désactiver le reverse path filtering qui protège de l'IP spoofing ( /etc/sysctl.conf net.ipv4.conf.all.rp_filter =0)
Le lien magique http://www.sysresccd.org/Sysresccd-Networking-EN-Iptables-and-netfilter-load-balancing-using-connmark
Bonne soirée
-- Daniel
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
Pascal Hambourg
Salut,
daniel huhardeaux a écrit :
a) iptables ne tient pas compte de -j CONNMARK --set-mark [1|2] mais -j MARK --set-mark [1|2] fonctionne
Les deux ne font évidemment pas la même chose. L'option --set-mark de CONNMARK modifie la marque de connexion qui est sans effet sur le routage, alors que celle de MARK modifie la marque de paquet, qui peut influer sur le routage. Pour copier la marque de connexion dans la marque de paquet, il faut utiliser CONNMARK --restore-mark. Tout ceci est expliqué dans la page de manuel d'iptables.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/
Salut,
daniel huhardeaux a écrit :
a) iptables ne tient pas compte de -j CONNMARK --set-mark [1|2] mais -j
MARK --set-mark [1|2] fonctionne
Les deux ne font évidemment pas la même chose. L'option --set-mark de
CONNMARK modifie la marque de connexion qui est sans effet sur le
routage, alors que celle de MARK modifie la marque de paquet, qui peut
influer sur le routage. Pour copier la marque de connexion dans la
marque de paquet, il faut utiliser CONNMARK --restore-mark. Tout ceci
est expliqué dans la page de manuel d'iptables.
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/513335C0.1080104@plouf.fr.eu.org
a) iptables ne tient pas compte de -j CONNMARK --set-mark [1|2] mais -j MARK --set-mark [1|2] fonctionne
Les deux ne font évidemment pas la même chose. L'option --set-mark de CONNMARK modifie la marque de connexion qui est sans effet sur le routage, alors que celle de MARK modifie la marque de paquet, qui peut influer sur le routage. Pour copier la marque de connexion dans la marque de paquet, il faut utiliser CONNMARK --restore-mark. Tout ceci est expliqué dans la page de manuel d'iptables.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/fr/FrenchLists
Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe" vers En cas de soucis, contactez EN ANGLAIS Archive: http://lists.debian.org/