Table des matières

Réseau

Wifi

Tout ça sans Network-Manager vade retro satanas

La gestion du wifi peut passer par plusieurs biais:

Lister les réseaux wifi

sudo iwlist scanning | less
sudo iwlist wlan0 scanning | less

Exemple de résultat:

          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

Si on connait approximativement le nom du réseau wifi, on peut se contenter de n'afficher que la liste des noms:

sudo iwlist scanning | grep -i essid

Connection basique à un réseau

sudo iwconfig wlan0 essid "FreeWifi" && dhclient wlan0

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.

sudo aptitude install ifscheme

Puis éditer le fichier des interfaces réseaux pour ajouter:

/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"

Ensuite il suffit de choisir le schéma à utiliser puis d'activer l'interface:

sudo ifscheme maylug
sudo ifup wlan0

Et une fois de retour à la maison:

sudo ifscheme home
sudo ifup wlan0
Si on choisit de mettre la clef wifi en clair dans le fichier, il est plus judicieux dans limiter les droits:
sudo chmod 0600 /etc/networks/interfaces

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):

sudo aptitude install wpasupplicant wpagui
/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
}

Lancer d'abord wpa_gui (permet de saisir le mot de passe de connection) puis lancer wpa_supplicant:

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

Bonding

Aka: agrégation de cartes réseaux

Installer l'outil nécessaire:

sudo aptitude install ifenslave
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).

Puis éditer la configuration réseau:

/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
##############################

Charger le module noyau une première fois:

sudo modprobe bonding
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

On peut ensuite tenter un redémarrage du réseau:

sudo service networking restart
Je conseille fortement de redémarrer complètement le système pour vérifier que le comportement obtenu est bien celui souhaité!

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:

aptitude install bridge-utils

Et ensuite on peut modifier le fichier qui liste les interfaces réseaux:

/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

On peut ensuite redémarrer le réseau:

service networking restart

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:

/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"

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 :

  1. Desactiver l'interface eth3
    # ifconfig eth3 down
  2. Modifier le fichier /etc/udev/rules.d/70-persistent-net.rules pour remplacer la valeur “eth3” par “eth1”
  3. Recharger les règles udev
    # udevadm control --reload-rules
  4. Faire un nouveau trigger
    # udevadm trigger --attr-match=subsystem=net
  5. Recharger le service udev
    # /etc/init.d/udev restart
  6. Renommer les interfaces
    # ifconfig -a | grep -i --color hwaddr
    # ip link set dev eth3 name eth1
    # ifconfig eth1 up
    # dhclient eth1