====== Réseau ====== ===== Wifi ===== <note tips>Tout ça sans Network-Manager **vade retro satanas**</note> La gestion du wifi peut passer par plusieurs biais: * /etc/network/interfaces * iwconfig * wpa_supplicant ==== Lister les réseaux wifi ==== <code bash> sudo iwlist scanning | less sudo iwlist wlan0 scanning | less </code> Exemple de résultat: <file bash> Cell 03 - Address: F4:CA:E5:EA:37:AD Channel:1 Frequency:2.412 GHz (Channel 1) Quality=26/70 Signal level=-84 dBm <=========== Encryption key:off <=========== ESSID:"FreeWifi" <=========== Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 22 Mb/s 6 Mb/s; 9 Mb/s; 12 Mb/s Bit Rates:18 Mb/s; 24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s Mode:Master Extra:tsf=00000285527f96a4 Extra: Last beacon: 220ms ago IE: Unknown: 00084672656557696669 IE: Unknown: 010882848B962C0C1218 IE: Unknown: 030101 IE: Unknown: 2A0104 IE: Unknown: 3205243048606C IE: Unknown: 2D1A6C0003FFFFFF0001000000000000000100000000000000000000 IE: Unknown: 3D1601000400000000000000000000000000000000000000 IE: Unknown: 7F080000000000000040 IE: Unknown: DD180050F2020101000003A4000027A4000042435E0062322F00 </file> Si on connait approximativement le nom du réseau wifi, on peut se contenter de n'afficher que la liste des noms: <code bash> sudo iwlist scanning | grep -i essid </code> ==== Connection basique à un réseau ==== <code bash> sudo iwconfig wlan0 essid "FreeWifi" && dhclient wlan0 </code> On spécifie le nom du réseau (**FreeWifi**) puis on demande une adresse ip via le service dhcp pour l'interface wifi (**wlan0**). ==== Gestion de plusieurs réseaux ==== Si on est amené à switcher de réseau (association/maison/travail/amante/…), il peut être intéressant de ne pas avoir à faire cette manipulation à chaque fois :) On peut donc utiliser un gestionnaire de configuration: **ifscheme**. <code bash> sudo aptitude install ifscheme </code> Puis éditer le fichier des interfaces réseaux pour ajouter: * un réseau wifi en dhcp pour maylug * un réseau wifi en dhcp pour la maison <file bash /etc/network/interfaces> allow-hotplug wlan0 mapping wlan0 script ifscheme-mapping iface wlan0-maylug inet dhcp wpa-ssid "Businesslivebox_987698769876" wpa-psk "SUPRA_PASSWORD_DE_LA_MORT" iface wlan0-home inet dhcp wpa-ssid "wookie" wpa-psk "better with butter" </file> Ensuite il suffit de choisir le schéma à utiliser puis d'activer l'interface: <code bash> sudo ifscheme maylug sudo ifup wlan0 </code> Et une fois de retour à la maison: <code bash> sudo ifscheme home sudo ifup wlan0 </code> <note info>Si on choisit de mettre la clef wifi en clair dans le fichier, il est plus judicieux dans limiter les droits: <code bash>sudo chmod 0600 /etc/networks/interfaces</code></note> ==== Réseau exotique ==== Jusqu'à récemment, les deux solutions précédentes ne m'ont pas fait défaut: besoin de me connecter à un réseau un peu plus "exotique" qui ne voulait pas fonctionner via ifscheme ( et qui n'envoie pas d'informations sur la configuration à utiliser … ). La solution: passer par wpa_supplicant + wpa_gui (pour demander le mot de passe): <code bash> sudo aptitude install wpasupplicant wpagui </code> <file bash /etc/wpa_supplicant/wpa_supplicant.conf> ctrl_interface=/var/run/wpa_supplicant #update_config=1 # =1 -> autoriser wpa_gui à modifier la configuration network={ ssid="network_NAME" proto=RSN key_mgmt=WPA-EAP pairwise=CCMP auth_alg=OPEN eap=TTLS identity="IDENTIFIANT_DE_CONNECTION" # password="AVOID" ca_cert="/usr/share/ca-certificates/mozilla/AddTrust_External_Root.crt" #phase1="peaplabel=0" phase2="auth=PAP" # disabled=1 # Désactiver la connection automatique } </file> Lancer d'abord **wpa_gui** (permet de saisir le mot de passe de connection) puis lancer wpa_supplicant: <code bash> sudo wpa_supplicant -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf sudo wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf # En mode deamon </code> ===== Bonding ===== Aka: agrégation de cartes réseaux Installer l'outil nécessaire: <code bash> sudo aptitude install ifenslave </code> <note info>Il est préférable d'utiliser **ifenslave** (compatible noyau 2.6.x + 3.x.x) plutôt que //ifenslave-2.6// (limité aux noyaux 2.6.x).</note> Puis éditer la configuration réseau: <file bash /etc/network/interfaces> # The first network interface auto eth0 iface eth0 inet manual # The second network interface auto eth1 iface eth1 inet manual # Bonding between eth0 + eth1 auto bond0 iface bond0 inet static address 192.168.0.10 netmask 255.255.255.0 network 192.168.0.0 network 192.168.0.254 slaves eth0 eth1 bond_mode active-backup bond_miimon 100 bond_downdelay 200 bond_updelay 200 ############################## </file> Charger le module noyau une première fois: <code bash> sudo modprobe bonding </code> <note info>Le système devrait le charger tout seul par la suite. Si ce n'est pas le cas, regarder du côté de **/etc/modules-load.d** ou **/etc/modules**</note> On peut ensuite tenter un redémarrage du réseau: <code bash> sudo service networking restart </code> <note warning>Je conseille fortement de **redémarrer complètement le système** pour vérifier que le comportement obtenu est bien celui souhaité!</note> Une fois le tout validé, eth1 devrait prendre la main si eth0 venait à tomber :) ===== Bridge ===== ==== Mise en place ==== Il est tout d'abord nécessaire d'installer un paquet supplémentaire: <code bash> aptitude install bridge-utils </code> Et ensuite on peut modifier le fichier qui liste les interfaces réseaux: <file bash /etc/network/interfaces> # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet manual auto br0 allow-hotplug br0 iface br0 inet dhcp bridge_ports eth0 bridge_stp off bridge_maxwait 0 bridge_fd 0 </file> On peut ensuite redémarrer le réseau: <code bash> service networking restart </code> Quand c'est pour un serveur, j'aime bien redémarrer la machine pour m'assurer que tout se passe correctement. ===== Changer une carte réseau ===== La définition de toutes les cartes réseaux qui ont pu être installées sur un système Debian se trouve dans le fichier: <file bash /etc/udev/rules.d/> # This file was automatically generated by the /lib/udev/write_net_rules # program, run by the persistent-net-generator.rules rules file. # # You can modify it, as long as you keep each rule on a single # line, and change only the value of the NAME= key. # PCI device 0x8086:0x1503 (e1000e) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="4c:72:b9:43:39:15", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" </file> Si on se retrouve dans le cas d'une carte réseau hs qui vient d'être changée. On a donc la seule carte réseau qui se retrouve avec **eth1** au lieu de **eth0** par exemple. Ça peut foutre une configuration réseau en l'air =). Il suffit de supprimer toutes les lignes du fichier et il sera automatiquement régénéré au prochain démarrage de la machine. Si on possède plusieurs cartes réseaux, on peut se contenter de les renommer manuellement. ===== Renommer une interface réseau ===== Voilà qu'une ancienne adresse MAC était restée configurée das le fichier /etc/udev/rules.d/70-persistent-net.rules faisant passer une interface réseau eth1 pour une interface eth3. Nous venons de voir qu'il suffit de modifier le fichier des règles udev persistantes pour qu'au prochain démarrage, tout redevienne comme avant. Sauf que si vous ne souhaitez pas re-démarrer, voci comment procéder : - Desactiver l'interface eth3<code bash># ifconfig eth3 down</code> - Modifier le fichier /etc/udev/rules.d/70-persistent-net.rules pour remplacer la valeur "eth3" par "eth1" - Recharger les règles udev<code bash># udevadm control --reload-rules</code> - Faire un nouveau trigger<code bash># udevadm trigger --attr-match=subsystem=net</code> - Recharger le service udev<code bash># /etc/init.d/udev restart</code> - Renommer les interfaces<code bash> # ifconfig -a | grep -i --color hwaddr # ip link set dev eth3 name eth1 # ifconfig eth1 up # dhclient eth1 </code>