Configuration réseau sur Debian Testing
Document version 1.0


Retour à la page d'accueil

Table des matières


1 Dans quel cas appliquer cette configuration


2 Configuration

2.1 Environnement DNS

La configuration DNS est définie dans /etc/resolv.conf.
Exemple de fichier /etc/resolv.conf.

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.1.1
nameserver 194.117.200.10

Que lisons-nous dans ce fichier ? Qu'il ne faut surtout pas le modifier à la main. En effet, lorsque le paquetage resolvconf est installé, c'est l'utilitaire éponyme (resolvconf) qui gère son contenu.

Resolvconf peut modifier le fichier /etc/resolv.conf en fonction des connexions réseau établies ou arrêtées, ce qui est très pratique lorsque la configuration DNS peut évoluer (accès Wifi sur borne publique, utilisation de plusieurs fournisseurs d'accès...)
Resolvconf exécute des scripts lors de changements de DNS, pour que des démons comme sendmail et fetchmail s'adaptent. Ces scripts se trouvent dans /etc/resolvconf/update-libc.d.

Si resolvconf est installé (cas par défaut), le fichier /etc/resolv.conf est un lien symbolique vers /etc/resolvconf/run/resolv.conf.

Resolvconf est configuré dans le répertoire /etc/resolvconf.

Empêcher une modification dynamique de /etc/resolv.conf
Une solution est de remplacer le lien symbolique /etc/resolv.conf par un fichier régulier. C'est utile seulement pour faire des tests ou si vous êtes très pressés, car dans ce cas, autant dés-installer resolvconf.

2.2 Connexion par RTC (modem téléphonique)

Ici seul le cas d'un modem externe connecté au port série est traité. Cela rend les choses très simples, car seul l'accès au port série standard est nécessaire, et Linux le gère par défaut. Les modems internes, que l'on trouve le plus souvent sur des portables, ne sont pas toujours faciles à faire reconnaître. C'est le cas sur mon Dell D600, dont le modem intégré est un AC'97 (identifiant PCI : '00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)'), et après de nombreuses tentatives infructueuses de l'utiliser sous Linux, j'ai fini par me rabattre sur un modem externe.

Le conseils donnés plus loin pour identifier les adaptateurs Ethernet peuvent servir à identifier et faire reconnaître un modem interne (ou PCMCIA).

2.2.1 Pré-requis

2.2.1.1 Paquetages Debian

Les paquetages ppp, pppconfig et resolvconf (non nécessaire mais fortement recommandé) sont à installer.
Paquetages installés sur ma Debian :

