Introduction
Comme tous les jours, ce matin là, je démarre mon pc pour le rituel de la journée qui consiste simplement à lire mes mails, lire mes flux rss...
Ubuntu démarre, je me loggue, Gnome se lance, Liferea fait de même et commence à télécharger certain flux, je constate que certains sites ne répondent pas durant la lecture de leur flux rss, je n'y prête pas attention pour le moment, Gaim se lance lui aussi, semble se connecter, confirme sa connection mais aucun contact n'apparait. Je lance ma messagerie qui semble faire beaucoup d'effort pour se logguer mais rien en retour, pas même un message d'erreur...
Là, j'ai de sérieu doute sur l'état du réseau, je test depuis une autre machine Ubuntu et tout fonctionne parfaitement.
Je reviens sur ma machine, je teste une connection sur Internet et le problème se confirme, pratiquement aucun site ne répond, google répond sans problème, mon réseau local aussi, j'ai encore un DUAL BOOT, j'en profite pour démarrer sous Window$ et tout marche correctement, je peux accéder à tous les sites qui ne fonctionnait pas sous ma Ubuntu.
Etant passé il y a une semaine en réseau gigabit et ayant fait des modifications sur le MTU (Max Transfer Unit qui est la taille maximale d'un paquet) de ma carte en le passant à 9000, de gros soupçons était porté vers cette modification, après quelques recherches sur Internet, mon intuition fut confirmée, un problème similaire (Forum Ubuntu-fr).
Solution
Si vous avez les mêmes symptômes, il y a fort à parier que vous ayez le même mal qui peut se régler de la manière suivante en changeant le MTU :
$ sudo ifconfig eth1 mtu 1300
Bien sûr, remplacez eth1 par votre interface incriminée, 1300 est la valeur maximale que je ne peux dépassé actuellement, par défaut, le mtu est de 1500 et je suis resté avec un MTU de 9000 pendant une semaine sans le moindre problème et du jour au lendemain, sans la moindre modification de ma part oû que ce soit, je suis obligé de redescendre le MTU à 1300.
Automatisons cette tâche
Faire cette manipulation à chaque démarrage de votre PC n'est pas vraiment pratique, voici 2 méthodes selon que votre IP soit addressée par un DHCP ou non.
Sur un système à IP fixe
Editez le fichier interfaces de votre système
$ sudo vi /etc/network/interfaces
Et ajoutez ceci à la fin de la déclaration de l'interface problématique :
mtu 1300
Vous devriez obtenir ceci :
[...] auto eth1 iface eth1 inet static address 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255 network 192.168.0.0 mtu 1300 [...]
Sur un système à DHCP
Si l'adressage se fait par DHCP, voici la méthode, elle se déroule en 2 parties, une sur le serveur DHCP et une sur le poste client :
Sur le serveur DHCP dont je n'expliquera pas l'installation ni la configuration car je suppose que c'est déjà fait, ouvrez le fichier /etc/dhcpd.conf avec votre éditeur préféré :
$ sudo vi /etc/dhcpd.conf
Il faut en fait, dire au serveur DHCP quel tel machine qui possède tel adresse MAC doit avoir tel IP (pas obligatoire) et ce qui nous intéresse tel MTU, rajoutez ces lignes :
[...] host nom_de_votre_machine { hardware ethernet 00:11:22:33:44:55; option interface-mtu 1300; } [...]
Ainsi, le serveur DHCP assignera à la carte réseau ayant l'adresse MAC 00:11:22:33:44:55 un MTU de 1300.
Maintenant, il faut configurer le poste client pour lui spécifier qu'il doit accepter de changer son MTU sur l'ordre du DHCP, éditez donc le fichier /etc/dhcp3/dhclient.conf :
$ sudo vi /etc/dhcp3/dhclient.conf
Et dans l'entrée nommée request, ajoutez interface-mtu, vous obtiendrez quelque chose de ce genre là :
[...] request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, host-name, netbios-name-servers, netbios-scope, interface-mtu; [...]
Redémarrez maintenant le client DHCP afin que les modications soient prise en compte.
$ sudo /etc/init.d/dhcp restart
Tester
Assurez-vous que le MTU à bien été modifié une fois le réseau relancé ou une fois le PC démarré :
$ ifconfig eth1 Lien encap:Ethernet HWaddr 00:11:22:33:44:55 inet adr:192.168.0.20 Bcast:192.168.0.255 Masque:255.255.255.0 adr inet6: fe80::211:d8ff:fe9a:7b31/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1300 Metric:1 RX packets:19985 errors:0 dropped:0 overruns:0 frame:0 TX packets:19805 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:6109830 (5.8 MiB) TX bytes:3337188 (3.1 MiB) Interruption:17
lo Lien encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 adr inet6: ::1/128 Scope:Hôte UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:23975 errors:0 dropped:0 overruns:0 frame:0 TX packets:23975 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:6958653 (6.6 MiB) TX bytes:6958653 (6.6 MiB)
Pour en savoir plus
- Ce lien très intéressant propose une autre approche qui est surement plus proche du problème réél http://www.linux-france.org/prj/inetdoc/guides/Advanced-routing-Howto/lartc.cookbook.mtu-route.html