====== Configuration du réseau ===== >**Sujet** : Résolution des problèmes liés au réseau >**Niveau** : Facile >**Auteur** : [[utilisateurs:bofh]], révisé par [[utilisateurs:calimarno]] (17.09.2006) ===== Introduction ===== Cette page de documentation décrit les procédures de diagnostic utiles pour isoler et confirmer la nature de votre problème lorsque vous n'arrivez pas à configurer correctement votre réseau. Par exemple, si : * [[#Votre station ou votre passerelle Linux n'accède pas à Internet]], * Votre passerelle Linux accède a Internet, mais [[#votre connexion n'est pas partagée]]. NB : Ce document est indépendant d'une distribution particulière et devrait être utile sur n'importe quelle distribution. Néanmoins, certaines distributions peuvent proposer des manières plus élégantes de résoudre les différents problèmes, qui ne seront pas détaillées ici. ====Commandes administrateur==== ATTENTION: les commandes indiquées ici sont soit préfixées par un "$" pour une commande normale, soit par un "#" pour une commande administrateur. Voici une liste de méthodes possibles pour appeler les commandes administrateur: * Préfixer chaque commande avec "sudo" (Ex: "# ifconfig" -> "$ sudo ifconfig" * Lancer ces commandes depuis un shell administrateur, qui peut être obtenu par: * Un login avec l'utilisateur "root" * La commande "sudo -i" * La commande "su -" ===== Votre station ou votre passerelle Linux n'accède pas à Internet ===== Commencez par tester la connectivité avec la commande ''ping'' : $ ping -c 3 128.178.50.12 (L'adresse indiquée est celle d'un des serveurs web de l'EPFL) * Si la commande fonctionne (au moins un paquet transmis), cela signifie que [[#la resolution dns ne fonctionne pas|votre résolution DNS ne fonctionne pas]]. * Si vous rencontrez une erreur, cela signifie que [[#le routage ne fonctionne pas]]. ==== La résolution DNS ne fonctionne pas ==== Vérifiez que le contenu du fichier ''/etc/resolv.conf'' contient au moins une ligne du type : nameserver dont l'adresse IP corresponde à un serveur DNS de votre fournisseur d'accès Internet ou éventuellement à celle de la passerelle par défaut (par exemple si celle-ci est un Modem/Routeur qui fait office de relais DNS.) \\ NB: Si l'interface réseau est configurée en DHCP, le contenu de ''/etc/resolv.conf'' est écrasé automatiquement a chaque attribution d'adresse. Si son contenu est incorrect, le problème se situe dans la configuration du serveur DHCP qui a attribué l'adresse. ==== Le routage ne fonctionne pas ==== - Quel est le type de matériel réseau utilisé ? * Si c'est une carte //Ethernet// (connecteur RJ-45), connecté a un Hub, un Switch, un Modem avec Bridge/Routeur intégré, l'interface souhaitée est: ''eth0'' * Si c'est une carte //WiFi// (802.11a/b/g), le nom peut être ''eth0'', ''wifi0'', ''wlan0'', ''ra0'' ou ''ath0''. * Si c'est un //modem classique// utilisant ''ppp'', l'interface est: ''ppp0'' * Si vous utilisez un //VPN//, et que le réseau cesse de fonctionner dès que vous activez le vpn, l'interface est: ''tun0'' * NB : L'interface ''lo'' est une interface virtuelle destinée aux communications locales. Sa présence indique simplement le fonctionnement du sous-système réseau du noyau, pas le fonctionnement d'un quelconque périphérique réseau. - Exécutez la commande (avec les droits superutilisateur): # ifconfig -a * Si l'interface n'apparaît pas dans la liste, [[#l'interface réseau n'est pas reconnue]]. * Si l'interface apparaît dans la liste, c'est que [[#l'interface réseau ne fonctionne pas]]. === L'interface réseau n'est pas reconnue === Assurez-vous de disposer d'une version récente du noyau et/ou mettez à jour votre distribution. Suivant le type de matériel (Carte réseau PCI ou intégrée a la carte mère ou périphérique USB), essayez une des commandes suivantes: # lspci -v # lsusb -v * Si l'interface réseau n'apparaît nulle part, cela signifie que le noyau ne peut pas accéder au matériel réseau : vérifiez que le périphérique est correctement installé (câbles branchés, carte correctement enfichée dans son slot) et retournez au sommet de la page. * Si l'interface apparaît, mais n'est pas reconnue, c'est que le driver n'a pas enregistré l'interface réseau auprès du noyau. Notez les informations fournies par la commande ci-dessus (Type de matériel, nom du composant, etc.). Utilisez un moteur de recherche ou la documentation du noyau pour déterminer le pilote (driver) approprié pour votre matériel. (NB : S'il s'agit d'un pilote propriétaire, installez-le et passez directement à la section "[[configuration#un module réseau est disponible]]".) \\ Exécutez ensuite les commandes suivantes : # cd /usr/src/linux # make menuconfig et cherchez le driver approprié dans la configuration du noyau. * Si le driver est intégré au noyau (<*>), il y a trois possibilités : - Ce n'est pas le bon driver : relisez soigneusement la documentation. - La configuration dans /usr/src/linux ne reflète pas la configuration du noyau en cours : dans le doute, recompilez et réinstallez le noyau. - Le matériel est trop récent, et est compatible avec ce driver, mais pas encore reconnu : attendez une annonce concernant votre matériel dans le "ChangeLog" du noyau sur [[http://www.kernel.org|kernel.org]]. * Si le driver n'est pas sélectionné (< >), sélectionnez le en module (), enregistrez la configuration, entrer les commandes suivantes # make modules # make modules_install et référez-vous au point suivant. == Un module réseau est disponible == Vérifiez la présence de ce module dans le noyau avec la commande lsmod * Si le module est présent, mais que la commande # ifconfig -a n'affiche pas l'interface réseau désirée: Le module ne reconnaît pas le périphérique réseau. la commande # dmesg affiche les messages d'erreur du noyau : le pilote n'est probablement pas le bon ou le matériel est trop récent. * Si le module est absent, le charger en lançant la commande : # modprobe Vérifier le résultat avec la commande 'dmesg'. Si des messages relatifs a la nouvelle interface réseau s'affiche, prendre des dispositions pour que le module soit chargé automatiquement au démarrage, et retourner au début. Si rien ne s'affiche, se référer au cas précédent. === L'interface réseau ne fonctionne pas === (NB : Nous supposons ici que l'interface réseau désirée est ''eth0''; si ce n'est pas le cas pour vous, n'oubliez pas de remplacez ''eth0'' par le nom de votre interface.) \\ Entrez la commande : # ifconfig eth0 * Si le champ ''inet addr'' n'existe pas, il vous faut [[#configurer la couche IP]]. * Si l'interface affiche ''UP'' mais pas ''RUNNING'' * vérifiez que les câbles sont branchés correctement, si c'est une //interface câblée//. * [[#configurer la couche 2 WiFi]], si c'est une //interface WiFi//. * Si le champ ''inet addr'' contient une adresse de commençant par 169.254, vous utilisez la configuration automatique APIPA, utilisable seulement pour communiquer localement. Allez également à [[#configurer la couche IP]] Entrez ensuite la commande: # route -n et vérifiez si une ligne commençant par 0.0.0.0 est présente. - Si vous n'avez aucune ligne commençant par 0.0.0.0 : voir Configuration de la passerelle par défaut FIXME - Si vous avez une ligne commençant par 0.0.0.0 mais que la deuxième colonne ne correspond **pas** à l'adresse IP de votre routeur : votre serveur DHCP local est mal configuré, voir Configuration de la passerelle par défaut FIXME - Si vous avez une ligne commençant par 0.0.0.0 et que la deuxième colonne correspond a l'adresse IP de votre routeur : voir [[#tester la connectivite de la passerelle]] == Configurer la couche IP == Chaque interface utilisant le Protocole Internet (IP) doit se voir attribuer une adresse unique. Ces adresse peuvent être attribuées statiquement ou dynamiquement. La plupart des grandes distributions incluent une manière plus élégante de procéder a cette configuration. Les techniques décrites ici fonctionnent sur toutes les distributions et sont utiles pour le dépannage surtout. * Configuration **statique** à utiliser si : - une plage d'adresse spécifique vous a été explicitement attribuée par votre fournisseur d'accès, - l'interface à configurer appartient a un réseau privé non connecté à Internet, qui utilise une des plages publiques (( **Plages d'adresses publiques : ** Si le réseau à configurer n'est pas relié à Internet, ou seulement à travers du Masquerading (NAT), il existe trois plages d'adresses IP publiques utilisables sans autorisation préalable. Ces plages sont: a) //10.0.0.0 -- 10.255.255.255// (masque par défaut: 255.0.0.0) b) //172.16.0.0 -- 172.16.255.255// (masque par défaut: 255.255.0.0) c) //192.168.0.0 - 192.168.255.255// (masque par défaut: 255.255.255.0) La plupart des modems/routeurs configurés pour le masquerading par défaut utilisent la plage 192.168.1.x, avec x=1 pour l'adresse du routeur lui-même.)), - l'interface à configurer est connectée à Internet via un Modem/Routeur qui applique du Masquerading, et dont le serveur DHCP est désactivé. (Il faut utiliser une des plages publiques ((voir la [[#fn_1|note 1]])) ). Une interface réseau peut être configurée rapidement avec la commande # ifconfig eth0 netmask Il faut également spécifier l'adresse de la passerelle par défaut pour les destinations extérieures : # route add default gw et inscrire les adresses des serveurs DNS dans le fichier ''/etc/resolv.conf'':nameserver nameserver ... * Configuration **dynamique** à utiliser si: - vous utilisez un Modem USB ou un Modem/Bridge, et votre fournisseur d'accès ne vous a pas attribué de plage statique, - vous utilisez un Modem/Routeur configuré pour appliquer du Masquerading (NAT), et qui dispose d'un serveur DHCP intégré. Selon votre distribution, utilisez l'une de ces trois commandes:# dhcpcd # dhclient # pump Il est aussi possible d'activer l'option "IP Kernel Level Autoconfiguration" dans le noyau. == Tester la connectivité de la passerelle == Executez la commande suivante, en remplaçant l'adresse IP par celle de votre passerelle si nécessaire: $ ping -c 1 192.168.1.1 * Le test réussit (au moins un paquet passe): La passerelle est atteignable, mais ne route pas. Vérifiez sa configuration. * Le test échoue. Immédiatement après (refaites le ping si nécessaire), exécutez la commande suivante. # arp -a * Cherchez la ligne correspondant à la passerelle. * La ligne existe et affiche une adresse MAC: la passerelle est atteignable, mais bloque les pings, peut-être pour raison de sécurité. Vérifiez sa configuration. * La ligne existe et affiche "(incomplete)" en lieu de l'adresse: la passerelle n'est pas atteignable, malgré le statut du lien. Si vous êtes connectés à la passerelle à travers un switch, vérifiez les connexions en amont de votre switch. == Configurer la couche 2 WiFi == Si vous utilisez un réseau en mode Infrastructure protégé par WPA, ou que vous utilisez un laptop qui se déplace souvent entre plusieurs réseaux, il faut utiliser [[#wpa_supplicant]]. Dans le cas contraire, vous pouvez vous en tirer avec une [[#configuration WiFi statique]] == Wpa_supplicant == La manière dont wpa_supplicant est lancé varie avec chaque distribution, mais vous pouvez le controler en lancant en root la commande interactive # wpa_cli qui permet de voir le statut WPA. == Configuration WiFi statique == La commande # iwlist scan permet d'identifier les réseaux disponibles, a condition que leur ESSID ne soit pas caché. Pour se connecter à un réseau ad-hoc, entrez # iwconfig eth0 mode Ad-Hoc Pour vous connecter à un réseau en mode infrastructure, entrez # iwconfig eth0 mode Managed Sélectionnez l'identifiant du réseau (ESSID) avec # iwconfig eth0 essid Si nécessaire, entrer la clef WEP, soit sous forme hexadécimale (26 caractères pour le WEP-128): # iwconfig eth0 key 00112233..99 soit sous forme de chaîne de caractères ASCII (13 caractères pour le WEP-128), en la préfixant avec "s:" : # iwconfig eth0 key s:abcdefghijklm Pour les réseaux infrastructure, vérifier l'état avec # iwconfig eth0 Si le champ ''Access Point'' affiche autre chose que ''00:00:00:00:00:00'', l'interface réseau est correctement connectée à la station de base. Si vous utilisez WEP, et que le champ "Rx invalid crypt" donné par iwconfig est non-nul et augmente avec le temps, il est fort probable que votre clef WEP est incorrecte. ===== Votre connexion n'est pas partagée ===== Activez le Forwarding IP: # echo 1 > /proc/sys/net/ipv4/ip_forward Vérifiez l'état de la chaîne de Forwarding du firewall: # iptables -L FORWARD Le cas échéant, il est possible de la vider entièrement avec # iptables -F FORWARD Les stations client doivent être configurées, soit avec des adresses statiques en concordance avec le schéma d'adressage choisi, soit pour utiliser la configuration dynamique par DHCP. Dans ce cas, il est nécessaire d'installer un serveur DHCP (comme ''dhcpd''), généralement sur la passerelle elle-même. Il ne faut pas oublier de définir l'adresse de la passerelle par défaut sur les autres stations du réseau. Il faut s'assurer que la résolution DNS fonctionne; Pour celà, il est possible d'utiliser les adresses des serveurs DNS du fournisseur d'accès Internet, ou d'installer un serveur DNS sur la passerelle (comme BIND). Ces deux paramètres doivent être ajustés sur toutes les stations si celles-ci sont configurées statiquement, ou dans le fichier de configuration du serveur DHCP (''dhcpd.conf'', l'emplacement exact peut varier) si les stations utilisent DHCP. Si le réseau interne utilise une des plages publiques((voir la [[#fn__1|note 1]] )), se référer à la section suivante. FIXME ==== Configuration du Masquerading ==== Les options suivantes doivent être compilées dans le noyau, ou les modules correspondants chargés: * Filtre de paquets IP (aka IPTables) * Support de la table NAT Le masquerading s'active avec: # iptables -t nat -A POSTROUTING --out-interface -j MASQUERADE "interface de sortie" est le nom de l'interface réseau reliée au réseau public (ppp0, dsl0, etc.)