sebastien@maison-1:~$ dpkg -l "ppp*"
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
| État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé
|/ Err?=(aucune)/H=à garder/besoin Réinstallation/X=les deux (État,Err: majuscule=mauvais)
||/ Nom                           Version                       Description
+++-=============================-=============================-==========================================================================
ii  ppp                           2.4.4rel-4                    Point-to-Point Protocol (PPP) daemon
pn  ppp-dev                       <néant>                       (aucune description n'est disponible)
un  ppp-pam                       <néant>                       (aucune description n'est disponible)
un  ppp-udeb                      <néant>                       (aucune description n'est disponible)
ii  pppconfig                     2.3.15                        A text menu based utility for configuring ppp
pn  pppdcapiplugin                <néant>                       (aucune description n'est disponible)
ii  pppoe                         3.8-1.1                       PPP over Ethernet driver
ii  pppoeconf                     1.12                          configures PPPoE/ADSL connections
pn  pppstatus                     <néant>                       (aucune description n'est disponible)
sebastien@maison-1:~$ dpkg -l "resolvconf"
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
| État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé
|/ Err?=(aucune)/H=à garder/besoin Réinstallation/X=les deux (État,Err: majuscule=mauvais)
||/ Nom                           Version                       Description
+++-=============================-=============================-==========================================================================
ii  resolvconf                    1.37                          nameserver information handler
2.2.1.2 Options de compilation du noyau

Pour utiliser ppp, il est inutile de recompiler le noyau
Si toutefois vous le recompilez, il faut inclure les options ci-dessous, qui se trouvent dans la partie Device Drivers -> Network Device Support.

Remarque

Les compressions DEFLATE et BSDCOMP sont documentées comme facultatives. Elles augmentent le débit en compressant les données transitant par le modem.

CONFIG_PPP=y
# CONFIG_PPP_MULTILINK is not set
CONFIG_PPP_FILTER=y
CONFIG_PPP_ASYNC=y
# CONFIG_PPP_SYNC_TTY is not set
CONFIG_PPP_DEFLATE=y
CONFIG_PPP_BSDCOMP=y

2.2.2 Configuration de la connexion au fournisseur d'accès

Exécuter la commande pppconfig.
Des questions vous sont posées, qui créeront les fichiers nécessaires. Les ports série sont /dev/ttyS0 (premier port de communication série), /dev/ttyS1, etc.
Les fichiers créés ou paramétrés sont (liste non exhaustive) :

/etc/ppp/options Options générales de pppd.
/etc/ppp/peers/nom_connexion Options de pppd pour la connexion (même format que /etc/ppp/options).
/etc/ppp/{chap-secrets,pap-secrets} Mots de passe pour l'authentification par {CHAP, PAP}.
/etc/ppp/resolv/nom_connexion Informations DNS pour la connexion.
/etc/chatscripts/nom_connexion Script de connexion pour le modem.

La connexion se lance avec la commande pon, et se ferme avec poff.

Attention, ces informations ont été mises à jour d'après Debian Stable fin 2005 (=> Sarge).

Modem silencieux

Éditer le fichier /etc/chatscripts/nom_connexion, et ajouter la ligne
OK-AT-OK "ATM0L0"
juste avant la ligne qui contient la commande ATDT.

2.2.3 Fichiers

Fichier /etc/ppp/options

Seules les options activées, avec leurs commentaires, sont reproduites ici.

# /etc/ppp/options
# 
# Originally created by Jim Knoble <jmknoble@mercury.interpath.net>
# Modified for Debian by alvar Bray <alvar@meiko.co.uk>
# Modified for PPP Server setup by Christoph Lameter <clameter@debian.org>
#
# To quickly see what options are active in this file, use this command:
#   egrep -v '#|^ *$' /etc/ppp/options

# async character map -- 32-bit hex; each bit is a character
# that needs to be escaped for pppd to receive it.  0x00000001
# represents '\x01', and 0x80000000 represents '\x1f'.
asyncmap 0

# Require the peer to authenticate itself before allowing network
# packets to be sent or received.
# Please do not disable this setting. It is expected to be standard in
# future releases of pppd. Use the call option (see manpage) to disable
# authentication for specific peers.
auth

# Use hardware flow control (i.e. RTS/CTS) to control the flow of data
# on the serial port.
crtscts

# Specifies that pppd should use a UUCP-style lock on the serial device
# to ensure exclusive access to the device.
lock

# Don't show the passwords when logging the contents of PAP packets.
# This is the default.
hide-password

# Use the modem control lines.  On Ultrix, this option implies hardware
# flow control, as for the crtscts option.  (This option is not fully
# implemented.)
modem

# Add an entry to this system's ARP [Address Resolution Protocol]
# table with the IP address of the peer and the Ethernet address of this
# system.
proxyarp

# If this option is given, pppd will send an LCP echo-request frame to the
# peer every n seconds. Normally the peer should respond to the echo-request
# by sending an echo-reply. This option can be used with the
# lcp-echo-failure option to detect that the peer is no longer connected.
lcp-echo-interval 30

# If this option is given, pppd will presume the peer to be dead if n
# LCP echo-requests are sent without receiving a valid LCP echo-reply.
# If this happens, pppd will terminate the connection.  Use of this
# option requires a non-zero value for the lcp-echo-interval parameter.
# This option can be used to enable pppd to terminate after the physical
# connection has been broken (e.g., the modem has hung up) in
# situations where no hardware modem control lines are available.
lcp-echo-failure 4

# Disable the IPXCP and IPX protocols.
# To let pppd pass IPX packets comment this out --- you'll probably also
# want to install ipxripd, and have the Internal IPX Network option enabled
# in your kernel.  /usr/doc/HOWTO/IPX-HOWTO.gz contains more info.
noipx

# ---<End of File>---
Fichier /etc/ppp/peers/Lsurf.smt
# This optionfile was generated by pppconfig 2.3.10. 
# 
#
hide-password 
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/Lsurf.smt"
debug
/dev/ttyS0
57600
defaultroute
noipdefault 
user "smil0014@lsurf.fr"
remotename Lsurf.smt
ipparam Lsurf.smt

idle 300
Fichier /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client	server	secret			IP addresses

"sebastien.millet1" * "ze_password"

Fichier /etc/ppp/pap-secrets
#
# /etc/ppp/pap-secrets
#
# This is a pap-secrets file to be used with the AUTO_PPP function of
# mgetty. mgetty-0.99 is preconfigured to startup pppd with the login option
# which will cause pppd to consult /etc/passwd (and /etc/shadow in turn)
# after a user has passed this file. Don't be disturbed therfore by the fact
# that this file defines logins with any password for users. /etc/passwd
# (again, /etc/shadow, too) will catch passwd mismatches.
#
# This file should block ALL users that should not be able to do AUTO_PPP.
# AUTO_PPP bypasses the usual login program so its necessary to list all
# system userids with regular passwords here.
#
# ATTENTION: The definitions here can allow users to login without a
# password if you don't use the login option of pppd! The mgetty Debian
# package already provides this option; make sure you don't change that.

# INBOUND connections

# Every regular user can use PPP and has to use passwords from /etc/passwd
*	hostname	""	*

# UserIDs that cannot use PPP at all. Check your /etc/passwd and add any
# other accounts that should not be able to use pppd!
guest	hostname	"*"	-
master	hostname	"*"	-
root	hostname	"*"	-
support	hostname	"*"	-
stats	hostname	"*"	-

# OUTBOUND connections

# Here you should add your userid password to connect to your providers via
# PAP. The * means that the password is to be used for ANY host you connect
# to. Thus you do not have to worry about the foreign machine name. Just
# replace password with your password.
# If you have different providers with different passwords then you better
# remove the following line.

#	*	password

"smil0014@lsurf.fr" Lsurf.smt "myfirstpassword"
"smil0057@alice.fr" Lsurf.ape "my2ndpassword"
Fichier /etc/ppp/resolv/Lsurf.smt
# resolv.conf created by pppconfig for Lsurf.smt
nameserver 194.149.160.1
nameserver 194.149.160.9
Fichier /etc/chatscripts/Lsurf.smt
# This chatfile was generated by pppconfig 2.3.10.
# Please do not delete any of the comments.  Pppconfig needs them.
# 
# ispauth PAP
# abortstring
ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT DELAYED
# modeminit
'' ATZ
OK-AT-OK "ATM0L0"
# ispnumber
OK-AT-OK "ATDT08 60 15 55 55"
# ispconnect
CONNECT \d\c
# prelogin

# ispname
# isppassword
# postlogin

# end of pppconfig stuff

2.3 Connexion par cable Ethernet

La première étape est de faire reconnaître la carte réseau par le noyau. C'est automatique le plus souvent, mais on ne sait jamais.

2.3.1 Identifier l'adaptateur réseau Ethernet cable

Dans le cas le plus fréquent, la carte réseau est connectée au bus PCI. La commande lspci va nous être utile. Exemple :

sebastien@maison-1:~$ lspci
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon R250 [Mobility FireGL 9000] (rev 02)
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5705M Gigabit Ethernet (rev 01)
02:01.0 CardBus bridge: O2 Micro, Inc. OZ711EC1 SmartCardBus Controller (rev 20)
02:01.1 CardBus bridge: O2 Micro, Inc. OZ711EC1 SmartCardBus Controller (rev 20)
02:03.0 Network controller: Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller (rev 03)

Maintenant nous savons que la carte réseau Ethernet cable est une Broadcom BCM5705M Gigabit.

2.3.2 Contrôler que l'adaptateur réseau Ethernet cable est reconnu

Pour s'assurer que la carte est reconnue par le noyau Linux, exécuter la commande dmesg, et aller à la pêche aux informations pertinentes, ce qui n'est pas toujours facile. Exemple, toujours avec une Broadcom 5705M Gigabit.

sebastien@maison-1:~$ dmesg
[...]
tg3.c:v3.69 (November 15, 2006)
[...]
eth0: Tigon3 [partno(BCM95705A50) rev 3001 PHY(5705)] (PCI:33MHz:32-bit) 10/100/1000BaseT Ethernet 00:0f:1f:cd:08:cf
eth0: RXcsums[1] LinkChgREG[1] MIirq[1] ASF[0] Split[0] WireSpeed[1] TSOcap[1]
eth0: dma_rwctrl[763f0000] dma_mask[64-bit]
[...]

Apparemment, tout va bien. La commande ifconfig -a confirme que l'on a bien un périphérique eth0 reconnu comme périphérique réseau :

maison-1:~# ifconfig -a
[...]
eth0      Lien encap:Ethernet  HWaddr 00:0F:1F:CD:08:CF
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interruption:11
[...]
lo        Lien encap:Boucle locale
          inet adr:127.0.0.1  Masque:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:3454 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3454 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:2700922 (2.5 MiB)  TX bytes:2700922 (2.5 MiB)

Il n'y a pas d'adresse IP définie pour eth0 (pas de "inet addr"), contrairement à l'interface loopback (lo). Pour le moment, l'adaptateur eth0 est inutilisable, il va falloir le configurer et le monter.

2.3.3 Configurer l'adaptateur réseau Ethernet cable

La configuration de tous les adaptateurs réseau est faite dans le fichier /etc/network/interfaces. La structure de ce fichier est expliquée dans la page de manuel du fichier interfaces (exécuter man interfaces).

Pour résumer grossièrement la structure de ce fichier :
- La description d'un adaptateur réseau commence par une ligne iface nom_interface options, et les lignes qui suivent définissent certains paramètres comme l'adresse IP. Parfois, la ligne iface se suffit à elle-même.

2.3.3.1 Adresse statique ou DHCP ?

La plupart des boîtiers ADSL sont serveurs DHCP. Personnellement, je préfère fonctionner en adresse IP fixe, cela simplifie la configuration du NAT sur le boîtier ADSL, et la configuration du firewall Linux.

Comment savoir si mon boîtier ADSL est serveur DHCP ?
Configurer puis examiner le résultat ! Il existe sans doute des méthodes plus fines pour examiner le comportement du serveur DHCP, mais cette méthode est la plus simple.

2.3.3.2 Adresse statique

Exemple de fichier /etc/network/interfaces pour une configuration statique. On suppose que le boîtier ADSL a pour adresse IP 192.168.1.1.

Remarque

L'option dns-nameservers évite de configurer le DNS ailleurs.
En l'absence du paquetage resolvconf, il faudrait modifier le fichier /etc/resolv.conf à la main (un exemple se trouve au début de ce document).
Si resolvconf est présent, il faudrait modifier le fichier /etc/resolvconf/resolv.conf.d/base. Mais le paramètre dns-nameservers dans /etc/network/interfaces évite de modifier quoi que ce soit dans resolvconf. C'est le moyen le plus simple et le plus élégant de configurer le DNS. Curieusement, il est peu documenté.

# 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

iface eth0 inet static
    address 192.168.1.2
    network 192.168.1.0
    netmask 255.255.255.0
    broadcast 192.168.1.255
    gateway 192.168.1.1

    dns-nameservers 192.168.1.1 194.117.200.10
2.3.3.3 Adresse dynamique

Exemple de fichier /etc/network/interfaces pour une configuration dynamique (DHCP).
Ici on ne précise pas de serveur DNS, bien que ce soit possible. En général, le serveur DHCP fournit lui-même cette information (en même temps que l'adresse IP).

# 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
iface eth0 inet dhcp

2.4 Connexion par Wifi

Encore une fois, la première étape est de faire reconnaître la carte réseau par le noyau. Et encore une fois, c'est automatique le plus souvent.

2.4.1 Pré-requis

2.4.1.1 Paquetages Debian

Installer le paquetage wireless-tools. Exemple sur ma Debian :

sebastien@maison-1:~$ dpkg -l "wireless*"
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
| État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé
|/ Err?=(aucune)/H=à garder/besoin Réinstallation/X=les deux (État,Err: majuscule=mauvais)
||/ Nom                           Version                       Description
+++-=============================-=============================-==========================================================================
ii  wireless-tools                28-1                          Tools for manipulating Linux Wireless Extensions
2.4.1.2 Options de compilation du noyau

Certaines options sont génériques, d'autres dépendent de carte Wifi utilisée.
Dans mon cas (carte Broadcom BCM4306), il m'a fallu définir les options suivantes. L'exemple suivant anticipe sur l'identification de la carte réseau Wifi, décrite plus loin.

Dans la partie Networking
CONFIG_IEEE80211=m
CONFIG_IEEE80211_DEBUG=y
CONFIG_IEEE80211_CRYPT_WEP=m
CONFIG_IEEE80211_CRYPT_CCMP=m
CONFIG_IEEE80211_CRYPT_TKIP=m
CONFIG_IEEE80211_SOFTMAC=m
CONFIG_IEEE80211_SOFTMAC_DEBUG=y

Dans la partie Network device support -> Wireless LAN drivers (non-hamradio) & Wireless Extensions
CONFIG_BCM43XX=m
CONFIG_BCM43XX_DEBUG=y
CONFIG_BCM43XX_DMA=y
CONFIG_BCM43XX_PIO=y
CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
# CONFIG_BCM43XX_DMA_MODE is not set
# CONFIG_BCM43XX_PIO_MODE is not set

Remarques

  1. Tant que les options IEEE80211* ne sont pas activées, le driver BCM43XX n'apparaît pas dans les périphériques réseau Wireless. Or les autres drivers apparaissent, ce qui peut prêter à confusion.
  2. Le driver bcm43xx a besoin d'un firmware à charger sur la carte lors de son activation. Cela est décrit paragraphe suivant.

Cas particulier du driver bcm43xx

Sans fichier firmware accessible par le driver bcm43xx, impossible d'utiliser la carte.
Il existe plusieurs méthodes pour récupérer le bon firmware. La méthode la plus usuelle (si l'on en croit les forums) consiste à le récupérer depuis le driver Windows. Avec Debian, il faut et il suffit d'installer le paquetage bcm43xx-fwcutter. Lors de la configuration du paquetage, il vous est demandé si vous souhaitez récupérer le firmware (il y en a plusieurs, pour différentes variétés de carte) depuis Internet. Une fois cette étape réalisée, le répertoire /lib/firmware contient les firmware.
Si vous n'êtes pas connecté à Internet : le paquetage bcm43xx-fwcutter demeure la bonne solution, mais il faut lui fournir un fichier correspondant au driver Windows.

Paquetage bcm43xx-fwcutter installé sur ma Debian.

sebastien@maison-1:~$ dpkg -l "bcm43xx*"
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
| État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé
|/ Err?=(aucune)/H=à garder/besoin Réinstallation/X=les deux (État,Err: majuscule=mauvais)
||/ Nom                           Version                       Description
+++-=============================-=============================-==========================================================================
ii  bcm43xx-fwcutter              005-2                         Utility for extracting Broadcom 43xx firmware

2.4.2 Identifier l'adaptateur réseau Ethernet Wifi

Si la carte réseau est connectée au bus PCI, elle sera visible avec la commande lspci. Exemple :

sebastien@maison-1:~$ lspci
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon R250 [Mobility FireGL 9000] (rev 02)
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5705M Gigabit Ethernet (rev 01)
02:01.0 CardBus bridge: O2 Micro, Inc. OZ711EC1 SmartCardBus Controller (rev 20)
02:01.1 CardBus bridge: O2 Micro, Inc. OZ711EC1 SmartCardBus Controller (rev 20)
02:03.0 Network controller: Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller (rev 03)

Ici, nous voyons qu'il y a dans le PC une carte Broadcom BCM4306. "802.11" est synonyme de Wifi, ce qui est confirmé par "Wireless".

2.4.3 Contrôler que l'adaptateur réseau Ethernet Wifi est reconnu

Pour le Wifi, cela se fera en deux parties.

  1. S'assurer que la périphérique est reconnu par le noyau.
  2. S'assurer que la carte est bien vue comme étant "Wireless".

Carte Ethernet Wifi reconnue par le noyau Linux

Cette partie est identique à la partie se rapportant à la carte Ethernet cable.
Exécuter la commande dmesg, et aller à la pêche aux informations pertinentes, ce qui n'est pas toujours facile. Exemple, toujours avec une Broadcom BCM4306.

sebastien@maison-1:~$ dmesg
[...]
ieee80211_crypt: registered algorithm 'NULL'
ieee80211: 802.11 data/management/control stack, git-1.1.13
ieee80211: Copyright (C) 2004-2005 Intel Corporation <jketreno@linux.intel.com>
bcm43xx driver
ACPI: PCI Interrupt 0000:02:03.0[A] -> Link [LNKB] -> GSI 5 (level, low) -> IRQ 5
bcm43xx: Chip ID 0x4306, rev 0x3
bcm43xx: Number of cores: 5
bcm43xx: Core 0: ID 0x800, rev 0x4, vendor 0x4243, enabled
bcm43xx: Core 1: ID 0x812, rev 0x5, vendor 0x4243, disabled
bcm43xx: Core 2: ID 0x80d, rev 0x2, vendor 0x4243, enabled
bcm43xx: Core 3: ID 0x807, rev 0x2, vendor 0x4243, disabled
bcm43xx: Core 4: ID 0x804, rev 0x9, vendor 0x4243, enabled
bcm43xx: PHY connected
bcm43xx: Detected PHY: Version: 2, Type 2, Revision 2
bcm43xx: Detected Radio: ID: 2205017f (Manuf: 17f Ver: 2050 Rev: 2)
bcm43xx: Radio turned off

Le module bcm43xx a reconnu la carte Wifi et va la gérer.
A noter que ce module n'est plus maintenu.
La commande ifconfig -a confirme que l'on a bien un périphérique eth1 reconnu comme périphérique réseau (eth0 est un autre adaptateur, câblé).

maison-1:~# ifconfig -a
[...]
eth1      Lien encap:Ethernet  HWaddr 00:0B:7D:0C:49:6C
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interruption:11 Adresse de base:0x8000

lo        Lien encap:Boucle locale
          inet adr:127.0.0.1  Masque:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:63 errors:0 dropped:0 overruns:0 frame:0
          TX packets:63 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          RX bytes:5048 (4.9 KiB)  TX bytes:5048 (4.9 KiB)

Carte Ethernet reconnue comme étant sans fil

Le paquetage wireless-tools contient, entre autres, le programme iwconfig, qui affiche les informations sur les extensions "Wireless" lorsqu'elles sont trouvées.
En tant que root, exécuter la commande iwconfig sans option. Exemple :

maison-1:~# iwconfig
eth0      no wireless extensions.

lo        no wireless extensions.

dummy0    no wireless extensions.

eth1      IEEE 802.11b/g  ESSID:off/any  Nickname:"Broadcom 4306"
          Mode:Managed  Frequency=2.412 GHz  Access Point: Invalid
          Bit Rate=1 Mb/s
          RTS thr:off   Fragment thr:off
          Encryption key:off
          Link Quality=0/100  Signal level=-256 dBm  Noise level=-256 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Ici la carte eth1 est bien reconnue comme étant une carte Wifi.

2.4.4 Configurer l'adaptateur réseau Ethernet Wifi

Deux cas peuvent se présenter.

  1. Connexion avec le chiffrement WEP, considéré comme basique.
  2. Connexion avec un chiffrement WPA, mieux sécurisé.
2.4.4.1 Afficher les caractéristiques de la carte réseau Wifi

Le programme iwlist installé avec le paquetage wireless-tools permet d'afficher les caractéristiques de la carte, et de détecter les réseaux Wifi environnants.

iwlist nom_interface key affiche des informations utiles sur les capacités de la carte, et les clés utilisées.

maison-1:~# iwlist eth1 key
eth1      2 key sizes : 40, 104bits
          4 keys available :
                [1]: off
                [2]: off
                [3]: off
                [4]: off
          Current Transmit Key: [1]
          Authentication capabilities :
                WPA
                WPA2
                CIPHER TKIP
                CIPHER CCMP

Cet exemple montre que la carte BCM4306 gère le WPA avec les chiffrements TKIP et CCMP. Le WEP est toujours géré, il fait partie de la définition de 802.11g (à vérifier).

iwlist nom_interface scan affiche les réseaux Wifi alentour.

maison-1:~# iwlist eth1 scan
eth1      Interface doesn't support scanning : No such device

Comme la radio de l'interface n'est pas activée, le scanning n'est pas disponible. Comment savoir si la radio est activée, ou pas ? Cela dépend de la carte. Sur la BCM43xx, et pour peu que le débogage soit activé (cf. options de compilation du noyau), c'est le fichier /var/log/messages qui va nous donner cette information.

Exécuter la commande grep -i radio /var/log/messages.

maison-1:~# grep -i radio /var/log/messages
Feb  3 17:15:30 maison-1 kernel: bcm43xx: Radio turned off
Feb  3 17:26:14 maison-1 kernel: bcm43xx: Detected Radio: ID: 2205017f (Manuf: 17f Ver: 2050 Rev: 2)
Feb  3 17:26:14 maison-1 kernel: bcm43xx: Radio turned off
Feb  3 17:26:14 maison-1 kernel: bcm43xx: Radio turned off
Feb  4 09:16:58 maison-1 kernel: bcm43xx: Detected Radio: ID: 2205017f (Manuf: 17f Ver: 2050 Rev: 2)
Feb  4 09:16:58 maison-1 kernel: bcm43xx: Radio turned off
Feb  4 09:16:58 maison-1 kernel: bcm43xx: Radio turned off
Feb  4 09:24:13 maison-1 kernel: bcm43xx: Radio turned on
Feb  4 10:15:15 maison-1 kernel: bcm43xx: Radio turned off

Le dernier événements est "radio turned off", la radio est bien éteinte. Pour allumer la radio de la carte il faut la monter, ce qui oblige à la configurer.
Donc une fois de plus j'anticipe sur la configuration à venir, et sur la partie consacrée au montage et démontage manuel d'une interface réseau.
Exécuter ifup -v nom_interface. Exemple dans mon cas :

maison-1:/etc/network# ifup -v eth1
Configuring interface eth1=eth1 (inet)
run-parts --verbose /etc/network/if-pre-up.d
run-parts: executing /etc/network/if-pre-up.d/wireless-tools
run-parts: executing /etc/network/if-pre-up.d/wpasupplicant

ifconfig eth1 192.168.1.3 netmask 255.255.255.0 broadcast 192.168.1.255                 up
 route add default gw 192.168.1.1  eth1
run-parts --verbose /etc/network/if-up.d
run-parts: executing /etc/network/if-up.d/000resolvconf
Restarting mail retriever agent: fetchmail.
run-parts: executing /etc/network/if-up.d/mountnfs
run-parts: executing /etc/network/if-up.d/sendmail
run-parts: executing /etc/network/if-up.d/wpasupplicant

Maintenant que nous avons monté la carte, la radio est-elle allumée ? Nouvel examen du fichier /var/log/messages.

maison-1:~# grep -i radio /var/log/messages
Feb  3 17:15:30 maison-1 kernel: bcm43xx: Radio turned off
Feb  3 17:26:14 maison-1 kernel: bcm43xx: Detected Radio: ID: 2205017f (Manuf: 17f Ver: 2050 Rev: 2)
Feb  3 17:26:14 maison-1 kernel: bcm43xx: Radio turned off
Feb  3 17:26:14 maison-1 kernel: bcm43xx: Radio turned off
Feb  4 09:16:58 maison-1 kernel: bcm43xx: Detected Radio: ID: 2205017f (Manuf: 17f Ver: 2050 Rev: 2)
Feb  4 09:16:58 maison-1 kernel: bcm43xx: Radio turned off
Feb  4 09:16:58 maison-1 kernel: bcm43xx: Radio turned off
Feb  4 09:24:13 maison-1 kernel: bcm43xx: Radio turned on
Feb  4 10:15:15 maison-1 kernel: bcm43xx: Radio turned off
Feb  4 11:07:32 maison-1 kernel: bcm43xx: Radio turned on

Ça a fonctionné ! Maintenant, nouvelle exécution de la commande iwlist eth1 scan.

maison-1:~# iwlist eth1 scan
eth1      Scan completed :
          Cell 01 - Address: 55:01:23:45:67:89
                    ESSID:"<hidden>"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Channel:1
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=100/100  Signal level=-30 dBm  Noise level=-66 dBm
                    Extra: Last beacon: 20ms ago
          Cell 02 - Address: 55:01:23:45:67:89
                    ESSID:"MYPERIPH-MYID1-MYID2"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Channel:1
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=100/100  Signal level=-30 dBm  Noise level=-66 dBm
                    Extra: Last beacon: 240ms ago

Pour l'exemple ci-dessus, j'ai changé l'adresse MAC et le SSID de mon réseau, pour ne pas les exposer.

Remarque

Même lorsque la carte ne parvient pas à se connecter au réseau Wifi, elle est considérée comme "montée". Donc pour faire un scan, une configuration partielle est suffisante.

2.4.3.2 Connexion avec chiffrement WEP

Dans le fichier /etc/network/interfaces, le WEP est configuré avec les paramètres wireless-. Exemple de configuration.

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

iface eth1 inet static
    address 192.168.1.3
    network 192.168.1.0
    netmask 255.255.255.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    wireless-mode Managed
    wireless-essid MYPERIPH-MYID1-MYID2
    wireless-key restricted 000608F12360E7899C49012ACF
    
    dns-nameservers 192.168.1.1 194.117.200.10

Les paramètres MYPERIPH-MYID1-MYID2 et 000608F12360E7899C49012ACF sont configurées sur le boîtier ADSL.
Le driver bcm43xx (en mode debug, cf. options de compilation du noyau) indique dans le log (/var/log/messages) le moment où il parvient à s'associer.

Exemple avec une erreur dans le paramètre (mauvaise clé WEP).

maison-1:~# egrep -i "(softmac|bcm43xx)" /var/log/messages | tail -n 24
Feb  4 11:31:09 maison-1 kernel: bcm43xx: set security called, .active_key = 0, .level = 1, .enabled = 1, .encrypt = 1, .auth_mode = 1
Feb  4 11:31:09 maison-1 kernel: SoftMAC: Associate: Scanning for networks first.
Feb  4 11:31:09 maison-1 kernel: SoftMAC: Associate: failed to initiate scan. Is device up?
Feb  4 11:31:09 maison-1 kernel: bcm43xx: PHY connected
Feb  4 11:31:09 maison-1 kernel: bcm43xx: Microcode rev 0x127, pl 0xe (2005-04-18  02:36:27)
Feb  4 11:31:09 maison-1 kernel: bcm43xx: Radio turned on
Feb  4 11:31:10 maison-1 kernel: bcm43xx: Chip initialized
Feb  4 11:31:10 maison-1 kernel: bcm43xx: 30-bit DMA initialized
Feb  4 11:31:10 maison-1 kernel: bcm43xx: Keys cleared
Feb  4 11:31:10 maison-1 kernel: bcm43xx: Selected 802.11 core (phytype 2)
Feb  4 11:31:10 maison-1 kernel: SoftMAC: Associate: Scanning for networks first.
Feb  4 11:31:10 maison-1 kernel: SoftMAC: Associate: failed to initiate scan. Is device up?
Feb  4 11:31:11 maison-1 kernel: bcm43xx: set security called, .active_key = 0, .level = 1, .enabled = 1, .encrypt = 1, .auth_mode = 1
Feb  4 11:31:11 maison-1 kernel: SoftMAC: Canceling existing associate request!
Feb  4 11:31:11 maison-1 kernel: SoftMAC: Associate: Scanning for networks first.
Feb  4 11:31:11 maison-1 kernel: SoftMAC: Start scanning with channel: 1
Feb  4 11:31:11 maison-1 kernel: SoftMAC: Scanning 14 channels
Feb  4 11:31:11 maison-1 kernel: SoftMAC: Scanning finished
Feb  4 11:31:11 maison-1 kernel: SoftMAC: Queueing Authentication Request to 00:16:38:76:ab:c8
Feb  4 11:31:11 maison-1 kernel: SoftMAC: Cannot associate without being authenticated, requested authentication
Feb  4 11:31:11 maison-1 kernel: SoftMAC: Already requested authentication, waiting...
Feb  4 11:31:11 maison-1 kernel: SoftMAC: Already requested authentication, waiting...
Feb  4 11:31:11 maison-1 kernel: SoftMAC: Sent Authentication Request to 00:16:38:76:ab:c8.
Feb  4 11:31:11 maison-1 kernel: SoftMAC: Shared Key Authentication with 00:16:38:76:ab:c8 failed, error code: 15

Exemple avec les bons paramètres.

maison-1:~# egrep -i "(softmac|bcm43xx)" /var/log/messages | tail -n 23
Feb  4 11:42:15 maison-1 kernel: bcm43xx: PHY connected
Feb  4 11:42:15 maison-1 kernel: bcm43xx: Microcode rev 0x127, pl 0xe (2005-04-18  02:36:27)
Feb  4 11:42:15 maison-1 kernel: bcm43xx: Radio turned on
Feb  4 11:42:15 maison-1 kernel: bcm43xx: Chip initialized
Feb  4 11:42:15 maison-1 kernel: bcm43xx: 30-bit DMA initialized
Feb  4 11:42:15 maison-1 kernel: bcm43xx: Keys cleared
Feb  4 11:42:15 maison-1 kernel: bcm43xx: Selected 802.11 core (phytype 2)
Feb  4 11:42:15 maison-1 kernel: SoftMAC: Associate: Scanning for networks first.
Feb  4 11:42:15 maison-1 kernel: SoftMAC: Associate: failed to initiate scan. Is device up?
Feb  4 11:42:15 maison-1 kernel: bcm43xx: set security called, .active_key = 0, .level = 1, .enabled = 1, .encrypt = 1, .auth_mode = 1
Feb  4 11:42:15 maison-1 kernel: SoftMAC: Canceling existing associate request!
Feb  4 11:42:15 maison-1 kernel: SoftMAC: Associate: Scanning for networks first.
Feb  4 11:42:15 maison-1 kernel: SoftMAC: Start scanning with channel: 1
Feb  4 11:42:15 maison-1 kernel: SoftMAC: Scanning 14 channels
Feb  4 11:42:15 maison-1 kernel: SoftMAC: Scanning finished
Feb  4 11:42:15 maison-1 kernel: SoftMAC: Queueing Authentication Request to 00:16:38:76:ab:c8
Feb  4 11:42:15 maison-1 kernel: SoftMAC: Cannot associate without being authenticated, requested authentication
Feb  4 11:42:15 maison-1 kernel: SoftMAC: Already requested authentication, waiting...
Feb  4 11:42:15 maison-1 kernel: SoftMAC: Already requested authentication, waiting...
Feb  4 11:42:15 maison-1 kernel: SoftMAC: Sent Authentication Request to 00:16:38:76:ab:c8.
Feb  4 11:42:15 maison-1 kernel: SoftMAC: Shared Key Authentication completed with 00:16:38:76:ab:c8
Feb  4 11:42:15 maison-1 kernel: SoftMAC: sent association request!
Feb  4 11:42:15 maison-1 kernel: SoftMAC: associated!

Remarque

Entre le premier et le deuxième exemple, j'ai dû redémarrer le PC. En effet après avoir tenté de démarrer le Wifi avec une mauvaise clé, il n'y avait plus moyen de réussir l'association, même après avoir corrigé la clé dans le fichier /etc/network/interfaces.

Contournement d'un bug

Pour des raisons obscures, ma carte Wifi ne parvient pas à se monter du premier coup. Il fallait exécuter à la main la commande ifup eth1, puis ifup --force eth1. Sans doute une latence lors de la mise en route de la radio.
Comment automatiser cela ? C'est ce que je vais décrire maintenant.
Attention, la solution qui suit est un contournement éminemment gruiiik, mais bon, parfois il faut savoir être pragmatique.

Le contournement consiste à exécuter un script juste après le montage de la carte, à l'aide du paramètre post-up. Ce script attend une seconde, puis exécute la commande ifup --force eth1.
C'est gruiiik ? Oui, ça l'est !
A noter que cela pourrait produire une récursivité infinie dans l'exécution du post-up, mais non, le programme ifup ne se laisse pas piéger, vive le logiciel libre !

Contenu du fichier /etc/network/interfaces pour le Wifi, avec le contournement du bug.

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

iface eth1 inet static
    address 192.168.1.3
    network 192.168.1.0
    netmask 255.255.255.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    wireless-mode Managed
    wireless-essid TECOM-AH4222-76ABBD
    wireless-key restricted B70608FCED60E36D9C47AB29DE

    dns-nameservers 192.168.1.1 194.117.200.10

    post-up /etc/network/setup-eth1

Fichier /etc/network/setup-eth1.
Droits sur le fichier = 755, propriétaire = root.root.

#!/bin/sh
#
# /etc/network/setup-eth1
#
# Sébastien Millet, December 2006

sleep 1
ifup --force eth1

exit 0;
2.4.3.3 Connexion avec chiffrement WPA

Le noyau Linux ne gère pas le WPA tout seul, il lui faut un utilitaire supplémentaire pour gérer le WPA.

Paquetage wpasupplicant

Sur ma Debian :

sebastien@maison-1:~$ dpkg -l "wpa*"
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
| État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé
|/ Err?=(aucune)/H=à garder/besoin Réinstallation/X=les deux (État,Err: majuscule=mauvais)
||/ Nom                           Version                       Description
+++-=============================-=============================-==========================================================================
pn  wpagui                        <néant>                       (aucune description n'est disponible)
ii  wpasupplicant                 0.5.5-2                       Client support for WPA and WPA2 (IEEE 802.11i)

Auparavant, ce programme était configuré dans le répertoire /etc/wpa_supplicant. Avec les versions actuelles, ce répertoire existe toujours mais il ne contient aucun fichier de configuration. A la place, ce sont des paramètres wpa-* dans le fichier /etc/network/interfaces qui indiquent la configuration WPA.

Exemple d'une configuration WPA (ne fonctionne pas chez moi !)

Ça doit fonctionner ailleurs. Dans mon cas, impossible de se connecter avec ces paramètres.
C'est juste pour donner un exemple. Ensuite, je décrirai comment j'ai réglé le problème.

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

iface eth1 inet static
    address 192.168.1.3
    network 192.168.1.0
    netmask 255.255.255.0
    broadcast 192.168.1.255
    gateway 192.168.1.1

    wpa-driver wext
    wpa-ssid TECOM-AH4222-76ABBD
    wpa-scan-ssid 0
    wpa-psk c8bd7810f278a79ec6d0839d2fd891b85ee5b15d1d21b7a7758e7708aff27b1a

    dns-nameservers 192.168.1.1 194.117.200.10

Avec cette configuration, il apparaît dans le log (/var/log/messages) les lignes suivantes, continuellement.

[...]
Feb  4 13:19:40 maison-1 kernel: SoftMAC: Start scanning with channel: 1
Feb  4 13:19:40 maison-1 kernel: SoftMAC: Scanning 14 channels
Feb  4 13:19:40 maison-1 kernel: SoftMAC: Scanning finished
Feb  4 13:19:45 maison-1 kernel: SoftMAC: Start scanning with channel: 1
Feb  4 13:19:45 maison-1 kernel: SoftMAC: Scanning 14 channels
Feb  4 13:19:46 maison-1 kernel: SoftMAC: Scanning finished
Feb  4 13:19:51 maison-1 kernel: SoftMAC: Start scanning with channel: 1
Feb  4 13:19:51 maison-1 kernel: SoftMAC: Scanning 14 channels
Feb  4 13:19:51 maison-1 kernel: SoftMAC: Scanning finished
[...]

Et la connexion n'est jamais établie.

Déboguer wpasupplicant

De nombreuses manipulations seront gruiiik, c'est pas grave, c'est pour faire du débogage.

Récupérer le source de wpasupplicant

Dans le répertoire où l'on désire récupérer les sources, exécuter
apt-get source wpasupplicant.

maison-1:/usr/src/tmp# apt-get source wpasupplicant
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
E: Vous devez insérer quelques adresses « sources » dans votre sources.list

Après avoir ajouté la ligne
deb-src http://mir1.ovh.net/debian/ testing main contrib
au fichier /etc/apt/sources.list, ça va déjà mieux :

maison-1:/usr/src/tmp# apt-get source wpasupplicant
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Nécessité de prendre 738ko dans les sources.
Réception de : 1 http://mir1.ovh.net testing/main wpasupplicant 0.5.5-2 (dsc) [834B]
Réception de : 2 http://mir1.ovh.net testing/main wpasupplicant 0.5.5-2 (tar) [661kB]
Réception de : 3 http://mir1.ovh.net testing/main wpasupplicant 0.5.5-2 (diff) [75,8kB]
738ko réceptionnés en 3s (203ko/s)
dpkg-source : extraction de wpasupplicant dans wpasupplicant-0.5.5
dpkg-source : extraction de wpasupplicant_0.5.5.orig.tar.gz
dpkg-source : ./wpasupplicant_0.5.5-2.diff.gz

maison-1:/usr/src/tmp# ll
total 740
drwxr-xr-x 9 root root   4096 2007-02-04 13:36 wpasupplicant-0.5.5
-rw-r--r-- 1 root src   75798 2006-10-05 02:19 wpasupplicant_0.5.5-2.diff.gz
-rw-r--r-- 1 root src     834 2006-10-05 02:19 wpasupplicant_0.5.5-2.dsc
-rw-r--r-- 1 root src  661097 2006-09-12 03:32 wpasupplicant_0.5.5.orig.tar.gz

Par compiler, le fichier .config doit exister. Le fichier par défaut pour créer .config est defconfig. Ensuite, lancer la compilation avec la commande make.

maison-1:/usr/src/tmp# cd wpasupplicant-0.5.5/
maison-1:/usr/src/tmp/wpasupplicant-0.5.5# cp -i defconfig .config
maison-1:/usr/src/tmp/wpasupplicant-0.5.5# make
cc -MMD -O2 -Wall -g -I. -I../utils -I../hostapd -DCONFIG_BACKEND_FILE -DCONFIG_DRIVER_HOSTAP -DCONFIG_DRIVER_WEXT -DCONFIG_DRIVER_ATMEL -DCONFIG_DRIVER_WIRED -DEAP_TLS -DEAP_PEAP -DEAP_TTLS -DEAP_MD5 -DEAP_MSCHAPv2 -DEAP_GTC -DEAP_OTP -DEAP_LEAP -DEAP_TLV -DIEEE8021X_EAPOL -DEAP_TLS_FUNCS -DEAP_TLS_OPENSSL -DPKCS12_FUNCS -DCONFIG_SMARTCARD -DINTERNAL_SHA256 -DCONFIG_WIRELESS_EXTENSION -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX -DCONFIG_PEERKEY   -c -o config.o config.c
cc -MMD -O2 -Wall -g -I. -I../utils -I../hostapd -DCONFIG_BACKEND_FILE -DCONFIG_DRIVER_HOSTAP -DCONFIG_DRIVER_WEXT -DCONFIG_DRIVER_ATMEL -DCONFIG_DRIVER_WIRED -DEAP_TLS -DEAP_PEAP -DEAP_TTLS -DEAP_MD5 -DEAP_MSCHAPv2 -DEAP_GTC -DEAP_OTP -DEAP_LEAP -DEAP_TLV -DIEEE8021X_EAPOL -DEAP_TLS_FUNCS -DEAP_TLS_OPENSSL -DPKCS12_FUNCS -DCONFIG_SMARTCARD -DINTERNAL_SHA256 -DCONFIG_WIRELESS_EXTENSION -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX -DCONFIG_PEERKEY   -c -o common.o common.c
[...]
cc -MMD -O2 -Wall -g -I. -I../utils -I../hostapd -DCONFIG_BACKEND_FILE -DCONFIG_DRIVER_HOSTAP -DCONFIG_DRIVER_WEXT -DCONFIG_DRIVER_ATMEL -DCONFIG_DRIVER_WIRED -DEAP_TLS -DEAP_PEAP -DEAP_TTLS -DEAP_MD5 -DEAP_MSCHAPv2 -DEAP_GTC -DEAP_OTP -DEAP_LEAP -DEAP_TLV -DIEEE8021X_EAPOL -DEAP_TLS_FUNCS -DEAP_TLS_OPENSSL -DPKCS12_FUNCS -DCONFIG_SMARTCARD -DINTERNAL_SHA256 -DCONFIG_WIRELESS_EXTENSION -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX -DCONFIG_PEERKEY   -c -o eap_tls_common.o eap_tls_common.c
cc -MMD -O2 -Wall -g -I. -I../utils -I../hostapd -DCONFIG_BACKEND_FILE -DCONFIG_DRIVER_HOSTAP -DCONFIG_DRIVER_WEXT -DCONFIG_DRIVER_ATMEL -DCONFIG_DRIVER_WIRED -DEAP_TLS -DEAP_PEAP -DEAP_TTLS -DEAP_MD5 -DEAP_MSCHAPv2 -DEAP_GTC -DEAP_OTP -DEAP_LEAP -DEAP_TLV -DIEEE8021X_EAPOL -DEAP_TLS_FUNCS -DEAP_TLS_OPENSSL -DPKCS12_FUNCS -DCONFIG_SMARTCARD -DINTERNAL_SHA256 -DCONFIG_WIRELESS_EXTENSION -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX -DCONFIG_PEERKEY   -c -o tls_openssl.o tls_openssl.c
tls_openssl.c:23:25: warning: openssl/ssl.h: Aucun fichier ou répertoire de ce type
tls_openssl.c:24:25: warning: openssl/err.h: Aucun fichier ou répertoire de ce type
tls_openssl.c:25:28: warning: openssl/pkcs12.h: Aucun fichier ou répertoire de ce type
tls_openssl.c:26:28: warning: openssl/x509v3.h: Aucun fichier ou répertoire de ce type
tls_openssl.c:28:28: warning: openssl/engine.h: Aucun fichier ou répertoire de ce type
tls_openssl.c:43: error: expected specifier-qualifier-list before 'SSL'
tls_openssl.c: In function 'tls_show_errors':
tls_openssl.c:76: warning: implicit declaration of function 'ERR_error_string'
tls_openssl.c:76: warning: implicit declaration of function 'ERR_get_error'
tls_openssl.c:76: warning: format '%s' expects type 'char *', but argument 5 has type 'int'
tls_openssl.c:80: warning: format '%s' expects type 'char *', but argument 3 has type 'int'
tls_openssl.c: At top level:
tls_openssl.c:518: error: expected ')' before '*' token
tls_openssl.c:526: warning: type defaults to 'int' in declaration of 'SSL'
tls_openssl.c:526: error: expected ';', ',' or ')' before '*' token
[...]
tls_openssl.c:2248: error: 'struct tls_connection' has no member named 'ssl'
tls_openssl.c:2250: warning: implicit declaration of function 'EVP_CIPHER_key_length'
tls_openssl.c:2251: warning: implicit declaration of function 'EVP_MD_size'
tls_openssl.c:2252: warning: implicit declaration of function 'EVP_CIPHER_iv_length'
make: *** [tls_openssl.o] Erreur 1

Apparemment, il lui manque certaines librairies pour être content. Je suis pressé et je n'ai surtout pas envie de compiler "proprement" avec le SSL, donc je corrige en faisant les modifications suivantes, dans le fichier .config :

Extrait du fichier wpasupplicant-0.5.5/.config, avant modification
	CONFIG_EAP_TLS=y
	CONFIG_EAP_PEAP=y
	CONFIG_EAP_TTLS=y
	#CONFIG_TLS=openssl
Extrait du fichier wpasupplicant-0.5.5/.config, après modification
	#CONFIG_EAP_TLS=y
	#CONFIG_EAP_PEAP=y
	#CONFIG_EAP_TTLS=y
	# Ici on a dé-commenté, et remplacé openssl par none
	CONFIG_TLS=none
	# Ligne supplémentaire, pour avoir une chance de récupérer du débogage.
	CONFIG_DEBUG_FILE=y
	CONFIG_INTERNAL_AES=y
	CONFIG_INTERNAL_SHA1=y
	CONFIG_INTERNAL_MD5=y

Ça compile ! Reste à activer le débogage, ce qui n'est pas aussi simple.
A noter que l'outil apt-src automatise le téléchargement des dépendances (ou bien, encore mieux, apt-build), mais à l'époque, je ne connaissais pas...

Fichier common.c

Remplacer les lignes
	int wpa_debug_use_file = 0;
	int wpa_debug_level = MSG_INFO;
	int wpa_debug_show_keys = 0;
	int wpa_debug_timestamp = 0;

par les lignes
	int wpa_debug_use_file = 1;
	int wpa_debug_level = MSG_DEBUG;
	int wpa_debug_show_keys = 1;
	int wpa_debug_timestamp = 1;

Fichier wpa_supplicant.c

Remplacer la ligne
	wpa_debug_use_file = params->wpa_debug_use_file;

par la ligne
	wpa_debug_use_file = 1;

Reste à remplacer l'exécutable actuel par le nouveau, et le tour est joué.

maison-1:~# cd /sbin
maison-1:/sbin# mv -i wpa_supplicant wpa_supplicant.orig
maison-1:/sbin# cp -i /usr/src/tmp/wpasupplicant-0.5.5/wpa_supplicant .

Que se passe-t-il si nous redémarrons le Wifi ? (ifdown eth1 puis ifup eth1, ces manipulations sont décrites en détails plus loin).
Ça ne fonctionne toujours pas, il n'y a pas de fichier de débogage dans /tmp.
Si ça se trouve, il manque une ligne -CFLAGS dans le Makefile pour passer au compilateur l'option CONFIG_DEBUG_FILE définie dans le fichier .config. Un moyen rapide et facile de palier cela est d'ajouter la ligne
#define CONFIG_DEBUG_FILE y
au début du fichier common.c.
Ça marche ! par contre, il n'y a pas beaucoup de debug. Pour lancer wpa_supplicant en mode debug, une dernière manipulation est nécessaire.

Dans le fichier /etc/wpa_supplicant/functions.sh, faire la modification suivante.

Remplacer la ligne
	start-stop-daemon --start --oknodo $DAEMON_VERBOSITY \
		--name $WPA_SUP_PNAME --startas $WPA_SUP_BIN --pidfile $WPA_SUP_PIDFILE \
		-- $WPA_SUP_OPTIONS -D $WPA_SUP_DRIVER $WPA_SUP_CONF
par la ligne
	start-stop-daemon --start --oknodo $DAEMON_VERBOSITY \
		--name $WPA_SUP_PNAME --startas $WPA_SUP_BIN --pidfile $WPA_SUP_PIDFILE \
		-- $WPA_SUP_OPTIONS -D $WPA_SUP_DRIVER $WPA_SUP_CONF -dd

On y est, désormais, wpa_supplicant produit des fichiers /tmp/wpa_supplicant-log-0.txt qui contiennent beaucoup de données.

Que se passe-t-il dans mon cas ? Il semble qu'il y ait un problème de taille de clé avec CCMP. Qu'à cela ne tienne, je vais utiliser uniquement TKIP, et le configurer comme seul protocole aussi bien dans /etc/network/interfaces que sur le boîtier ADSL. Voilà pour finir le fichier /etc/network/interfaces, fonctionnel avec WPA :

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

iface eth1 inet static
    address 192.168.1.3
    network 192.168.1.0
    netmask 255.255.255.0
    broadcast 192.168.1.255
    gateway 192.168.1.1

    wpa-driver wext
    wpa-key-mgmt WPA-PSK
    wpa-pairwise TKIP
    wpa-group TKIP
    wpa-ssid MYPERIPH-MYID1-MYID2
    wpa-bssid 55:01:23:45:67:89
    wpa-ap-scan 2
    wpa-scan-ssid 0
    wpa-psk 996b7257c96079a6a3b9779640ecfa74fe2ca0ab631b1770b38af2cca59254d9

    dns-nameservers 192.168.1.1 194.117.200.10

A noter qu'ici, si on maintient le contournement "post-up" décrit plus haut, consistant à exécuter la commande ifup --force eth1 juste après le montage, le PC ne démarre plus, car il entre dans une boucle infinie. Mais ici c'est inutile de toute façon.

Pour info, le log (extrait de /var/log/messages) lorsque le WPA se connecte avec succès.

Feb  4 15:27:34 maison-1 kernel: bcm43xx driver
Feb  4 15:27:34 maison-1 kernel: ACPI: PCI Interrupt 0000:02:03.0[A] -> Link [LNKB] -> GSI 5 (level, low) -> IRQ 5
Feb  4 15:27:34 maison-1 kernel: bcm43xx: Chip ID 0x4306, rev 0x3
Feb  4 15:27:34 maison-1 kernel: bcm43xx: Number of cores: 5
Feb  4 15:27:34 maison-1 kernel: bcm43xx: Core 0: ID 0x800, rev 0x4, vendor 0x4243, enabled
Feb  4 15:27:34 maison-1 kernel: bcm43xx: Core 1: ID 0x812, rev 0x5, vendor 0x4243, disabled
Feb  4 15:27:34 maison-1 kernel: bcm43xx: Core 2: ID 0x80d, rev 0x2, vendor 0x4243, enabled
Feb  4 15:27:34 maison-1 kernel: bcm43xx: Core 3: ID 0x807, rev 0x2, vendor 0x4243, disabled
Feb  4 15:27:34 maison-1 kernel: bcm43xx: Core 4: ID 0x804, rev 0x9, vendor 0x4243, enabled
Feb  4 15:27:34 maison-1 kernel: bcm43xx: PHY connected
Feb  4 15:27:34 maison-1 kernel: bcm43xx: Detected PHY: Version: 2, Type 2, Revision 2
Feb  4 15:27:34 maison-1 kernel: bcm43xx: Detected Radio: ID: 2205017f (Manuf: 17f Ver: 2050 Rev: 2)
Feb  4 15:27:34 maison-1 kernel: bcm43xx: Radio turned off
Feb  4 15:27:34 maison-1 kernel: bcm43xx: Radio turned off
Feb  4 15:27:34 maison-1 kernel: EXT3 FS on hda7, internal journal
Feb  4 15:27:34 maison-1 kernel: NTFS volume version 3.1.
Feb  4 15:27:34 maison-1 last message repeated 2 times
Feb  4 15:27:34 maison-1 kernel: kjournald starting.  Commit interval 5 seconds
Feb  4 15:27:34 maison-1 kernel: EXT3 FS on dm-0, internal journal
Feb  4 15:27:34 maison-1 kernel: EXT3-fs: mounted filesystem with ordered data mode.
Feb  4 15:27:34 maison-1 kernel: Adding 506008k swap on /dev/mapper/cswap.  Priority:-1 extents:1 across:506008k
Feb  4 15:27:34 maison-1 kernel: ip_tables: (C) 2000-2006 Netfilter Core Team
Feb  4 15:27:34 maison-1 kernel: ip_conntrack version 2.4 (4093 buckets, 32744 max) - 208 bytes per conntrack
Feb  4 15:27:34 maison-1 kernel: bcm43xx: PHY connected
Feb  4 15:27:34 maison-1 kernel: bcm43xx: Microcode rev 0x127, pl 0xe (2005-04-18  02:36:27)
Feb  4 15:27:34 maison-1 kernel: bcm43xx: Radio turned on
Feb  4 15:27:34 maison-1 kernel: bcm43xx: Chip initialized
Feb  4 15:27:34 maison-1 kernel: bcm43xx: 30-bit DMA initialized
Feb  4 15:27:34 maison-1 kernel: bcm43xx: Keys cleared
Feb  4 15:27:34 maison-1 kernel: bcm43xx: Selected 802.11 core (phytype 2)
Feb  4 15:27:34 maison-1 kernel: bcm43xx: set security called, .level = 0, .enabled = 0, .encrypt = 0
Feb  4 15:27:34 maison-1 last message repeated 3 times
Feb  4 15:27:34 maison-1 kernel: SoftMAC: generic IE set to 30140100000fac020100000fac020100000fac020000
Feb  4 15:27:34 maison-1 kernel: SoftMAC: Associate: Scanning for networks first.
Feb  4 15:27:34 maison-1 kernel: SoftMAC: Start scanning with channel: 1
Feb  4 15:27:34 maison-1 kernel: SoftMAC: Scanning 14 channels
Feb  4 15:27:34 maison-1 kernel: SoftMAC: Scanning finished
Feb  4 15:27:34 maison-1 kernel: SoftMAC: Queueing Authentication Request to 00:16:38:76:ab:c8
Feb  4 15:27:34 maison-1 kernel: SoftMAC: Cannot associate without being authenticated, requested authentication
Feb  4 15:27:34 maison-1 kernel: SoftMAC: Sent Authentication Request to 00:16:38:76:ab:c8.
Feb  4 15:27:34 maison-1 kernel: SoftMAC: Open Authentication completed with 00:16:38:76:ab:c8
Feb  4 15:27:34 maison-1 kernel: SoftMAC: sent association request!
Feb  4 15:27:34 maison-1 kernel: SoftMAC: associated!
Feb  4 15:27:34 maison-1 kernel: bcm43xx: set security called, .active_key = 0, .level = 2, .enabled = 1, .encrypt = 1
Feb  4 15:27:34 maison-1 kernel: bcm43xx: set security called, .enabled = 1, .encrypt = 1

3 Configuration avancée du réseau

3.1 Montage et démontage des interfaces réseau

3.1.1 Montage manuel d'une interface réseau

Pour monter une carte à la main, en tant que root, exécuter la commande ifup -v nom_interface. L'option -v rend la commande ifup bavarde.
Exemple :

maison-1:~# ifup -v eth0
Configuring interface eth0=eth0 (inet)
run-parts --verbose /etc/network/if-pre-up.d
run-parts: executing /etc/network/if-pre-up.d/wireless-tools
run-parts: executing /etc/network/if-pre-up.d/wpasupplicant

ifconfig eth0 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255                 up

 route add default gw 192.168.1.1  eth0
run-parts --verbose /etc/network/if-up.d
run-parts: executing /etc/network/if-up.d/000resolvconf
Restarting mail retriever agent: fetchmail.
run-parts: executing /etc/network/if-up.d/mountnfs
run-parts: executing /etc/network/if-up.d/sendmail
run-parts: executing /etc/network/if-up.d/wpasupplicant

3.1.2 Démontage manuel d'une interface réseau

Exemple de commande ifdown -v nom_interface :

maison-1:~# ifdown -v eth0
Configuring interface eth0=eth0 (inet)
run-parts --verbose /etc/network/if-down.d
run-parts: executing /etc/network/if-down.d/resolvconf
run-parts: executing /etc/network/if-down.d/sendmail
run-parts: executing /etc/network/if-down.d/wpasupplicant
 route del default gw 192.168.1.1  eth0
ifconfig eth0 down
run-parts --verbose /etc/network/if-post-down.d
run-parts: executing /etc/network/if-post-down.d/wireless-tools
run-parts: executing /etc/network/if-post-down.d/wpasupplicant

3.1.3 Montage automatique d'une interface réseau

Automatiquement s'entend "au démarrage du PC". Dans le fichier /etc/network/interfaces, les lignes commençant par auto indiquent quelles interfaces monter au démarrage. Il peut y en avoir plusieurs.

3.2 Réglage de la carte Ethernet cable

Si l'on souhaite régler la carte en mode 10 ou 100 Mbps, half ou full duplex, etc., il faut invoquer l'outil ethtool après le montage de la carte.
Exemple de fichier /etc/network/interfaces avec réglage de la carte.

# 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

iface eth0 inet static
    address 192.168.1.2
    network 192.168.1.0
    netmask 255.255.255.0
    broadcast 192.168.1.255
    gateway 192.168.1.1

    dns-nameservers 192.168.1.1 194.117.200.10

    post-up /etc/network/setup-eth0

Fichier /etc/network/setup-eth0.
Droits sur le fichier = 755, propriétaire = root.root.

#!/bin/sh
#
# /etc/network/setup-eth0
#
# Sébastien Millet, July 2006

# echo Setting eth0 to 10Mbps/full duplex/no negociation
ethtool -s $IFACE speed 10 duplex full autoneg off

3.3 Lancer le firewall automatiquement

Tout le monde sait que le firewall sous Linux se configure avec la commande iptables. Par contre il n'est jamais précisé où et comment faire en sorte que le firewall soit activé, au démarrage du PC, de manière automatique et élégante. Élégante = juste avant que les interfaces réseau ne soient montées par le système.

Pour ma part je crée le script /etc/network/setup-fw, que j'invoque dans la section iface de l'adaptateur que je souhaite protéger.
Fichier /etc/network/interfaces avec mise en route du firewall juste avant le montage de la carte. Dans l'exemple ci-dessous, j'ai laissé le réglage de la carte (setup-eth0 -> 10Mbps full duplex, sans négociation).

# 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

iface eth0 inet static
    address 192.168.1.2
    network 192.168.1.0
    netmask 255.255.255.0
    broadcast 192.168.1.255
    gateway 192.168.1.1

    dns-nameservers 192.168.1.1 194.117.200.10

    pre-up /etc/network/setup-fw
    post-up /etc/network/setup-eth0

Et le fichier /etc/network/setup-fw
Droits sur le fichier = 755, propriétaire = root.root.

#!/bin/sh
#
# /etc/network/setup-fw
#
# Sébastien Millet, Mai 2006
# Block everything except outgoing connecitons.
# Copied from /usr/share/doc/iptables/html/packet-filtering-HOWTO-5.html on
# a debian 3.1.

# Gruiiik!!!/Appropriate only for cable ethernet devices, handled by ethtool
if [ "$IFACE" = "eth0" ]; then
	echo Setting $IFACE with autoneg on.
	ethtool -s $IFACE autoneg on
fi

echo Setting up netfilter configuration
# Erase any existing configuration
iptables -F
iptables -X
# Zero counters
iptables -Z
# Now setup firewall rules
iptables -N block
iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A block -m state --state NEW -i ! $IFACE -j ACCEPT
# Authorize incoming AZUREUS connections
iptables -A block -m state --state NEW -i $IFACE -p tcp --destination-port 37351 -j ACCEPT
iptables -A block -i $IFACE -p udp --destination-port 37351 -j ACCEPT
# Authorize aMule connections
iptables -A block -m state --state NEW -i $IFACE -p tcp --destination-port 4662 -j ACCEPT
iptables -A block -i $IFACE -p udp --destination-port 4672 -j ACCEPT
# Other stuff
iptables -A block -j DROP
iptables -A INPUT -j block
iptables -A FORWARD -j block

Explications sur le script qui précède

Les options décrites se rapportent, si ce n'est pas précisé, au programme iptables.

Examen du firewall

L'option -L affiche les chaînes et règles en cours. En y ajoutant les options --line-numbers (numérotation des règles) et -v (mode bavard), on obtient des informations détaillées sur la situation. Exemple :

maison-2:/etc/network# iptables -v --line-numbers -L
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     1290 1357K block      0    --  any    any     anywhere             anywhere

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 block      0    --  any    any     anywhere             anywhere

Chain OUTPUT (policy ACCEPT 900 packets, 64700 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain block (2 references)
num   pkts bytes target     prot opt in     out     source               destination
1     1118 1349K ACCEPT     0    --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
2        5   348 ACCEPT     0    --  !eth0  any     anywhere             anywhere            state NEW
3        0     0 ACCEPT     tcp  --  eth0   any     anywhere             anywhere            state NEW tcp dpt:37351
4        0     0 ACCEPT     udp  --  eth0   any     anywhere             anywhere            udp dpt:37351
5        0     0 ACCEPT     tcp  --  eth0   any     anywhere             anywhere            state NEW tcp dpt:4662
6        0     0 ACCEPT     udp  --  eth0   any     anywhere             anywhere            udp dpt:4672
7      167  7609 DROP       0    --  any    any     anywhere             anywhere

3.4 Le programme NetworkManager

Le programme NetworkManager, fourni avec le paquetage network-manager, est conçu pour gérer en continu la configuration du réseau. Par exemple, il sait monter une interface réseau (cable) au moment où le cable est branché sur la carte et la démonter dans le cas inverse.
NetworkManager exploite les événements remontés par d-bus.

Sur une Debian Testing installée en février 2007, NetworkManager provoquait un démontage sauvage de mes cartes réseau. Après avoir enlevé le paquetage network-manager, tout est rentré dans l'ordre.

Cela ne signifie pas que NetworkManager ne doit pas être utilisé. Mais comme /etc/network/interfaces était suffisant pour ma configuration, il était inutile de passer du temps à configurer NetworkManager.

3.5 Le programme dhclient

Ce programme fait partie du paquetage dhcp3-client, installé par défaut.
Exécuter dhclient nom_interface pour monter l'interface réseau correspondante en DHCP. Exemple :

maison-2:~# dpkg -l "dhcp3-client"
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
| État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé
|/ Err?=(aucune)/H=à garder/besoin Réinstallation/X=les deux (État,Err: majuscule=mauvais)
||/ Nom                       Version                   Description
+++-=========================-=========================-==================================================================
ii  dhcp3-client              3.0.4-13                  DHCP Client
maison-2:~# dhclient eth0
Internet Systems Consortium DHCP Client V3.0.4
Copyright 2004-2006 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

Listening on LPF/eth0/00:00:e8:e8:ff:8c
Sending on   LPF/eth0/00:00:e8:e8:ff:8c
Sending on   Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 6
DHCPOFFER from 192.168.1.1
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
Restarting mail retriever agent: fetchmail.
addr=192.168.1.11,               name=
Updating sendmail.cf ...
Updating auth ...
sasl2-bin not installed, not configuring sendmail support.

To enable sendmail SASL2 support at a later date, invoke "/usr/share/sendmail/update_auth"

Creating /etc/mail/relay-domains
# Optional file...
The following file(s) have changed:
  /etc/mail/sendmail.cf
** ** You should issue `/etc/init.d/sendmail reload` ** **
bound to 192.168.1.11 -- renewal in 241971 seconds.

ifplugd et quickswitch

ifplugd gère dynamiquement l'activation et la désactivation d'interfaces réseau. Il semble que le projet n'est plus maintenu.

QuickSwitch gère le caractère itinérant d'un portable. Apparemment ce projet non plus n'est plus maintenu.

Les URL de ces deux projets sont données à la fin de ce document, dans la partie consacrée à la documentation.


4 Documentation

resolvconf
resolvconf Nom du paquetage
man resolvconf Fonctionnement de resolvconf, utilitaire chargé de gérer dynamiquement le DNS.
Fichier /etc/network/interfaces
man interfaces Configuration des interfaces réseau, hors NetworkManager
Fichier /usr/share/doc/ifupdown/examples Exemples de fichiers /etc/network/interfaces
Firewall
iptables Nom du paquetage
Fichier /usr/share/doc/iptables/html Explications très utiles sur l'utilisation d'iptables.
http://www.netfilter.org/ Page d'accueil de netfilter
Wifi - base
wireless-tools Nom du paquetage pour le Wifi
man wireless Aide sur la configuration du Wifi
Fichier /usr/share/doc/HOWTO/fr-html/Wireless-HOWTO.html Documentation utile sur le Wifi (nécessite le paquetage doc-linux-fr-html)
http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html Page d'accueil de wireless-tools
http://llaic3.u-clermont1.fr/~mr/linux/configreseau.shtml#wifiiface Une page personnelle au sujet de Wifi
Wifi - WPA
wpasupplicant Nom du paquetage
/usr/share/doc/wpasupplicant/README.modes.gz A lire pour faire du WPA
/usr/share/doc/wpasupplicant/README.Debian A lire également
http://hostap.epitest.fi/wpa_supplicant/ Page d'accueil de wpa_supplicant
http://www.sit.ulaval.ca/library/Jahia/dt/sans_fil/Config_Linux.pdf Support WPA et WPA2 pour Linux
Driver bcm43xx
http://bcm43xx.berlios.de Page d'accueil du projet bcm43xx
https://help.ubuntu.com/community/WifiDocs/Driver/bcm43xx Documentation Ubuntu sur bcm43xx
Divers
http://0pointer.de/lennart/projects/ifplugd/ Programme ifplugd
http://muthanna.com/quickswitch Programme quickswitch
http://clampin.free.fr/kanotix/manual/km_lan.html Configuration du réseau sur Linux (Kanotix), en particulier, Wifi/WPA
http://www.csquad.org/2006/05/10/.../ Configuration automatique du réseau sous Debian

5 Journal des changements

1.0

  1. Création du document