[FRnOG] [TECH] Internet via un tunnel GRE
Hello la liste, Il y a quelques jours, je me suis lancé dans une petite aventure consistant à essayer d'accéder à internet à travers un tunnel GRE et une session BGP. Globalement, ça me diminue ma MTU à 1460, et mon TCP Max Segment à 1436 si j'ai bien tout compris. J'ai réglé cette MTU dans mes équipements d'extrémité (Fortinet d'un côté, Vyatta de l'autre), et j'ai essayé de faire fonctionner le tout. Il semble que sur certains sites cela fonctionne, et sur certains autres non. J'ai fait pas mal de débugs, et j'ai fini par trouver les éléments suivants: - Tous les paquets IP avec du TCP dedans comportent le flag DF, ce qui est nécessaire pour le PMTU. - Il semble que mon routeur Vyatta, au moment où un trop gros paquet devrait rentrer dans le tunnel envoie bien l'ICMP comme quoi ça ne passe pas. Cependant à partir de ce point ça se complique, puisqu'il arrive que la communication passe bien (IE, l'ICMP est reçu, et la communication se poursuit correctement), soit ça ne passe pas, et la source continue à retransmettre comme si le paquet avait été perdu. En creusant plus, j'ai réussi à déterminer que c'était un souci de routage de l'ICMP too-big en question, qui n'arrivait pas forcément à l'hôte qui a émis le paquet, en fonction du load-balancing utilisé pour le site web concerné. Du coup, comme à priori je ne peux pas patcher internet (c) je me demande si il y a un moyen ou pas que mon équipement oublie le flag DF et fragmente quand même mon paquet pour que ça passe ? Est-ce que ce type de configs vous paraît raisonnable ? Ou sinon, il y a peut-être une autre solution au problème que je veux résoudre (utilisation de mes propres IP internet derrière une ADSL classique, en backup dégradé d'un lien dédié) ? Avez-vous déjà réalisé ce type de configurations ? Avez-vous des solutions à ce type de souci de fragmentation ? Merci pour vos réponses ! Cordialement, -- Aurélien Guillaume *- By all means break the rules, and break them beautifully, deliberately and well. That is one of the ends for which they exist. -- *Robert Bringhurst --- Liste de diffusion du FRnOG http://www.frnog.org/
Re: [FRnOG] [TECH] Internet via un tunnel GRE
Salut Aurélien, Le cas le plus probable est souvent qu'il y a un firewall ou un routeur sur le chemin qui bloque l'ICMP car c'est beaucoup plus rare d'avoir un serveur qui ignore les ICMP retour. La solution la plus simple dans le cas que tu décris est effectivement, comme tu le suggères, de mettre le DF à 0 à l'entrée. Sur les Cisco, par exemple on utilise une route-map sur l'interface avec une commande 'set ip df 0' Sur le Vyatta, tu peux le faire dans l'iptable pour les paquets sortants : iptables -t mangle -A POSTROUTING -j DF --clear pour les paquets entrants : iptables -t mangle -A PREROUTING -j DF --clear et pour le Fortinet, je ne sais pas... Le MTU du GRE devrait être de 1476 et ton TCP MSS à 20 de moins. Laurent Le 30/10/2013 16:50, Aurélien a écrit : Hello la liste, Il y a quelques jours, je me suis lancé dans une petite aventure consistant à essayer d'accéder à internet à travers un tunnel GRE et une session BGP. Globalement, ça me diminue ma MTU à 1460, et mon TCP Max Segment à 1436 si j'ai bien tout compris. J'ai réglé cette MTU dans mes équipements d'extrémité (Fortinet d'un côté, Vyatta de l'autre), et j'ai essayé de faire fonctionner le tout. Il semble que sur certains sites cela fonctionne, et sur certains autres non. J'ai fait pas mal de débugs, et j'ai fini par trouver les éléments suivants: - Tous les paquets IP avec du TCP dedans comportent le flag DF, ce qui est nécessaire pour le PMTU. - Il semble que mon routeur Vyatta, au moment où un trop gros paquet devrait rentrer dans le tunnel envoie bien l'ICMP comme quoi ça ne passe pas. Cependant à partir de ce point ça se complique, puisqu'il arrive que la communication passe bien (IE, l'ICMP est reçu, et la communication se poursuit correctement), soit ça ne passe pas, et la source continue à retransmettre comme si le paquet avait été perdu. En creusant plus, j'ai réussi à déterminer que c'était un souci de routage de l'ICMP too-big en question, qui n'arrivait pas forcément à l'hôte qui a émis le paquet, en fonction du load-balancing utilisé pour le site web concerné. Du coup, comme à priori je ne peux pas patcher internet (c) je me demande si il y a un moyen ou pas que mon équipement oublie le flag DF et fragmente quand même mon paquet pour que ça passe ? Est-ce que ce type de configs vous paraît raisonnable ? Ou sinon, il y a peut-être une autre solution au problème que je veux résoudre (utilisation de mes propres IP internet derrière une ADSL classique, en backup dégradé d'un lien dédié) ? Avez-vous déjà réalisé ce type de configurations ? Avez-vous des solutions à ce type de souci de fragmentation ? Merci pour vos réponses ! Cordialement, --- Liste de diffusion du FRnOG http://www.frnog.org/
Re: [FRnOG] [TECH] Internet via un tunnel GRE
Le 2013-10-30 22:43, Fabien V. a écrit : Le 2013-10-30 22:21, Laurent Cima a écrit : Salut Aurélien, Le cas le plus probable est souvent qu'il y a un firewall ou un routeur sur le chemin qui bloque l'ICMP car c'est beaucoup plus rare d'avoir un serveur qui ignore les ICMP retour. La solution la plus simple dans le cas que tu décris est effectivement, comme tu le suggères, de mettre le DF à 0 à l'entrée. Sur les Cisco, par exemple on utilise une route-map sur l'interface avec une commande 'set ip df 0' Sur le Vyatta, tu peux le faire dans l'iptable pour les paquets sortants : iptables -t mangle -A POSTROUTING -j DF --clear pour les paquets entrants : iptables -t mangle -A PREROUTING -j DF --clear et pour le Fortinet, je ne sais pas... Chez Fortinet, c'est dans la policy en cli (config firewall policy puis edit id) tcp-mss-sender maximumsize_int (Enter a TCP Maximum Sending Size number for the sender) DEFAULT : 0 tcp-mss-receiver maximumsize_int (Enter a TCP MSS number for the receiver) DEFAULT : 0 Si tu veux vérifier, un simple show full dans la policy ID te permet de voir l'ensemble des commandes possibles. Le MTU du GRE devrait être de 1476 et ton TCP MSS à 20 de moins. Laurent Le 30/10/2013 16:50, Aurélien a écrit : Hello la liste, Il y a quelques jours, je me suis lancé dans une petite aventure consistant à essayer d'accéder à internet à travers un tunnel GRE et une session BGP. Globalement, ça me diminue ma MTU à 1460, et mon TCP Max Segment à 1436 si j'ai bien tout compris. J'ai réglé cette MTU dans mes équipements d'extrémité (Fortinet d'un côté, Vyatta de l'autre), et j'ai essayé de faire fonctionner le tout. Il semble que sur certains sites cela fonctionne, et sur certains autres non. J'ai fait pas mal de débugs, et j'ai fini par trouver les éléments suivants: - Tous les paquets IP avec du TCP dedans comportent le flag DF, ce qui est nécessaire pour le PMTU. - Il semble que mon routeur Vyatta, au moment où un trop gros paquet devrait rentrer dans le tunnel envoie bien l'ICMP comme quoi ça ne passe pas. Cependant à partir de ce point ça se complique, puisqu'il arrive que la communication passe bien (IE, l'ICMP est reçu, et la communication se poursuit correctement), soit ça ne passe pas, et la source continue à retransmettre comme si le paquet avait été perdu. En creusant plus, j'ai réussi à déterminer que c'était un souci de routage de l'ICMP too-big en question, qui n'arrivait pas forcément à l'hôte qui a émis le paquet, en fonction du load-balancing utilisé pour le site web concerné. Du coup, comme à priori je ne peux pas patcher internet (c) je me demande si il y a un moyen ou pas que mon équipement oublie le flag DF et fragmente quand même mon paquet pour que ça passe ? Est-ce que ce type de configs vous paraît raisonnable ? Ou sinon, il y a peut-être une autre solution au problème que je veux résoudre (utilisation de mes propres IP internet derrière une ADSL classique, en backup dégradé d'un lien dédié) ? Avez-vous déjà réalisé ce type de configurations ? Avez-vous des solutions à ce type de souci de fragmentation ? Merci pour vos réponses ! Cordialement, --- Liste de diffusion du FRnOG http://www.frnog.org/ Oups, j'avais pas tout lu en fait, je pense que tu avais déjà changé les mss dans tes policies ? Peut être essayer de forcer au niveau de l'interface du firewall avec un set tcp-mss, en en changeant le comportement du pmtu-icmp (normalement à enable pour renvoyer unreachable) je pense dans la config globale (en cli tjs) Je pense pas qu'il soit possible, comme ca, avec un FG, de changer le bit DF ? -- - Fabien V. @beufanet --- Liste de diffusion du FRnOG http://www.frnog.org/