SuSE Linux: Version 7.3
Kernel: des versions à partir de 2.4.0
Vous utilisez une liaison A-DSL avec la version 7.3 de SuSE Linux et certains serveurs d'Internet ne sont pas joignables. Cela se remarque par le fait que la connexion peut encore être partiellement établie, mais que la transmission de données reste "bloquée", c'est à dire, ne peut pas s'effectuer.
Le fait que la connexion reste "bloquée" n'est pas un problème spécifique à votre connexion A-DSL mais plutôt une conséquence du fait que l'unité de transmission MTU (Maximum Transmission Unit) pour A-DSL (à travers PPPOE) est plus petite. Dans le cas où la méthode décrite ici ne vous aidait pas, veuillez consulter également l'article SDB "" (http://sdb.suse.de/fr/sdb/html/cg_internet.html).
Malheureusement, quelques opérateurs ont mal configuré les "firewalls" de certains serveurs. Ceci est la cause réelle de ce problème.
Il vous faut saisir la valeur 1492 pour les paramètres MTU et MRU dans les fichiers suivants :
/etc/ppp/options
/etc/ppp/peers/pppoe
Saisissez dans le fichier /etc/ppp/peers/pppoe les lignes suivantes :
mtu 1492
mru 1492
Dans le fichier /etc/ppp/options cherchez les paramètres mtu et mru (lignes de commentaires), et modifiez ces lignes comme suit :
mtu 1492
mru 1492
Ici, il est important de bien attribuer la même valeur dans les deux fichiers. Si vous avez saisi la valeur 1492 pour tous les paramètres, vous devriez après cela pouvoir accéder sans problème aux serveurs problématiques tels que gmx.de ou postbank.de.
Vous utilisez un routeur central qui se charge du masquage (masquerading) pour plusieurs ordinateurs. Les clients ne peuvent pas atteindre certains ordinateurs d'Internet. Localement, vous n'avez cependant aucun problème avec votre routeur.
Tout d'abord, vous devez tester sur l'un de vos clients si
c'est vraiment PMTU discovery qui vous cause ce problème. À cette fin, vous
pouvez utiliser la commande ifconfig
dans un terminal afin de
déterminer la taille des paquets à utiliser. Veuillez noter que vous ne
devez pas réduire la carte réseau directement connectée à votre modem A-DSL
dans MTU.
tux@terre:~ $ /sbin/ifconfig eth0 Protocole:Ethernet Adresse hardware 00:10:10:00:01:A4 Adresse inet:10.10.11.102 Bcast:10.10.255.255 Masque:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:93589710 errors:0 dropped:0 overruns:0 frame:0 TX packets:14879178 errors:0 dropped:0 overruns:0 carrier:0 Collisions:0 Longueur de files d'attente (send queue):100 RX bytes:3770027551 (3595.3 Mb) TX bytes:2994365512 (2855.6 Mb) Interrupt:11 Adresse basique:0xd000
Vous pouvez voir en gras ci-dessus la valeur par défaut de 1500 octets pour MTU. Essayez de réduire cette valeur (à cette fin, les permissions d'accès de root sont nécessaires).
root@terre:~ # /sbin/ifconfig eth0 mtu 1400
Si maintenant le serveur problématique peut être atteint, vous pouvez procéder aux modifications suivantes :
Si vous utilisez iptables
, il vous suffira de reconfigurer le
routeur T-DSL. Une configuration spécifique du client n'est pas nécessaire.
Vous devez avoir installé la version 2.4 du noyau Linux sur votre
routeur pour pouvoir utiliser iptables
.
Sur le routeur, saisissez, en tant qu'administrateur root, la commande suivante :
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Cette commande fait en sorte que le routeur modifie l'option "MSS" (taille maximale de segment) qui est échangée entre le serveur dans Internet et un des clients de votre réseau lors de l'établissement de la connexion.
Si vous n'avez aucune permission d'administrateur sur votre routeur, vous pouvez également modifier la configuration de vos clients et prédéfinir une route bien déterminée.
route
. À cette fin, vous
pouvez, par exemple, modifier le fichier /etc/route.conf
comme
suit :
default 10.10.0.8 0.0.0.0 eth0contentez vous simplement d'ajouter ceci à la fin de la ligne :
default 10.10.0.8 0.0.0.0 eth0 mss 1400afin d'ajuster la taille de segment à 1400 octets (normalement : 1448 octets).
/etc/rc.config
par exemple. Recherchez, dans ce
fichier, la partie relative à la configuration de l'interface de réseau, qui
aura, par exemple, la forme suivante :IFCONFIG_0="10.10.11.102 broadcast 10.10.255.255 netmask 255.255.0.0"et saisissez :
IFCONFIG_0="10.10.11.102 broadcast 10.10.255.255 netmask 255.255.0.0 mtu 1400"afin de limiter l'unité MTU à 1400 octets.
213.95.15.200
) de SuSE Linux AG avec
une taille maximale de segment (MSS) de 1400 octets, ajoutez, dans
/etc/route.conf
la ligne suivante : 213.95.15.200 10.10.0.8 255.255.255.255 eth0 mss 1400ou bien - de façon temporaire - sur la ligne de commande (permissions
root
nécessaires !)
route add -host 213.95.15.200 gw 10.10.0.8 eth0 mss 1400
Le fait que la connexion reste "bloquée" n'est pas un problème spécifique à votre connexion A-DSL mais plutôt une conséquence du fait que l'unité de transmission MTU (Maximum Transmission Unit) pour A-DSL (à travers PPPOE) est plus petite. L'unité MTU autorisée peut également être plus petite si vous utilisez certains routeurs commerciaux ou Windows en tant que routeur et des trames (frames) Ethernet autres que les trames Ethernet_II normalement utilisés dans les LAN. Cela est valable également pour les tunnels CIPE ou IP-over-IP.
Les datagrammes (ou paquets) qui seront transmis à travers ces connexions, doivent donc être un peu plus petits qu'habituellement.
Si un datagramme trop grand se présente, voici ce qui se passe normalement : lors de l'arrivée du datagramme sur la route avec une unité MTU plus petite, le routeur qui contient l'adapatateur réseau avec la plus petite unité MTU, procède à une fragmentation transparente. Le datagramme est décomposé en plusieurs petits paquets IP par le routeur, paquets qui sont alors suffisamment petits. L'ordinateur destinataire assemblera à nouveau ces fragments IP.
Cette fragmentation transparente représente une charge énorme pour les routeurs principaux d'Internet qui doivent fragmenter leurs datagrammes (dans le cas, par exemple, de T-DSL en Allemagne, il s'agirait du routeur de Deutsche Telekom). Dans le but de baisser les coûts de l'infrastructure nécessaire à Internet, les systèmes d'exploitation modernes attribuent une "étiquette" (flag) spéciale à chaque datagramme IP, le bit "DF" (en anglais Don't Fragment,c'est à dire, ne pas fragmenter), qui permet d'éviter une surcharge de l'infrastructure. Dans le cas de Linux, cette possibilité a été implémentée depuis la version 2.4 du noyau. L'ensemble s'appelle Path MTU discovery et est décrit dans le document RFC 1191.
Dans le cas où un bit DF accompagne un datagramme IP trop grand que les
routeurs devraient normalement fragmenter, ceux-ci envoient un message ICMP
(Internet Control message protocol) "ICMP: destination unreachable: need
to fragment"
à l'expéditeur de ce datagramme trop grand. Il accompagne
même ce message d'une suggestion de MTU. Le datagramme originel est éliminé par
le routeur. L'ordinateur expéditeur réceptionne le message ICMP et réduit la
taille du datagramme afin de l'envoyer à nouveau.
Si ce message ICMP n'arrive pas à l'expéditeur, la connexion reste "bloquée". Malheureusement, quelques opérateurs ont mal configuré les "firewalls" de certains serveurs importants, et ceux-ci éliminent les messages ICMP. Ceci est la cause réelle du dysfonctionnement.
La connexion reste alors apparemment bloquée parce que chaque côté pense qu'un datagramme a été perdu, et tente de retransmettre le même datagramme inchangé, ce qui, bien entendu, reproduit la même erreur.
MSS
peut être définie pour une route déterminé avec la commande
route
. La taille MSS
est très proche de l'unité MTU.