Configuration
réseau wifi et ethernet sous linux debian HOWTO
par Rémy Malgouyres
This page exists in English
Voir aussi mon cours
d'administration réseaux au format pdf.
Introduction
Cette page explique comment configurer son système linux debian
pour pouvoir
utiliser commodément une carte réseau ethernet et une
carte wifi,
en passant facilement d'un mode de connexion à l'autre
et d'un réseau à l'autre.
Typiquement, vous avez chez vous un modem-routeur wifi et ethernet
et vous vous connectez aussi sur votre lieu de travail.
Prérequis : les pilotes de votre carte wifi doivent être
instalés et vous devez
obtenir un acces-point différent de zéro en tapant
iwconfig.
Plan
1. Le fichier resolv.conf
2. Le fichier interfaces
2.A. Pour le wifi
2.B. Pour ethernet DHCP
2.C. Pour ethernet static
3. Obtenir la configuration
courante des interfaces
3.A. Pour le wifi
3.B. Pour ethernet
4. Réinitialisation
du
réseau
5. Scripts shell d'automatisation
5.A. Pour le
wifi
5.B. Pour ethernet
DHCP
5.C. Pour ethernet static
1. Le
fichier resolv.conf
Pour configurer le réseau sous debian, Le plus simple est de
configurer
les fichiers /etc/network/interfaces et /etc/resolv.conf
Voici ci dessous mon fichier /etc/resolv.conf (pour mon fournisseur
d'acces wanadoo.
Les adresses IP à mettre sont les adresses du server de nom (DNS)
primaire et secondaire.)
search
nameserver 193.252.19.3
nameserver 193.252.96.4
2. Le fichier interfaces
2.A. Pour le
wifi
Voici mon fichier /etc/network/interfaces pour le wifi.
Il est configuré comme dhcp, c'est à dire que l'adresse IP
n'est pas fixée dans le système debian, mais est
obtenue du routeur via DHCPREQUEST
J'ai appelé ce fichier /etc/network/interfaces.wifi
Quand je veux utiliser le wifi, je fais un lien symbolique
ln -s /etc/network/interfaces.wifi /etc/network/interfaces
# This file describes the network
interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
#the wifi network interface
# mon interface wifi s'appelle rausb0,
# je l'ai su en tapant ifconfig et iwconfig (voir ci-dessous)
auto rausb0
iface rausb0 inet dhcp
wireless-essid my_essid
wireless-mode managed
wireless-key AF32852BE7A39B522BG60C4353
# la clef qui apparait ici est juste un exemple, ca n'est pas
# vraiment ma clef wep, laquelle est secrete
Le ESSID et la clef WEP doivent être correctement
configurés
sur le modem-routeur.
2.B. Pour
ethernet DHCP
Voici mon fichier /etc/network/interfaces pour la carte ethernet.
Il est configuré comme dhcp, c'est à dire que l'adresse IP
n'est pas fixée dans le système debian, mais est
obtenue du routeur via DHCPREQUEST
J'ai appelé ce fichier /etc/network/interfaces.maison
(j'ai aussi un fichier comme ça pour me connecter au boulot)
Quand je veux utiliser le réseau ethernet, je fais un lien
symbolique
ln -s /etc/network/interfaces.maison /etc/network/interfaces
Note : le réseau 192.168.0 correspond à mon routeur
NETGEAR.
Il faut changer ces valeurs en fonction de la configuration
de votre routeur.
# This file describes the network
interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo eth0
iface lo inet loopback
# The primary network interface
# mon interface ethernet s'appelle eth0,
# je l'ai su en tapant ifconfig (voir ci-dessous)
iface eth0 inet dhcp
2.C. Pour
ethernet static
Au bureau, nous avons un réseau ethernet local qui utilise de
adresses IP statiques.
Mon administrateur réseau m'a donné une adresse IP
fixée à utiliser (pour moi c'est
l'adresse 192.168.151.102).
(je peux aussi configurer mon routeur de la maison pour utiliser
des IP statiques mais ça ne marche pas très bien avec le
wifi).
Voici le fichier /etc/network/interfaces que j'utilise pour l'adressage
statique.
Je l'ai nommé /etc/network/interfaces.work
Quand je veux utiliser le
réseau ethernet static, je fais un lien
symbolique
ln -s /etc/network/interfaces.work /etc/network/interfaces
# This file describes the network
interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
auto eth0
# The primary network interface
# mon interface ethernet s'appelle eth0,
# je l'ai su en tapant ifconfig (voir ci-dessous)
iface eth0 inet static
address 192.168.151.102
netmask 255.255.255.0
broadcast 191.168.151.255
gateway 192.168.151.1
3. Obtenir la configuration
courante des interfaces
3.A. pour le
wifi
En tapant ifconfig on peut voir ses interfaces réseau
(eth0, eth1 ou wlan0 ou rausb0, wifi0 ou autre)
Si votre carte wifi est reconnue, elle doit apparaître avec
un access-point (ou adresse MAC) en tapant iwconfig.
Exemple
Sur mon portable, voici ce que je vois en tapant ifconfig
(ici c'est le wifi qui est configuré et j'ai obtenu
l'adresse 192.168.0.3 par dhcp en tapant /etc/init.d/networking restart
Ceci correspond au réseau 192.168.0 de mon modem-routeur NETGEAR)
(En l'occurence, mon interface wifi est rausb0
parce que j'utilise comme carte wifi
un adaptateur wifi USB avec chipset RALINK
(le Asus
Spacelink WL-167g USB2 adapter)
qui marche avec le driver
rt2570 dont on peut télécharger le source sur le site de
RALINK.)
ifconfig
lo
Link encap:Local Loopback
inet
addr:127.0.0.1 Mask:255.0.0.0
inet6 addr:
::1/128 Scope:Host
UP LOOPBACK
RUNNING MTU:16436 Metric:1
RX packets:92
errors:0 dropped:0 overruns:0 frame:0
TX packets:92
errors:0 dropped:0 overruns:0 carrier:0
collisions:0
txqueuelen:0
RX bytes:6040
(5.8 KiB) TX bytes:6040 (5.8 KiB)
rausb0 Link encap:Ethernet HWaddr
00:24:F2:C1:AB:23
inet
addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr:
fe80::213:d4ff:fef4:cd49/64 Scope:Link
UP BROADCAST
RUNNING MULTICAST MTU:1500 Metric:1
RX packets:421
errors:0 dropped:0 overruns:0 frame:0
TX packets:460
errors:0 dropped:0 overruns:0 carrier:0
collisions:0
txqueuelen:1000
RX bytes:4823848
(4.6 MiB) TX bytes:79806 (77.9 KiB)
iwconfig
lo
no wireless extensions.
eth0 no wireless extensions.
sit0 no wireless extensions.
rausb0 RT2500USB WLAN ESSID:"my_essid"
Mode:Managed Frequency=24.37 MHz Access Point:
00:F0:C3:A4:C1:41
Bit Rate=54
Mb/s
RTS
thr:off Fragment thr:off
Encryption
key:AF32-852B-E7A3-9B52-2BG6-0C43-53
Link
Quality=84/70 Signal level:-62 dBm Noise level:-87 dBm
Rx invalid
nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive
retries:0 Invalid misc:0 Missed beacon:0
3.B. Pour
ethernet
Voici le résultat de ifconfig lorsque je suis configuré
pour éthernet.
(Dans cet exemple, j'ai obtenu l'adresse IP 192.168.0.2 par dhcp
sur mon interface ethernet eth0
en tapant /etc/init.d/networking restart)
eth0
Link encap:Ethernet HWaddr 00:B2:3A:24:F3:C4
inet
addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr:
fe80::2c0:9fff:fef9:95b0/64 Scope:Link
UP BROADCAST
RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6
errors:0 dropped:0 overruns:0 frame:0
TX packets:16
errors:0 dropped:0 overruns:0 carrier:5
collisions:0
txqueuelen:1000
RX bytes:1520
(1.4 KiB) TX bytes:2024 (1.9 KiB)
Interrupt:10
lo Link encap:Local
Loopback
inet
addr:127.0.0.1 Mask:255.0.0.0
inet6 addr:
::1/128 Scope:Host
UP LOOPBACK
RUNNING MTU:16436 Metric:1
RX packets:92
errors:0 dropped:0 overruns:0 frame:0
TX packets:92
errors:0 dropped:0 overruns:0 carrier:0
collisions:0
txqueuelen:0
RX bytes:6040
(5.8 KiB) TX bytes:6040 (5.8 KiB)
4.
Réinitialisation du
réseau
Lorsqu'on a les fichiers /etc/network/interfaces et /etc/resolv.conf
bien configurés (soit pour le wifi, soit pour l'ethernet),
et lorsque l'interface réseau correspondante apparaît en
tapant ifconfig,
pour initialiser le réseau et obtenir une adresse IP, il faut
faire
/etc/init.d/networking restart
Remarque.
Avec ma carte wifi, la réinitialisation
répétée du réseau lors
d'une perte de contact entre l'ordinateur et le routeur
(ça arrive avec le wifi) rendait le système instable
(blocage du système qui obligeait à rebooter).
Pour éviter cela, avant de réinitialiser le réseau,
je tue le processus dhclient
killall -9 dhclient
Pour passer d'un réseau à l'autre (wifi à ethernet
et inversement), après avoir
tué le dhclient, j'utilise ifconfig. Par exemple, avec mes
interfaces rausb0 du wifi
et eth0 pour ethernet (à vous d'adapter pour vos interfaces
obtenues en tapant
ifconfig)
i) Pour passer du wifi à ethernet :
ifconfig rausb0 down
ifconfig eth0 up
Je modifie ensuite les liens sur les fichiers interfaces
et je réinitialise le réseau
ii) pour passer d'ethernet au wifi
ifconfig eth0 down
ifconfig rausb0 up
Je modifie ensuite les liens sur les fichiers interfaces
et je réinitialise le réseau
5. Scripts
shell d'automatisation
Attention : les scripts
suivants suppriment brutalement
les fichiers /etc/network/interfaces et /etc/resolv.conf
Vous pouvez faire une copie de ce fichier avant de lancer le script :
cd /etc/
cp resolv.conf resolv.conf.old
cd network
cp interfaces interfaces.old
Pour que ces scripts fonctionnent, il faut les modifier
pour mettre les noms de vos interfaces wifi et ethernet
obtenus par ifconfig et iwconfig (voir commentaires ci-dessous).
Il faut aussi modifier les adresses IP pour mettre les
adresses correspondant à la configuration de votre routeur.
Pour simplifier les scripts, j'ai configuré my routeur
(configuré en serveur DHCP)
pour qu'il réserve des adresses IP fixes correspondant
à mes adresses MAC (acces point de iwconfig pour le wifi et
HWaddr de ifconfig pour ethernet).
Cela permet d'obtenir toujours les mêmes adresses IP par dhcp,
ce qui facilite les tests.
5.A.
Pour le wifi
# Script de lancement du wifi.
mettre dans un fichier avec droits en execution
# a executer en tant que root
# ou bien en tant qu'utilisateur avec sudo
# En utilisant visudo root peut permettre a un utilisateur
# de lancer ce script sans taper le mot de passe de root
# et de démarer le réseau wifi
rm /etc/network/interfaces
ln -s /etc/network/interfaces.wifi /etc/network/interfaces
rm /etc/resolv.conf
ln -s /etc/resolv.conf.maison /etc/resolv.conf
# changer ici pour mettre votre addresse IP réservée pour
dhcp
WIFI_ADDR=192.168.0.3
# changer ici pour mettre l'adresse IP de votre routeur
ROUTER_ADDR=192.168.0.1
# changer ici si votre interface wi-fi n'est pas rausb0
WIFI_IFACE=rausb0
#changer ici si votre interface ethernet n'est pas eth0
ETHERNET_IFACE=eth0
e=$(ifconfig|grep "$ETHERNET_IFACE")
if [ -n "$e" ]
then
echo "ifconfig $ETHERNET_IFACE down"
ifconfig $ETHERNET_IFACE down
fi
if [ "$1" == "--force" -o -z "$(ifconfig|grep "$WIFI_IFACE")" ]
then
echo "je supprime le lien d\'adresse IP (kill
dhclient)"
killall -9 dhclient
u=
else
u=$(iwconfig 2>/dev/null|grep "$WIFI_IFACE")
fi
if [ -z "$u" ]
then
echo "ifconfig $WIFI_IFACE up"
ifconfig $WIFI_IFACE up
a=$(ifconfig|grep "$WIFI_ADDR")
else
a=$(ifconfig|grep "$WIFI_ADDR")
if [ "$1" == "--force" ]
then
a=
fi
fi
if [ -z "$(iwconfig 2>/dev/null | grep "$WIFI_IFACE")" ]
then
echo "Impossible de configurer $WIFI_IFACE. Probleme
materiel ?"
exit 0
fi
i=0
if [ -z "$a" ]
then
echo "Veuillez patienter, recherche d\'adresse IP"
else
echo Adresse IP OK
fi
while [ -z "$a" -a $i -lt 4 ]
do
echo "restarting reseau"
/etc/init.d/networking restart
i=`expr $i + 1`
a=$(ifconfig|grep "$WIFI_ADDR")
done
if [ -z "$a" ]
then
echo "pas d adresse IP."
echo "Esayez de rebooter le routeur ou relancez le
script"
exit 0
fi
echo "veuillez patienter, test du ping..."
b=$(ping -w 2 -c 1 $ROUTER_ADDR | grep "64 bytes from")
# ping example.com
c=$(ping -w 2 -c 1 google.com | grep "64 bytes from")
if [ -z "$b" ]
then
echo "Echec du ping, mais on a
une adresse IP."
if [ "$1" == "--force" ]
then
echo "Soyez patient et relancez le script (des fois
attendre 1mn)"
else
echo "je supprime le processus"
$0 --force
fi
else
echo "succes du ping sur le
routeur."
if [ -z "$c" ]
then
echo "pas
d\'acces internet"
echo "essayez
de rebooter le routeur"
else
echo "Access
internet O.K. Have fun !"
fi
fi
5.B.
Pour ethernet DHCP
# Script de lancement du reseau
via ethernet
# a lancer en tant que root
# ou bien en tant qu'utilisateur avec sudo
# En utilisant visudo root peut permettre a un utilisateur
# de lancer ce script sans taper le mot de passe de root
rm /etc/network/interfaces
ln -s /etc/network/interfaces.maison /etc/network/interfaces
rm /etc/resolv.conf
ln -s /etc/resolv.conf.maison /etc/resolv.conf
# changer ici pour mettre votre addresse IP réservée pour
dhcp
ETHERNET_ADDR=192.168.0.2
# changer ici pour mettre l'adresse IP de votre routeur
ROUTER_ADDR=192.168.0.1
# changer ici si votre interface wi-fi n'est pas rausb0
WIFI_IFACE=rausb0
#changer ici si votre interface ethernet n'est pas eth0
ETHERNET_IFACE=eth0
e=$(iwconfig 2>/dev/null|grep "$WIFI_IFACE")
if [ -n "$e" ]
then
echo "je supprime le lien d adresse IP (kill
dhclient)"
killall -9 dhclient
echo "ifconfig $WIFI_IFACE
down"
ifconfig $WIFI_IFACE down
fi
u=$(ifconfig|grep "$ETHERNET_IFACE")
if [ -z "$u" ]
then
killall -9 dhclient
echo "ifconfig $ETHERNET_IFACE up"
ifconfig $ETHERNET_IFACE up
fi
a=$(ifconfig|grep "$ETHERNET_ADDR")
if [ -z "$a" -o "$1" == "--force" ]
then
echo "Recherche d\'adresse IP."
/etc/init.d/networking restart
fi
echo "veuillez patienter, test du ping..."
b=$(ping -w 2 -c 1 $ROUTER_ADDR | grep "64 bytes from")
c=$(ping -w 2 -c 1 google.com | grep "64 bytes from")
if [ -z "$b" ]
then
echo "Echec du ping, mais on a
une adresse IP."
if [ "$1" == "--force" ]
then
echo "Soyez patient et retapez maison"
else
echo "je recommence"
$0 --force
fi
else
echo "succes du ping sur le
routeur."
if [ -z "$c" ]
then
echo "pas
d\'acces internet"
echo "essayez
de rebooter le routeur"
else
echo "Acess
internet O.K. Have fun !"
fi
fi
5.C.
Pour ethernet static
# Script de lancement du reseau
via ethernet
# a lancer en tant que root
# ou bien en tant qu'utilisateur avec sudo
# En utilisant visudo root peut permettre a un utilisateur
# de lancer ce script sans taper le mot de passe de root
killall -9 dhclient
rm /etc/network/interfaces
ln -s /etc/network/interfaces.work /etc/network/interfaces
rm /etc/resolv.conf
ln -s /etc/resolv.conf.work /etc/resolv.conf
/etc/init.d/networking restart