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

1 route par défaut par réseau machine d'origine

8 réponses
Avatar
rantamplan
Bonjour,

Sur une machine passerelle linux avec iptable, je souhaite connecter
deux fournisseurs d'accès différents, et je voudrais que suivant le
réseau IP d'origine, les paquets soient redirigés vers telle ou telle
passerelle par défaut.
exemple:
192.168.0.0/25 a la passerelle linux comme default GW
192.168.0.129/25 a aussi la passerelle comme default GW
Tout paquet arrivant sur la passerelle depuis 192.168.0.0/25 par chez colt
Tout paquet arrivant sur la passerelle depuis 192.168.0.129/25 par chez
oleane

C'est possible, avec seulement iptable?

--
rantamplan

8 réponses

Avatar
JKB
Le 09-11-2006, à propos de
1 route par défaut par réseau machine d'origine,
rantamplan écrivait dans fr.comp.reseaux.ip :
Bonjour,


Bonsoir,

Sur une machine passerelle linux avec iptable, je souhaite connecter
deux fournisseurs d'accès différents, et je voudrais que suivant le
réseau IP d'origine, les paquets soient redirigés vers telle ou telle
passerelle par défaut.
exemple:
192.168.0.0/25 a la passerelle linux comme default GW
192.168.0.129/25 a aussi la passerelle comme default GW
Tout paquet arrivant sur la passerelle depuis 192.168.0.0/25 par chez colt
Tout paquet arrivant sur la passerelle depuis 192.168.0.129/25 par chez
oleane

C'est possible, avec seulement iptable?


Non, mais avec une couche d'iproute2 et le patch ROUTE du noyau, ça
le fait (les autres solutions testées avec mark et autres ne
fonctionnent pas sur les sparc que j'utilise).

Cordialement,

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.

Avatar
Pascal Hambourg
Salut,

rantamplan écrivait dans fr.comp.reseaux.ip :

Sur une machine passerelle linux avec iptable, je souhaite connecter
deux fournisseurs d'accès différents, et je voudrais que suivant le
réseau IP d'origine, les paquets soient redirigés vers telle ou telle
passerelle par défaut.
[...]


C'est possible, avec seulement iptable?


Non, mais avec une couche d'iproute2 et le patch ROUTE du noyau, ça
le fait (les autres solutions testées avec mark et autres ne
fonctionnent pas sur les sparc que j'utilise).


Si je me rappelle bien, c'était un bug spécifique (en tout cas non
constaté sur x86) affectant la reconnaissance d'une marque posée avec la
cible MARK d'iptables par l'option fwmark d'ip rule. Ici, si j'ai bien
compris, il s'agit de faire du routage en fonction de l'adresse source,
donc je pense que le couple ip rule + ip route d'iproute2 seul devrait
suffire pour le routage proprement dit.

Petit détail pour rantamplan : si la passerelle fait aussi le NAT
source, préférer SNAT à MASQUERADE car ce dernier peut avoir des ratés
avec le routage avancé.


Avatar
rantamplan
Pascal Hambourg wrote:
Salut,


rantamplan écrivait dans fr.comp.reseaux.ip :

Sur une machine passerelle linux avec iptable, je souhaite connecter
deux fournisseurs d'accès différents, et je voudrais que suivant le
réseau IP d'origine, les paquets soient redirigés vers telle ou telle
passerelle par défaut.



[...]

C'est possible, avec seulement iptable?



Non, mais avec une couche d'iproute2 et le patch ROUTE du noyau, ça
le fait (les autres solutions testées avec mark et autres ne
fonctionnent pas sur les sparc que j'utilise).



Si je me rappelle bien, c'était un bug spécifique (en tout cas non
constaté sur x86) affectant la reconnaissance d'une marque posée avec la
cible MARK d'iptables par l'option fwmark d'ip rule. Ici, si j'ai bien
compris, il s'agit de faire du routage en fonction de l'adresse source,
donc je pense que le couple ip rule + ip route d'iproute2 seul devrait
suffire pour le routage proprement dit.

Petit détail pour rantamplan : si la passerelle fait aussi le NAT
source, préférer SNAT à MASQUERADE car ce dernier peut avoir des ratés
avec le routage avancé.


Oui. La passerelle fait du DNAT et du SNAT.
Donc. Si j'ai bien compris, et que ma mémoire est bonne. Sur la debian,
télécharger le paque iproute2, chercher dans la doc d'iproute2 et dans
le script iptable, remplacer les rêgles MASQUERADE par des règles SNAT,
c'est ça?

--
rantamplan



Avatar
Pascal Hambourg
Pascal Hambourg wrote:

Petit détail pour rantamplan : si la passerelle fait aussi le NAT
source, préférer SNAT à MASQUERADE car ce dernier peut avoir des ratés
avec le routage avancé.



Brève explication : MASQUERADE ne se base pas sur l'interface de sortie
pour choisir la nouvelle adresse source mais sur l'adresse de
destination, en fonction de la table de routage. Le problème est que
contrairement à une vraie décision de routage, ce choix ne semble tenir
compte ni de l'adresse source originelle (ce qui se comprend, le but
étant de déterminer une adresse source) ni d'une éventuelle marque posée
avec la cible MARK.

Oui. La passerelle fait du DNAT et du SNAT.
Donc. Si j'ai bien compris, et que ma mémoire est bonne. Sur la debian,
télécharger le paque iproute2, chercher dans la doc d'iproute2 et dans
le script iptable, remplacer les rêgles MASQUERADE par des règles SNAT,
c'est ça?


