Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Routage avancé

7 réponses
Avatar
Kevin Denis
Bonjour,

j'ai une machine avec 3 interfaces réseaux.
eth0 qui est connecté à internet, et ma route par défaut.
eth1 qui a un autre accès à internet.
eth2 qui est connecté sur un réseau local.

Je souhaite que le trafic réseau d'eth2 sorte par eth1.
Je souhaite que mon trafic local continue d'utiliser eth0 comme
interface de sortie.

Dans les faits, je devrais ajouter une route par défaut:
ip route add table 4 default via A.B.C.D
ip rule add fwmark 4 table 4
marquer les paquets correspondants:
iptables -t mangle -A PREROUTING -i eth2 -j MARK --set-mark 4
et les masquerader:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

C'est OK?
Merci
--
Kevin

7 réponses

Avatar
Eric Belhomme
Le Tue, 01 Jul 2014 09:47:41 +0000, Kevin Denis a écrit :


Dans les faits, je devrais ajouter une route par défaut:
ip route add table 4 default via A.B.C.D ip rule add fwmark 4 table 4
marquer les paquets correspondants:
iptables -t mangle -A PREROUTING -i eth2 -j MARK --set-mark 4 et les
masquerader:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

C'est OK?




Oui

--
Rico
Avatar
Pascal Hambourg
Kevin Denis a écrit :

Je souhaite que le trafic réseau d'eth2 sorte par eth1.
Je souhaite que mon trafic local continue d'utiliser eth0 comme
interface de sortie.

Dans les faits, je devrais ajouter une route par défaut:
ip route add table 4 default via A.B.C.D
ip rule add fwmark 4 table 4
marquer les paquets correspondants:
iptables -t mangle -A PREROUTING -i eth2 -j MARK --set-mark 4
et les masquerader:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE



Pas besoin de marquer avec iptables, il y a plus simple :

ip rule add iif eth2 table 4

iif NAME
select the incoming device to match. If the interface is loop-
back, the rule only matches packets originating from this host.
This means that you may create separate routing tables for for-
warded and local packets and, hence, completely segregate them.

Vérifier aussi que rp_filter est désactivé sur eth2 pour que le trafic
entrant ne soit pas bloqué.
Avatar
Francois Lafont
Bonsoir,

Le 02/07/2014 22:51, Pascal Hambourg a écrit :

Dans les faits, je devrais ajouter une route par défaut:
ip route add table 4 default via A.B.C.D
ip rule add fwmark 4 table 4
marquer les paquets correspondants:
iptables -t mangle -A PREROUTING -i eth2 -j MARK --set-mark 4
et les masquerader:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE



Pas besoin de marquer avec iptables, il y a plus simple :

ip rule add iif eth2 table 4

iif NAME
select the incoming device to match. If the interface is loop-
back, the rule only matches packets originating from this host.
This means that you may create separate routing tables for for-
warded and local packets and, hence, completely segregate them.

Vérifier aussi que rp_filter est désactivé sur eth2 pour que le trafic
entrant ne soit pas bloqué.



Je me permets de poser deux petites questions par rapport à ce fil
car j'ai plus ou moins découvert les commandes ci-dessus (enfin les
options utilisées) en lisant ce post :

