Problème de lenteur de gateway ?

Bonjour,
Je viens pour la première fois sur ce forum car je rencontre un épineux problème.
Par avance je vous remercie du temps que vous prendrez pour me répondre.

J’ai installer une VM de Debian 6.07 32 bits (2.6.35-686) venant de l’ISO “debian-6.0.7-i386-DVD-1.iso” sous VMware Workstation 9.
Pour cette VM, j’ai 3 interfaces réseau physiques : eth0 à eth2. Mais je ne parlerai que de eth1 et eth2.
Je dispose également d’un serveur sous pfSense 2.0.3 64 bits qui fait très bien son job.

Je désire monter une configuration comme suit :
BOX FAI (192.168.225.1) <=> DEBIAN6 [ WAN eth1=192.168.225.3 <=> routage <=> LAN eth2=192.168.220.1 ] <=> pfSense (192.168.220.100)

Sur ma Debian 6
eth1 = 192.168.225.3 (mon WAN, je l’ai testé en static et en DHCP via le serveur DHCP de la BOX pour conserver cette IP)
eth2 = 192.168.220.1 (mon LAN, enfin presque, c’est la partie internet du pfSense)

Cela semble donc très simple.

  • J’ai activé le forward
  • J’ai créé l’entrée dans iptables
  • J’ai créé la route avec la passerelle de la box du FAI (en mode static)

Premier problème :
Si eth1 est en mode static, la saisie de la commande “route” met 5 à 10 secondes pour s’afficher… J’imagine qu’il essaye de résoudre le nom de la passerelle.
Personnellement, cette VM Debian 6 n’a pas besoin de résoudre quoi que ce soit. Elle ne doit travailler qu’avec des IP et pas des noms de domaines. Mais là, je ne sais pas comment faire.

Second problème et GROS problème :
je teste derrière mon pfSense (car pour l’instant impossible de tester derrière la VM Debian 6 - Edit: voir le post suivant pour un autre test), et je lance mes tests de débit sur speedtest et testmy.net.
Le ping et le donwload sont toujours excellent, mais l’upload… il faut toujours attendre au moins 30 secondes pour que le test démarrage alors qu’en connection directe, le test est immédiat. Bref l’upload atteint rarement 800Kb/s, de temps à autre moins de 30Kb/s et le plus souvent il y a une erreur (time out, le serveur de répond pas…).
Est-ce un problème connu ? Est-ce un bug ?

J’ai pensé à faire un bridge, mais j’ai choisi cette solution de routage pour la suite : j’ai 2 liens ADSL et un lien VPN à monter plus tard avec du failover… Et donc des scripts de basculement assez pointus.

Qui peut m’indiquer une piste ? J’avoue qu’après plusieurs jours, je sèche.

Je complète mon premier post.

J’ai pas mal galéré pour connecter un machine virtuelle derrière la Debian 6.
J’ai mis une Windows XP SP3 et le le résultat est pire !

J’utilise 6 sites pour tester :

  • speedtest.net affiche “504 - gateway timeout”
  • pingtest.net affiche rien du tout et le site semble en attente de chargement (le sablier)
  • monip.org fonctionne
  • mon-ip.com se charge partiellement, mais le site reste en attente de chargement (le sablier)
  • amonip.com fonctionne partiellement (seule la première page fonctionne)
  • testmy.net fonctionne bizarrement avec le sablier en permanence (le Download Test affiche un débit de 5,4Mbps contre 16 à 17 habituellement, l’Upload Test fonctionne bien avec 840Kbps).

J’en conclu que le problème ne vient pas de mon pfSense.

Edit :
Je viens de faire une petite modif, j’ai désactivé le TSO des ports eth1 et eth2 de mon Debian 6 (ethtool -K tso off). Cela n’a rien changé.

C’est une erreur de frappe ou bien les deux machines ont la même adresse 192.168.220.1 ?

Erreur de frappe, merci.
Je corrige cela tout de suite !

Alors… (nota: j’connais pas pfsense);