En gros, oui. Dans Debian, le paquetage s'appelle iproute, pas iproute2.
Si tu ne connais pas, "man ip" risque d'être un peu... rugueux, alors je
te suggère la lecture du LARTC-howto (Linux Advanced Routing and Traffic
Control) dont on peut trouver une copie sur plusieurs sites.

Attention quand même, remplacer MASQUERADE par SNAT sur une interface
qui a une adresse dynamique peut poser des problèmes et nécessite des
précautions.


Avatar
JKB
Le 09-11-2006, à propos de
Re: 1 route par défaut par réseau machine d'origine,
Pascal Hambourg écrivait dans fr.comp.reseaux.ip :
Salut,

rantamplan écrivait dans fr.comp.reseaux.ip :

Sur une machine passerelle linux avec iptable, je souhaite connecter
deux fournisseurs d'accès différents, et je voudrais que suivant le
réseau IP d'origine, les paquets soient redirigés vers telle ou telle
passerelle par défaut.
[...]


C'est possible, avec seulement iptable?


Non, mais avec une couche d'iproute2 et le patch ROUTE du noyau, ça
le fait (les autres solutions testées avec mark et autres ne
fonctionnent pas sur les sparc que j'utilise).


Si je me rappelle bien, c'était un bug spécifique (en tout cas non
constaté sur x86) affectant la reconnaissance d'une marque posée avec la
cible MARK d'iptables par l'option fwmark d'ip rule. Ici, si j'ai bien
compris, il s'agit de faire du routage en fonction de l'adresse source,
donc je pense que le couple ip rule + ip route d'iproute2 seul devrait
suffire pour le routage proprement dit.


J'avais compris qu'il y avait alors deux routes par défaut en
fonction du routage. C'est pour cela que je parlais de ROUTE...

Cordialement,

JKB



Avatar
Pascal Hambourg
Pascal Hambourg écrivait dans fr.comp.reseaux.ip :

Ici, si j'ai bien
compris, il s'agit de faire du routage en fonction de l'adresse source,
donc je pense que le couple ip rule + ip route d'iproute2 seul devrait
suffire pour le routage proprement dit.


J'avais compris qu'il y avait alors deux routes par défaut en
fonction du routage. C'est pour cela que je parlais de ROUTE...


C'est bien ça : deux routes par défaut différentes en fonction de
l'adresse source. Mais je ne vois pas pourquoi faire intervenir ROUTE.


Avatar
JKB
Le 11-11-2006, à propos de
Re: 1 route par défaut par réseau machine d'origine,
Pascal Hambourg écrivait dans fr.comp.reseaux.ip :
Pascal Hambourg écrivait dans fr.comp.reseaux.ip :

Ici, si j'ai bien
compris, il s'agit de faire du routage en fonction de l'adresse source,
donc je pense que le couple ip rule + ip route d'iproute2 seul devrait
suffire pour le routage proprement dit.


J'avais compris qu'il y avait alors deux routes par défaut en
fonction du routage. C'est pour cela que je parlais de ROUTE...


C'est bien ça : deux routes par défaut différentes en fonction de
l'adresse source. Mais je ne vois pas pourquoi faire intervenir ROUTE.


Parce que j'ai essayé de faire la même chose sous Linux et sur des
architectures pas standard en lisant les howtos et en bidouillant
durant plusieurs mois pour en arriver à la conclusion que la seule
chose portable était un coup de patch ROUTE avec un iproute2 car les
paquets marqués par fwmark ne sont pas vus correctement par iproute2
et réciproquement sur un certain nombre d'architectures (problèmes
petit/grand boutistes). Donc plutôt que marquer les paquets en
fonction de l'adresse source et router en fonction de cette marque,
il est souvent plus simple de rajouter une règle iproute2 pour
indiquer une passerelle autre que celle par défaut du système et de
traiter le truc au niveau de iptable par une règle sur la cible
route avec un --continue.

Ex:

La route par défaut est sur eth0. Le LAN est sur eth1, je cherche à
router les paquets provenant de l'adresse 192.168.0.130 (ports 3000
et 3001) par eth2 avec la passerelle 192.168.1.254.

THIBON2.168.1.1
ACHARD2.168.1.254
ip rule add from $THIBON lookup intranet priority 100
ip route add default via $ACHARD dev eth2 table intranet
echo 0 > /proc/sys/net/ipv4/conf/eth2/rp_filter
# Ne pas oublier la ligne précédente, sans ça...
iptables -A FORWARD -i eth2 -o eth1 -p tcp -m tcp --dport 3000 -j ACCEPT
iptables -A FORWARD -i eth2 -o eth1 -p tcp -m tcp --dport 3001 -j ACCEPT
iptables -t mangle -A POSTROUTING -s 192.168.0.130 -p tcp -m tcp
--sport 3000:3001 -j ROUTE --oif eth2 --gw 192.168.1.254 --continue

Dans ce mécanisme, je gère à la main les paquets entrants et la
réponse... Aucun autre truc ne daignait fonctionner. Pour
information, l'architecture en question était une Sparc64.

Cordialement,

JKB



Avatar
Sébastien Monbrun aka TiChou
Dans le message <news:,
*JKB* tapota sur f.c.r.ip :

C'est bien ça : deux routes par défaut différentes en fonction de
l'adresse source. Mais je ne vois pas pourquoi faire intervenir ROUTE.


Parce que j'ai essayé de faire la même chose sous Linux et sur des
architectures pas standard en lisant les howtos et en bidouillant
durant plusieurs mois pour en arriver à la conclusion que la seule
chose portable était un coup de patch ROUTE avec un iproute2 car les
paquets marqués par fwmark ne sont pas vus correctement par iproute2


Oui, mais ici il n'y a nullement besoin de marquer les paquets pour faire ce
qui est demandé par l'OP.

--
Sébastien Monbrun aka TiChou