Soucis routage avancé linux et PPPOE

bonjour,

je fais du routage avancé depuis quelques temps maintenant, mais la je tombe sur un os que je ne comprends pas vraiment, je m’explique.

ici, j’ai 3 liaison a internet mais on ce concentrera sur les deux qui ont le même style de routage.

le principe :
je fais passer certaines IP par des des connexions selon des règles et ça fonctionne très bien, sauf certains petits trucs.

par exemple, le problème qui m’ammène ici, c’est que quand je fais passer l’ip serveur3.wanastream.com sur la connection 3 qui es en PPPOE direct sur le serveur et que j’utilise iptables et le marquage de paquet, et que je fais un curl serveur3.wanastream.com:8000, il s’arrête au 171 premier KO alors que si je le fais depuis un pc du réseau local, ça passe par la même connexion, mais ça continu. que la règles iptables du mss to pmtu sois activer ou non. plus bizare encore, si je le fais directement avec route add serveur3.wanastream.com gw $gw_PPP la ça fonctionne comme ça devrai, mais c’est pas ce mécanisme la que je souhaite utiliser.
je sais pas si ça a une importance, mais le lien ethernet du modem est en vlan.

les commande que j’utilise pour arriver à mon résultats

ip rule add fwmark 0x11 table 111
ip route add default via $gw_ppp table 111
iptables -t mangle -A OUTPUT -d serveur3.wanastream.com -j MARK --set-mark 0x11
et la même règles pour le PREROUTING pour le réseau local bien sûre.

a noté que si je remplace le $gw_ppp par l’autre connexion qui utilise le même procéder mais qui n’est pas en PPPOE, ça passe très bien.

merci d’avance,

jerem

Quel serveur ? Le routeur qui gère la connexion PPPoE ?

171 kilo-octets ou 171 octets ?
171 kilo-octets représentent un nombre important de paquets de taille maximum, donc dans l’hypothèse d’un “trou noir de MTU” qui est la plus probable avec PPPoE, le blocage se produirait beaucoup plus tôt, dès le premier paquet de taille maximum.
Par contre 171 octets pourrait correspondre à la taille de l’en-tête HTTP transmise avant le premier paquet de données de taille maximum.

Elle est dans quelle chaîne, cette règle ? Pour être appliquée aux paquets émis localement qui ont été reroutés, elle doit être dans POSTROUTING. Dans FORWARD, elle ne s’applique qu’aux paquets retransmis provenant d’une autre machine. Dans OUTPUT c’est trop tôt car les paquets émis localement n’ont pas encore été reroutés. POSTROUTING s’applique après le routage à tous les paquets sortants (émis localement ou retransmis) juste avant la sortie.

Une différence entre les deux modes de routage est qu’avec une route simple le MSS annoncé lors de l’établissement de la connexion TCP avec le serveur distant correspond au MTU du lien PPPoE (1492).
Avec le routage avancé, le MSS annoncé est celui de la route par défaut (1500 ?), il doit dont être corrigé avec une règle iptables TCPMSS après le reroutage.

bonjour,

merci pour cette réponse, j’avai vu juste alors pour le mtu, mais je ne savais pas ou mettre cette règle …
après un :

iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

ça fonctionne.

mais, dois-je la laisser aussi dans la table forward ? ou ou cela fait double emploi ?

merci,

jerem

Comme la chaîne POSTROUTING est traversée par tous les paquets sortants quelle que soit leur origine, une règle dans la chaîne FORWARD ferait double emploi. Elle ne gênerait pas mais serait juste redondante pour les paquets retransmis.

Note : si le clamping de MSS n’est utile que sur le lien PPPoE, tu peux restreindre la règle à l’interface de sortie correspondante avec [mono]-o pppX[/mono] où pppX représente le nom de l’interface (ou bien [mono]ppp+[/mono] si c’est la seule interface de ce type).

merci encore pour toute ces réponses !

avec ces notions supplémentaire je vais mieu pouvoir optimiser mon firewall !

jerem