[quote]
BOX FAI (192.168.225.1) <=> DEBIAN6 [ WAN eth1=192.168.225.3 <=> routage <=> LAN eth2=192.168.220.1 ] <=> pfSense (192.168.220.100)[/quote]
Ok, donc t’as une gw vers le web
T’as une Debian branchée dessus
Et le reste du lan est branché sur la Debian
Donc a priori, tu ne devrais pas faire de NAT (il faut mettre un DHCP sur la Debian, ou de configurer des IP statiques, ou de configurer les DHCP de la box et du lan de façon à éviter des conflits IP)

[quote]
Si eth1 est en mode static, la saisie de la commande “route” met 5 à 10 secondes pour s’afficher… J’imagine qu’il essaye de résoudre le nom de la passerelle.[/quote]
C’est tout à fait possible, utilise l’option -n pour bypasser la resolution DNS:

route -n

[quote]
Personnellement, cette VM Debian 6 n’a pas besoin de résoudre quoi que ce soit. Elle ne doit travailler qu’avec des IP et pas des noms de domaines. Mais là, je ne sais pas comment faire.[/quote]
Si tu veux vraiment ça, désactive le DNS (exemple si ta Debian n’est pas serveur DNS évidement):echo "nameserver 127.0.0.1" > /etc/resolv.conf
En prime, si tu utilises un client DHCP et que ce dernier change automatiquement ton DNS, pour bloquer le fichier (requiert un FS ext*):

#Bloquer le fichier
chattr +i /etc/resolv.conf
#Debloquer le fichier
chattr -i /etc/resolv.conf

Niveau ping / speedtest / etc, je flaire une perte de paquet, du à un encombrement réseau, à un lien défaillant ou à une configuration logicielle incorrecte (peut-être pfsense, je ne connais toujours pas)

Essaye de tester “en direct”, c’est à dire avec rien de plus qu’un switch entre le client et la Debian (je crois comprendre que tu as testé depuis la Debian, et que ca fonctionne au poil);

Bon, ton lien VPN est dans les couches supéieures, donc qu’importe
Pour les liens ADSL, si je comprends bien, tu veux brancher la machine sur deux interfaces, et avoir le réseau par l’une ou par l’autre (eg: si l’une tombe en panne, tout passe par l’autre lien) ?

Si oui, ne te prend pas la tête, utilise le bounding
Du coup, tu peux avoir la configuration suivante (mieux, si j’ai compris ton idée):

  • bond0: eth0 & eth1
  • br0: bond0 & eth3

Les deux liens ADSL en eth0 et eth1, le côté lan en eth3

Merci pour ces précisions haleth.

Je vais étayer mes propos. Comme quoi on peut se relire 10 fois, ça ne suffit pas pour faire preuve d’empathie…

A savoir, pour tester, j’ai branché un Windows XP derrière la debian avec elle comme gateway. Et comme indiqué plus haut, ça ne fonctionne pas mieux.

Dans un premier temps, je souhaite au moins que mon Windows XP branché sur la Debian fonctionne correctement.
Pour y arriver, car il faut avancer, je suis en train d’installer une Debian 7, mais je préfèrerai conserver ma Debian 6.

Si ce problème de routage sur ma Debian 6 est résolue, je pourrais faire mon tuto sur MLVPN (c’est aussi pourquoi je ne veux pas utiliser le bonding).

J’ai donc tester une Debian 7 tout simplement en tant que Gateway et cela fonctionne parfaitement. Dommage que la gestion de la souris avec VMWare Tools ne fonctionne pas.
Ce problème de souris étant pour moi très gênant, j’ai installé une autre Debian 6 et là, cela fonctionne !!! Debian 6 en gateway fonctionne très bien, je n’y comprend rien…
Cela fonctionne très bien, mais seulement jusqu’à une certaine limite : Si la Debian 6 faisant office de gateway pour Windows XP fonctionne parfaitement, je retrouve exactement les mêmes problèmes lorsque j’utilise pfSense derrière.

C’est déjà une avancée.
Cela reste cependant incompréhensible, j’ai forcément dû faire quelque chose qu’il ne fallait pas sur mon ancienne Debian 6.

Donc pour l’instant, je cherche à comprendre ce qui coince entre la Debian 6 et pfSense et je procède par étape.

Pour cela le fonctionnement est très simple :
BOX FAI (192.168.225.1) <=> DEBIAN 6 (eth1:192.168.225.3 <=> routage <=> eth2:192.168.220.1) <=> pfSense (192.168.220.100)