1. Au niveau de l'ID de la table (4 en l'occurrence ici), on est
d'accord que ça pourrait parfaitement être une autre valeur que 4,
ie n'importe quelle valeur entre 1 et 2^31 autre que 0, 253, 254 et
255 (si j'ai bien lu le man) et que notamment il n'y a aucune raison
particulière pour que cet ID coïncide avec la valeur de l'option
--set-mark ?

2. Au niveau de la valeur de l'option --set-mark, là aussi, n'importe
quelle autre valeur de 1 à 32 ferait parfaitement l'affaire ?

J'ai bon ?
Merci d'avance.

--
François Lafont
Avatar
Pascal Hambourg
Francois Lafont a écrit :

1. Au niveau de l'ID de la table (4 en l'occurrence ici), on est
d'accord que ça pourrait parfaitement être une autre valeur que 4,
ie n'importe quelle valeur entre 1 et 2^31 autre que 0, 253, 254 et
255 (si j'ai bien lu le man) et que notamment il n'y a aucune raison
particulière pour que cet ID coïncide avec la valeur de l'option
--set-mark ?

2. Au niveau de la valeur de l'option --set-mark, là aussi, n'importe
quelle autre valeur de 1 à 32 ferait parfaitement l'affaire ?

J'ai bon ?



Oui, sauf que la marque est sur 32 bits et n'est donc pas limitée aux
valeurs entre1 et 32. Faire coïncider la marque et la table est juste
une facilité pour s'y retrouver.
Avatar
Francois Lafont
Bonsoir,

Le 03/07/2014 21:00, Pascal Hambourg a écrit :

1. Au niveau de l'ID de la table (4 en l'occurrence ici), on est
d'accord que ça pourrait parfaitement être une autre valeur que 4,
ie n'importe quelle valeur entre 1 et 2^31 autre que 0, 253, 254 et
255 (si j'ai bien lu le man) et que notamment il n'y a aucune raison
particulière pour que cet ID coïncide avec la valeur de l'option
--set-mark ?

2. Au niveau de la valeur de l'option --set-mark, là aussi, n'importe
quelle autre valeur de 1 à 32 ferait parfaitement l'affaire ?

J'ai bon ?



Oui, sauf que la marque est sur 32 bits et n'est donc pas limitée aux
valeurs entre1 et 32.



Même en lisant le man, j'ai pas trop compris les valeurs qu'on
peut indiquer à --set-mark. C'est un entier allant de 1 à 2^32
(qu'on peut écrire en décimal ou en hexadécimal avec 0x...) ?

Par ailleurs, cette marque, « concrètement », ça correspond à
quoi ? Au départ, l'idée de "marque" m'incitait à penser que
c'était une zone de l'entête du paquet IP qui était carrément
modifiée. Mais j'ai des doutes. Ou alors c'est une valeur
« externe » qui n'est pas inscrite dans le paquet IP lui-même
mais qui est stockée par le noyau et associée au paquet durant
son parcours dans le noyau ?

Faire coïncider la marque et la table est juste
une facilité pour s'y retrouver.



Ok. Merci de m'avoir confirmé ce que je soupçonnais.

--
François Lafont
Avatar
Pascal Hambourg
Francois Lafont a écrit :

Même en lisant le man, j'ai pas trop compris les valeurs qu'on
peut indiquer à --set-mark. C'est un entier allant de 1 à 2^32
(qu'on peut écrire en décimal ou en hexadécimal avec 0x...) ?



Oui.

Par ailleurs, cette marque, « concrètement », ça correspond à
quoi ? Au départ, l'idée de "marque" m'incitait à penser que
c'était une zone de l'entête du paquet IP qui était carrément
modifiée.



Non.

Ou alors c'est une valeur
« externe » qui n'est pas inscrite dans le paquet IP lui-même
mais qui est stockée par le noyau et associée au paquet durant
son parcours dans le noyau ?



Oui.
Avatar
Francois Lafont
Le 04/07/2014 21:09, Pascal Hambourg a écrit :

Même en lisant le man, j'ai pas trop compris les valeurs qu'on
peut indiquer à --set-mark. C'est un entier allant de 1 à 2^32
(qu'on peut écrire en décimal ou en hexadécimal avec 0x...) ?



Oui.

Par ailleurs, cette marque, « concrètement », ça correspond à
quoi ? Au départ, l'idée de "marque" m'incitait à penser que
c'était une zone de l'entête du paquet IP qui était carrément
modifiée.



Non.

Ou alors c'est une valeur
« externe » qui n'est pas inscrite dans le paquet IP lui-même
mais qui est stockée par le noyau et associée au paquet durant
son parcours dans le noyau ?



Oui.



Ok, merci. ;)


--
François Lafont