====== Configuration réseau sous Debian, pour faire comme les grands ====== //Je n'ai jamais trouvé de doc complète pour ça, en tout cas, jamais une qui soit à jour, suffisamment détaillée avec de bonnes références et qui marche.// ''-+- root -+-'' //Ouais, moi non plus, et ça n'en est pas une.//    Tout ce qui va suivre concerne la configuration d'un réseau sous Debian à l'aide du fichier ''/etc/network/interfaces''. Pour éditer ce fichier (qui appartient à ''root''), vous devez obtenir les droits superutilisateurs et lancer un éditeur de texte. * Exemple en mode graphique avec sudo On installe les outils : sudo aptitude install gedit gksu Et on lance l'éditeur de texte : gksudo gedit /etc/network/interfaces * Exemple en mode graphique avec su On installe les outils : su -c "aptitude install gedit gksu" Et on lance l'éditeur de texte : gksu gedit /etc/network/interfaces * Exemple pour les grands sudo vim /etc/network/interfaces ===== Rappels : interfaces réseaux de la machine ===== Par défaut, les interfaces filaires sont numérotées en ''eth''//X// Où //X// est un nombre identifiant la carte réseau : 0 pour la première, 1 pour la suivante, etc. Les interfaces Wifi sont numérotées en ''wlan''//X// ou ''ath''//X//. Il y a d'autres type d'interfaces, comme les interfaces tun/tap, etc. Pour lister les interfaces présentes sur une machine : ifconfig -a Ou, pour ne lister que les interfaces //éveillées// : ifconfig ===== La base : notion d'interfaces ===== Eh oui, dans le fichier ''/etc/network/interfaces'', on définie... des interfaces. Quelle surprise. Une interface va consister en une adresse IP, un masque de sous-réseau, une adresse de diffusion et une adresse de réseau. Ces informations vont être à spécifier par l'utilisateur ou détectées automatiquement. On pourra aussi déclarer d'autres informations dans une interface. * L'interface ''loopback'' Comme chacun sait, le premier interlocuteur de la machine, c'est elle même. Et pour se parler à elle même, outre les socks et autres dbuseries, elle peut utiliser tout //simplement// le réseau. L'adresse IP qu'elle utilise alors est ''127.0.0.1'' associée au nom d'hôte ''localhost''. On déclare l'interface comme suit iface lo inet loopback * L'interface ''dhcp'' Lorsque l'interface obtient sa configuration grâce à un serveur dhcp, on déclare l'interface comme ça : iface mon_interface inet dhcp Par défaut, quand l'interface se montera, elle va envoyer une requête dhcp, le serveur lui répondra en lui donnant une IP, un masque de sous-réseau, une adresse de diffusion, une passerelle et des serveurs DNS. Après ça, la vie est belle et la connexion est prête à l'emploi. * L'interface ''static'' Parfois il n'est pas pertinent ou pas possible de se servir d'un serveur DHCP. Soit parce que c'est trop lent, soit parce qu'il n'y en a pas, soit parce qu'il ne sait pas donner des adresses fixes à ses clients, soit parce qu'il est... en panne. Bref, il y a plus de raisons que vous l'imaginez de ne pas utiliser un serveur DHCP. Voici un exemple de configuration pour un réseau local iface maison inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.254 Il n'est en fait pas nécessaire de renseigner tous ces champs puisque le ''network'' se déduit de l' ''address'' et du ''netmask'' et que le ''broadcast'' se déduit du ''network''. ===== Monter une interface ===== ==== Manuellement ==== Il suffit de taper en tant que superutilisateur ifup interface_réseau=interface_nommée Où //interface_réseau// est une interface apparaissant dans ''ifconfig -a'' et //interface_nommée// une interface définie dans le ''/etc/network/interfaces''. Si les deux interfaces ont le même nom, alors on peut se contenter de taper : ifup interface_réseau ==== Automatiquement au démarrage ==== S'il n'est pas forcément souhaitable de démarrer automatiquement une interface filaire au démarrage quand celle-ci ne sert que rarement, il est en revanche nécessaire de démarrer certaines interfaces avec le système. En particulier, l'interface de loopback doit être démarrée très tôt par le système. L'interface loopback présente sur le système s'appelle ''lo''. On va y monter l'interface ''loop0'' définie dans le fichier ''/etc/network/interfaces''. Pour ce faire, la syntaxe est auto lo=loop0 On notera qu'on peut de manière équivalente faire auto lo=loop0 iface loop0 inet loopback et auto lo iface lo inet loopback La syntaxe et l'abus de notation valent bien sûr pour toutes les interfaces réseau. ==== Automatiquement lors du branchement d'un câble ==== Même chose avec ''allow-hotplug'' en lieu et place de ''auto''. C'est alors ''udev'' qui lancera automatiquement l'interface choisie lors de l'insertion d'un câble (je ne sais pas trop ce qui se passe dans le cas d'une interface wifi) ===== Les interfaces Wifi ===== //Nécessite l'installation du paquet ''wireless-tools''// ==== En WEP ==== Les principaux mots-clés sont ''wireless-essid'', ''wireless-mode'' et ''wireless-key'' (en fait, se sont les ''wireless-''//X// correspondants aux ''iwconfig'' //interface// //X//, voir ''man iwconfig''). Exemple : auto wlan0=wifi-livebox-maison iface wifi-livebox-maison inet dhcp wireless-mode managed wireless-essid LiveboxFab wireless-key s:mangezdespommes Ou encore iface wifi-livebox-voisin inet static wireless-mode managed wireless-essid LiveboxRobert wireless-key 4242424242424242424242 address 192.168.0.42 netmask 255.255.0.0 gateway 192.168.0.1 ==== En WPA ==== //Nécessite l'installation du paquet ''wpasupplicant''.// Ici, c'est un peu le bazar. Il faut utiliser un fichier de configuration de wpa_supplicant. Pour une liste exhaustive des directives, voir ''man wpa_supplicant.conf''. Exemple pour un réseau WPA-PSK EAS (Freebox) avec une carte wifi //classique//. iface wifi-freebox-caroline inet dhcp wpa-driver wext wpa-ssid reseaucaro wpa-conf /etc/wpa_supplicant/wifi-freebox-caroline.conf Et le fichier ''/etc/wpa_supplicant/wifi-freebox-caroline.conf'' network={ ssid="reseaucaro" proto=WPA key_mgmt=WPA-PSK scan_ssid=1 psk="Caroline n'aime pas les souris. Elle utilise urxvt." } **Attention**: pensez à bien régler les permissions de ce fichier pour que seul root puisse y accéder en lecture et en écriture. ou psk=16e108f672e5dc681662707ba88349da8e6e787080f301ce4e35917b99b3f5ab Exemple pour une authentification WPA2-TKIP iface wifi-netgear-alice inet dhcp wpa-driver wext wpa-ssid diguedondaine wpa-conf /etc/wpa_supplicant/wifi-netgear-alice.conf Et le fichier ''/etc/wpa_supplicant/wifi-netgear-alice.conf'' network={ ssid="diguedondaine" proto=RSN key_mgmt=WPA-PSK scan_ssid=1 pairwise=TKIP group=TKIP psk=16e108f672e5dc681662707ba88349da8e6e787080f301ce4e35917b99b3f5ab } **Attention**: de même, pensez à bien régler les permissions de ce fichier pour que seul root puisse y accéder en lecture et en écriture. ===== Spécifier les serveurs DNS ===== //Nécessite le paquet ''resolvconf''.// La grosse plaie quand on spécifie une adresse statiquement c'est que le serveur DNS n'est pas mis à jour et qu'il est difficile de faire en sorte de le spécifier proprement (avec des post-up). Le paquet ''resolvconf'' ajoute la possibilité de définir les entrées du ''/etc/resolv.conf'' depuis l'interface. La syntaxe est la suivante : iface prout0 inet static address 192.168.0.1 netmask 255.255.255.0 gateway 192.168.0.254 dns-nameservers 42.42.42.1 42.42.42.2 dns-domain chezlefab.net dns-search chezlefab.net chadok.info Voir ''man resolvconf'' et ''man resolv.conf'' pour plus d'options. ===== Profils itinérants et mapping ===== Bon, c'est là que les choses se corsent. Ayant un portable, je le connecte souvent à des réseaux différents. Le réseau du labo qui est filaire et fonctionne par dhcp, le réseau de mon appart en Wifi sur ma Freebox, le réseau de mes parents soit en Wifi sur une Livebox soit en filaire sur la même Livebox, et je passe toutes les *box de mes connaissances. Pour épater ses amis, un bon truc, c'est d'utiliser le mapping. Le principe est le suivant. Un script détecte sur une interface donnée la présence où non d'une machine (identification par adresse MAC) d'une borne Wifi (identification par SSID) ou autre. En fonction de cela, une interface ou l'autre de ''/etc/network/interfaces'' est //montée// sur une des interfaces de la machine. Pour la suite, j'utiliserai le paquet ''guessnet''. Comme d'habitude, un exemple vaut mieux qu'un long discours : ==== Mon mapping Wifi avec guessnet ==== Premièrement, le bloc ''mapping'' : mapping wlan0 script /usr/sbin/guessnet-ifupdown map timeout: 3 map verbose: true map wifi-livebox-maison wifi-freebox-caroline wifi-netgear-alice * L'argument donné à ''script'' est particulier à la méthode utilisée ici (''guessnet''). * ''map timeout:'' On définit un timeout pour le cas où la détection serait trop longue. * ''map verbose:'' On n'a pas peur d'afficher les détails d'exécution du script. * ''map'' on définit la liste des interfaces à tester. Maintenant, voyons comment sont renseignés les tests à faire dans chacune des interfaces. Je ne reprends que la première ligne des interfaces déjà définies plus haut. iface wifi-livebox-maison inet static ... test wireless essid LiveboxFab iface wifi-livebox-caroline inet dhcp ... test wireless essid reseaucaro mac 00:11:22:33:44:55 * Le premier test recherche un réseau de SSID ''LiveboxFab''. Si le test réussit, la c'est wifi-livebox-maison qui est montée sur ''wlan0''. * Le second test recherche un réseau de SSID ''reseaucaro'' et d'adresse mac ''00:11:22:33:44:55''. De la même manière, si le test réussit, c'est wifi-livebox-caroline qui est montée sur ''wlan0''. Les tests sont effectués sur les interfaces suivant l'ordre d'apparition de celles-ci dans l'argument ''map'' du bloc ''mapping''. Si aucun test ne réussit, il est possible de lancer une interface par défaut. Pour ce faire, il faut la définir dans le ''mapping'' avec une ligne : mapping wlan0 ... map default: ether-dhcp Je ne veux pas que le Wifi soit monté automatiquement. Je tape donc ifup wlan0 manuellement quand je souhaite l'activer, et ifdown wlan0 pour le désactiver. Il est possible de //docker// ces commandes pour les adeptes du clickodrôme. ==== Mon mapping Ethernet avec guessnet ==== Le test à effectuer n'est plus ''wireless'' mais ''peer''. On peut par exemple vérifier que la machine ''192.168.0.254'' existe et a pour addresse mac ''00:cc:22:77:cc:44'' avec la ligne test peer address 192.168.0.254 mac 00:cc:22:77:cc:44 À utiliser en combinaison avec ''allow-hotplug'' pour un confort d'utilisation plus grand ^^ Pour plus d'informations sur les //tests// fournis par ''guessnet'' : ''man guessnet''. ===== Les bridges ===== //À venir… ou pas !// ===== Récapitulatif ===== Voici un petit fichier ''/etc/network/interfaces'' contenant tout ce que nous venons de voir. #################################### # Interface de loopback # #################################### auto lo iface lo inet loopback #################################### # Interface réseau filaire # #################################### allow-hotplug eth0 ## Mapping mapping eth0 script /usr/sbin/guessnet-ifupdown map timeout: 3 map verbose: true map ether-livebox-maison ether-bureau map default: ether-dhcp ## Ethernet maison iface ether-livebox-maison inet dhcp test peer address 192.168.0.254 mac 00:cc:22:77:cc:44 ## Ethernet bureau iface ether-bureau inet static address 172.0.42.42 network 172.0.0.0 netmask 255.255.0.0 broadcast 172.0.255.255 gateway 172.0.255.254 dns-nameservers 42.42.42.1 42.42.42.2 test peer address 172.0.255.254 mac 00:cc:22:77:cc:45 ## Ethernet default iface ether-dhcp inet dhcp #################################### # Interface réseau Wifi # #################################### ## Mapping mapping wlan0 script /usr/sbin/guessnet-ifupdown map timeout: 3 map verbose: true map wifi-livebox-maison wifi-freebox-caroline wifi-netgear-alice ## Wifi maison iface wifi-livebox-maison inet dhcp wireless-mode managed wireless-essid LiveboxFab wireless-key s:mangezdespommes test wireless essid LiveboxFab ## Wifi caroline iface wifi-freebox-caroline inet dhcp wpa-driver wext wpa-ssid reseaucaro wpa-conf /etc/wpa_supplicant/wifi-freebox-caroline.conf test wireless essid reseaucaro ## Wifi alice iface wifi-netgear-alice inet dhcp wpa-driver wext wpa-ssid diguedondaine wpa-conf /etc/wpa_supplicant/wifi-netgear-alice.conf test wireless essid diguedondaine ===== Voir aussi ===== * [[:tuto_nix:installation_squeeze#configuration_du_reseau|Installation de Debian Squeeze (suite)]] ===== Remerciements ===== **smolski** de [[http://debian-facile.org|debian-facile]] pour sa relecture et ses réflexions pertinentes et constructives, trôôôôôôôôôôôô bien !