Il faut donc que je trouve un moyen de faire traverser les paquets de ma box FAI vers mon pfSense comme en mode Bridge, mais sans utiliser le mode Bridge et là… Je souhaite que tous les paquets doivent simplement traverser sans aucun filtrage.
La finalité de ma Debian 6 n’étant pas le filtrage.

[quote=“haleth”]Si tu veux vraiment ça, désactive le DNS (exemple si ta Debian n’est pas serveur DNS évidement):

Cela ne désactive pas le DNS, mais indique seulement au resolver d’envoyer les requêtes DNS à la machine elle-même. Si elle n’est pas serveur DNS, il y aura toujours le délai d’attente pour absence de réponse.
Pour désactiver les requêtes DNS, il faut configurer le resolver pour ne pas utiliser DNS via les fichiers /etc/host.conf et /etc/nsswitch.conf.

[quote=“haleth”]En prime, si tu utilises un client DHCP et que ce dernier change automatiquement ton DNS, pour bloquer le fichier (requiert un FS ext*):

#Bloquer le fichier chattr +i /etc/resolv.conf[/quote]
C’est une méthode de barbare. Il est plus civilisé de configurer le client DHCP pour ne pas modifier resolv.conf, ou d’installer et configurer resolvconf pour ne pas modifier resolv.conf avec les information provenant du client DHCP.

Concernant le problème de base, je n’ai pas trop d’idées. Mais je mesurerais le débit montant avec autre chose que des sites de test, par exemple un bon vieux serveur FTP. Avec une capture de paquets pour voir où ça coince.

Merci pour tous ces conseils précieux.
Sachant que je perdais trop de temps, j’ai (hélas) laissé tomber.
Dans l’immédiat, je suis passer un un multilink-vpn avec 2 serveurs pfSense (sur mon site et chez OVH). Le débit est correct : 28Mbits/s réel en down et 1,6Mbits/s réel en up. Ping augmenté de 15 à 20ms (avec la TV allumée en HD, le débit down baisse pour atteindre 16 à 17Mbits/s)

Voici ce dont je dispose :

  • J’ai 2 lignes ADSL dont une peut être utilisée pour la TV (donc avec un débit pouvant fluctuer)
  • J’ai un serveur chez OVH avec 4 IP fixes

Voici mon objectif au final :

  • Monter un lien agrégé entre mon site et OVH afin de profiter de : débit plus élevé, failover, et peering élevé de OVH (c’est flagrant sur Youtube par exemple).
  • Pouvoir maximiser le débit des 2 lignes ADSL en permanence ainsi que la latence (un vrai cumul des débits)

Pourquoi Debian 6

  • Il est très répandu, trouvé de l’aide est aisé.
  • C’est une Debian (et pas un BSD ou une Red Hat), et je connais un tout petit peu mieux Debian que les autres.
  • Car le logiciel MLVPN est entièrement codé en C dont l’auteur l’utilise sur une Debian 6 (et je suis aussi programmeur C et je voulais grandement améliorer ce logiciel).

Dans l’immédiat, je n’ai toujours pas d’explication à la problématique vu ici : BOX FAI <=> DEBIAN 6 <=> pfSense
Je ne comprend toujours pas pourquoi il a ces blocages (blocages également présents en FTP).

T’as regardé le bounding, cf #5 ?

Avec pfSense, je suis malheureusement obligé d’utiliser le bonding.
Le problème du bonding, c’est qu’il n’est pas du tout adaptatif.
En mode Round-Robin, il faut que les 2 canaux est les mêmes caractéristiques. Si ce n’est pas le cas, le calage s’effectuera sur le plus mauvais (14Mbits et 18Mbits => 28Mbits).

A l’inverse, le programme MLVPN se charge de rassembler les 2 liens directement au sein d’un seul protocole et d’un seul lien, donc pas besoin de bonding.

A noter que j’ai pu déjà tester plusieurs solution dont ZeroShell, mais ce dernier ne m’a pas du tout donné satisfaction.

Mon idée de base, c’est d’arriver à faire fonctionner MLVPN en mode UDP de façon plus efficace en modifiant le programme puis peut-être voir pour le faire travailler directement sur un autre protocole (GRE, ICMP, OSPF, RUDP…).