Ce chapitre présente l'administration réseau avec Debian. Pour une
introduction générale au réseau sous GNU/Linux, lisez le Net-HOWTO
.
Afin qu'une machine Debian accède à l'Internet, ses interfaces réseau doivent être supportées par le noyau et configurées.
Tout d'abord, il faut que le noyau supporte les périphériques réseau, comme les cartes Ethernet, les cartes Wi-Fi et les modems. Pour obtenir ce support, vous devrez peut-être recompiler le noyau ou ajouter des modules comme décrit dans Le noyau Linux et Debian, Chapitre 7.
La configuration des périphériques réseau est expliquée ci-dessous. L'information contenue dans ce chapitre a été mise à jour pour Sarge. La plus grande partie s'applique aussi pour les versions antérieures.
Une machine Debian peut avoir plusieurs interfaces ayant chacune une adresse Internet Protocol (IP) différente. Les interfaces peuvent être de plusieurs types, dont :
Il existe un grand nombre d'autres périphériques réseau disponibles, comme SLIP, PLIP (IP sur ligne série et parallèle), périphériques shaper pour contrôler le trafic sur certaines interfaces, Frame Relay, AX.25, X.25, ARCnet et LocalTalk.
Chaque interface réseau connectée directement à l'Internet (ou à un réseau IP) est identifiée par une adresse IP unique sur 32 bits. [20] L'adresse IP est divisée en deux parties : l'une identifie le réseau et l'autre la machine. Si vous prenez une adresse IP, mettez à 1 les bits de l'adresse réseau et à 0 les bits de l'adresse de la machine, vous obtenez le masque de réseau.
Traditionnellement, les réseaux IP ont été groupés en classes dont les adresses de réseau font 8, 16 ou 24 bits de longueur. [21]
adresse IP masque réseau taille Class A 1.0.0.0 - 126.255.255.255 255.0.0.0 = /8 Class B 128.0.0.0 - 191.255.255.255 255.255.0.0 = /16 Class C 192.0.0.0 - 223.255.255.255 255.255.255.0 = /24
Les adresses IP n'étant pas dans ces plages sont utilisées dans des buts précis.
Il y a dans chaque classe des plages d'adresses réservées pour l'utilisation dans des réseaux locaux. Il est garanti que ces adresses ne peuvent pas entrer en conflit avec les adreses utilisées sur l'Internet (et par conséquent, si une de ces adresses est assignée à une machine alors cette machine ne peut pas accéder à l'Internet directement et doit y accéder par une passerelle qui agit comme proxy pour des services spécifiques ou fait de la translation d'adresse réseau – NAT). Ces plages d'adresses sont données dans la table suivante avec le nombre de plages dans chaque classe.
addresse réseau taille nombre Class A 10.x.x.x /8 1 Class B 172.16.x.x - 172.31.x.x /16 16 Class C 192.168.0.x - 192.168.255.x /24 256
La première adresse dans un réseau IP est l'adresse du réseau lui-même. La dernière adresse est l'adresse de diffusion du réseau. [22] Toutes les autres adresses peuvent être allouées à des machines sur le réseau. Parmi celles-ci, la première ou la dernière adresse est généralement allouée à la passerelle Internet du réseau.
La table de routage contient l'information sur la façon d'envoyer les paquets IP vers leur destination. Voici un exemple de table de routage prise sur une machine Debian d'un réseau local avec une adresse IP 192.168.50.x/24. La machine 192.168.50.1 (aussi sur le réseau local) est un routeur pour le réseau d'entreprise 172.20.x.x/16 et la machine 192.168.50.254 (aussi sur le réseau local) est un routeur vers l'Internet.
# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 127.0.0.0 * 255.0.0.0 U 0 0 2 lo 192.168.50.0 * 255.255.255.0 U 0 0 137 eth0 172.20.0.0 192.168.50.1 255.255.0.0 UG 1 0 7 eth0 default 192.168.50.254 0.0.0.0 UG 1 0 36 eth0
Les adresses IP de la table peuvent aussi apparaître comme noms obtenus en
cherchant les adresses dans le fichier /etc/networks
ou en
utilisant le résolveur de la bibliothèque C.
En plus du routage, le noyau peut effectuer de la translation d'adresse, de la modulation de trafic et du filtrage.
Voir Net-HOWTO
et
other
networking HOWTOs
pour plus d'information.
Les outils de configuration réseau bas niveau traditionnels des systèmes
GNU/Linux sont les programmes ifconfig
et route
qui
viennent dans le paquet net-tools
. Ces outils ont officiellement
été rendus obsolètes par ip
qui est dans le paquet
iproute
. Le programme ip
fonctionne avec Linux 2.2
et supérieurs et a plus de possibilités que les anciens outils. Cependant, les
anciens outils fonctionnent toujours et sont plus familiers à de nombreux
utilisateurs.
ifconfig
et route
Voici une illustration de comment changer l'adresse IP de l'interface
eth0 de 192.168.0.3 en 192.168.0.111 et
faire de eth0 la route vers le réseau 10.0.0.0 via
192.168.0.1. On commence par exécuter ifconfig
et
route
sans arguments pour afficher l'état courant de toutes les
interfaces réseau et du routage.
# ifconfig eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0 inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:23363 errors:0 dropped:0 overruns:0 frame:0 TX packets:21798 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:13479541 (12.8 MiB) TX bytes:20262643 (19.3 MiB) Interrupt:9 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:230172 errors:0 dropped:0 overruns:0 frame:0 TX packets:230172 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:22685256 (21.6 MiB) TX bytes:22685256 (21.6 MiB) # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.0.0 U 0 0 0 eth0 default 192.168.0.1 255.255.255.255 UG 0 0 0 eth0
D'abord, on désactive l'interface.
# ifconfig eth0 inet down # ifconfig lo Link encap:Local Loopback ... (plus d'entrée eth0) # route ... (plus d'entrée dans la table de routage)
Ensuite, on l'active avec la nouvelle adresse IP et le nouveau routage.
# ifconfig eth0 inet up 192.168.0.111 \ netmask 255.255.0.0 broadcast 192.168.255.255 # route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0
Le résultat :
# ifconfig eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0 inet addr:192.168.0.111 Bcast:192.168.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ... lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 ... # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.0.0 U 0 0 0 eth0 10.0.0.0 192.168.0.1 255.0.0.0 UG 0 0 0 eth0
Pour plus d'information voir ifconfig(8)
et route(8)
.
ip
Les commandes ip
équivalentes à ifconfig
et
route
, décrits ci-dessus, sont :
Le programme ip
affiche la syntaxe de ses commandes lorsqu'il est
exécuté avec l'argument help. Par exemple, ip link
help affiche :
Usage: ip link set DEVICE { up | down | arp { on | off } | dynamic { on | off } | multicast { on | off } | txqueuelen PACKETS | name NEWNAME | address LLADDR | broadcast LLADDR | mtu MTU } ip link show [ DEVICE ]
Voir aussi ip(8)
.
Pour les interfaces Wi-Fi, le programme iwconfig
qui vient dans le
paquet wireless-tools
est utilisé en plus de ifconfig
ou ip
.
Voir iwconfig(8)
.
Si vous accédez à l'Internet par un modem RTC alors la connexion est négociée en utilisant le protocole Point-to-Point Protocol (PPP). Ces connexions sont accédées par les interfaces ppp0, ppp1, etc.
Une interface PPP est gérée par le démon pppd
qui vient dans le
paquet ppp
. Ainsi, pour l'utilisateur, configurer une interface
PPP signifie configurer pppd
.
pppd
à la main
Pour qu'un lien réseau soit établi, un port de communication (habituellement un
port série) doit être ouvert, des commandes doivent être envoyées au
périphérique de communication (habituellement un modem), un numéro de téléphone
doit être appelé, le démon PPP distant doit identifier l'utilisateur, une
interface PPP doit être créée et les tables de routage doivent être modifiées
pour que le trafic soit envoyé sur ce lien. pppd
peut faire tout
cela et possède donc une longue liste d'options. Ces options sont décrites
dans pppd(8)
.
Sur un système Debian, les options globales sont définies dans
/etc/ppp/options
. Les options spécifiques à l'utilisateur sont
définies dans ~/.ppprc
. Les options qui dépendent du port de
communication utilisé sont définies dans
/etc/ppp/options.portname
. Par exemple, supposons que
vous avez deux modems—un modem intégré Lucent LT accédé par
/dev/LT-modem et un modem externe accédé par
/dev/ttyS0. Créez les deux fichiers d'options suivants.
# cat > /etc/ppp/options.LT-modem <<EOF 115200 init "/usr/sbin/chat -f /etc/chatscripts/setup-LT-modem" EOF # cat > /etc/ppp/options.ttyS0 <<EOF 115200 init "/usr/sbin/chat -f /etc/chatscripts/setup-ttyS0" EOF
Ils réfèrent aux script chat
suivants. D'abord
/etc/chatscripts/setup-LT-modem
.
ABORT ERROR '' ATZ OK 'ATW2X2 S7=70 S11=55' OK AT
Ensuite, /etc/chatscripts/setup-ttyS0
.
ABORT ERROR '' ATZ OK 'ATL1M1Q0V1W2X4&C1&D2 S6=4 S7=70 S11=55 S95=63 S109=1 +FCLASS=0' OK AT
Le contenu de ces fichiers doit dépendre de votre matériel, bien sûr.
Les options peuvent aussi être données à pppd
comme arguments.
Dans Debian pppd
est habituellement démarré par la commande
pon
. Lorsque pon
est utilisé, son premier argument
définit un fichier d'options dans /etc/ppp/peers/
, qui est aussi
lu par pppd
. [23]
C'est ici que vous définissez des options spécifiques à un hôte distant
particulier—par exemple, un Fournisseur d'Accès à Internet (FAI).
Supposons par exemple que vous vous déplacez entre Amsterdam et La Haye. Dans chaque ville vous avez accçs à deux FAI—Planet et KPN. D'abord, créez un fichier d'options de base pour chaque FAI.
# cat > /etc/ppp/peers/KPN <<EOF remotename KPN noauth user kpn noipdefault ipparam KPN EOF # cat > /etc/ppp/peers/Planet <<EOF remotename Planet auth user user3579@planet.nl noipdefault mru 1000 mtu 1000 ipparam Planet EOF
Ces fichiers définissent les options qui diffèrent entre les deux FAI. Les
options communes peuvent être placées dans /etc/ppp/options
ou
dans l'un des fichiers spécifiques à une interface si besoin.
Maintenant créez les fichiers d'options pour chaque FAI dans chaque ville.
Dans notre exemple la seule différence entre se connecter à un FAI dans une
ville et se connecter à l'autre est le script chat
qui est requis.
(Le script chat
est différent parce que le numéro de téléphone
local est différent.)
# cat > /etc/ppp/peers/KPN-Amsterdam <<EOF connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-Amsterdam" file /etc/ppp/peers/KPN EOF # cat > /etc/ppp/peers/KPN-DenHaag <<EOF connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-DenHaag" file /etc/ppp/peers/KPN EOF # cat > /etc/ppp/peers/Planet-Amsterdam <<EOF connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-Amsterdam" file /etc/ppp/peers/Planet EOF # cat > /etc/ppp/peers/Planet-DenHaag <<EOF connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-DenHaag" file /etc/ppp/peers/Planet EOF
Les directives file incluent chacune un des fichiers d'options
défini ci-dessus. La directive connect spécifie la commande que
pppd
utilise pour effectuer la connexion. Normalement, on utilise
le programme chat
pour cela, en adaptant le script
chat
à chaque FAI. Voici les scripts chat
pour La
Haye ; les scripts chat
pour Amsterdam peuvent être
similaires excepté les numéros de téléphone ou ils peuvent être différents si
le FAI offre un service à travers une autre compagnie.
# cat > /etc/chatscripts/KPN-DenHaag <<EOF ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT ERROR OK-AT-OK ATDT 0676012321 CONNECT \d\c EOF # cat > /etc/chatscripts/Planet-DenHaag <<EOF ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT ERROR OK-AT-OK ATDT 0676002505 CONNECT \d\c EOF
Pour se connecter à ces ISP, vous devez avoir un nom de client et un mot de
passe que pppd
peut fournir à l'hôte distant à la demande. Cette
information est définie soit dans /etc/ppp/pap-secrets
(si le
protocole PAP est utilisé) soit dans /etc/ppp/chap-secrets
(si le
protocole CHAP est utilisé). Bien que CHAP soit plus sûr, PAP est toujours
beaucoup plus utilisé. Parce que ces fichiers contiennent des informations
secrètes, seul root doit avoir la permission de les lire et écrire. Le format
de ces fichiers est expliqué dans pppd(8)
. Un « secret »
(troisième champ) est cherché dans le fichier par recherche du nom de client
(premier champ) et/ou du nom du serveur (deuxième champ). Lorsque vous vous
connectez à un FAI, vous ne connaissez généralement pas le nom du serveur, donc
il faut fournir un nom de client à la place ; cela est fait sur la ligne
user de peers/KPN
et peers/Planet
ci-dessus.
# client name server name secret kpn * kpn user3579@planet.nl * myfavoritepet
pppd
avec pppconfig
Un moyen rapide de configurer pppd
est d'utiliser le programme
pppconfig
qui vient dans le paquet du même nom.
pppconfig
configure les fichiers comme ceux ci-dessus en posant
des questions à l'utilisateur.
Si vous choisissez d'utiliser resolvconf
alors assurez-vous de
sélectionner « None » à l'écran « Configure Nameservers ».
wvdial
Une approche différente pour utiliser pppd
est de l'exécuter avec
wvdial
qui vient dans le paquet du même nom. Au lieu de faire
exécuter chat
à pppd
pour numéroter et négocier une
connexion, wvdial
effectue la numérotation et la négociation
initiale et ensuite démarre pppd
pour faire le reste. Avec
seulement un numéro de téléphone, un nom d'utilisateur et un mot de passe,
wvdial
réussit à effectuer la connexion dans la plupart des cas.
Un système Debian a parfois besoin de s'identifier par un nom. Pour cela, un nom de machine est maintenu par le noyau.
Le script d'initialisation /etc/init.d/hostname.sh
défini le nom
de machine au démarrage (en utilisant la commande hostname
) au nom
donné dans /etc/hostname
. Ce fichier doit contenir
seulement le nom de machine, pas un nom de domaine complet.
Pour afficher le nom de machine actuel, exécutez hostname
sans
argument.
Le nom de courriel d'une machine est le nom que les programmes
de courrier électronique utilisent pour l'identifier. Le fichier
/etc/mailname
contient ce nom suivi d'un retour à la ligne. Le
nom de courriel est habituellement l'un des noms de domaine complets de la
machine. Voir mailname(5)
.
Ce que les destinataires de courriers électroniques voient dans le champ From: des courriels envoyés depuis votre machine Debian dépend de la façon dont les agents pour utilisateur de courriel (Mail User Agent, MUA) et agents de transport de courriel (Mail Transport Agent, MTA) sont configurés. Supposons qu'un utilisateur local foo envoie un courriel depuis une machine dont le nom de courriel est myhost.dom. Le champ From: du courriel sortant sera :
Même lorsque le MUA a un champ From: configuré, le MTA peut ajouter un champ Sender:foo@herman.dom pour indiquer son origine réelle.
Bien sûr, lorsque le MTA réécrit l'adresse comme décrit dans Configurer Exim pour récupérer les adresses non existantes, Section 9.6.1.3 et Configurer Exim pour réécrire les adresses sélectionnées sur les courriels sortants, Section 9.6.1.4, l'adresse e-mail vue par le destinataire peut être changée en n'importe quoi.
Les machines sont identifiées par un nom de domaine comme par une adresse IP.
DNS est un système client-serveur dans lequel des résolveurs de noms consultent
des serveurs de noms afin d'associer les noms de domaine avec les adresses IP
et d'autres propriétés des machines. La bibliothèque GNU C
resolver(3)
peut aussi chercher des adresses IP dans des fichiers
ou consulter Network Information Services (NIS).
Pour voir quel nom de domaine est associé avec la machine locale, utilisez la commande hostname --fqdn. Cela affiche le premier nom de domaine complet que le résolveur trouve pour la machine locale. [24]
Trouver quelle adresse IP est associée avec un domaine particulier est le
travail du résolveur. Le résolveur le plus communément utilisé est l'ensemble
de fonctions qui ont ce nom (resolver(3)
) dans la bibliothèque GNU
C. Un autre est le résolveur FireDNS qui vient dans le paquet
libfiredns
.
La façon dont le résolveur de la bibliothèque C résout les noms est définie par
la ligne hosts du fichier de configuration
/etc/nsswitch.conf
. Cette ligne liste les services qui doivent
être utilisés pour résoudre un nom : par exemple, dns,
files, nis, nisplus. [25] Voir
nsswitch.conf(5)
. Si le service files, le
comportement est aussi défini par le fichier de configuration
/etc/hosts
. Voir hosts(5)
.
Tous les fichiers ci-dessus sont statiques et peuvent être édités avec votre éditeur favori.
Si le service dns est utilisé, le comportement du résolveur est
aussi défini par le fichier de configuration /etc/resolv.conf
.
Voir resolv.conf(5)
. Une des fonctions importantes de
/etc/resolv.conf
est de lister les adresses IP des serveurs de
noms qui seront contactés pour résoudre le nom. Cette liste dépend souvent de
l'environnement réseau, qui peut changer de temps en temps pendant que votre
machine tourne. Des programmes comme pppd
et
dhclient
sont capables de manipuler resolv.conf
pour
y ajouter ou enlever des lignes, mais ces possibilités ne marchent pas toujours
correctement et peuvent créer des conflits mutuels. Le paquet
resolvconf
résout le problème en fournissant un cadre standard
pour mettre à jour ce fichier. Voir Gérer
l'information sur les serveurs de noms – resolvconf
, Section
10.4.2.
resolvconf
Le paquet resolvconf
fournit un cadre pour la gestion dynamique
des informations sur les serveurs de noms disponibles. Il résout le vieux
problème du maintien de listes dynamiques de serveurs de noms pour le résolveur
et le cache DNS. resolvconf
se place comme intermédiaire entre
les programmes qui contrôlent les interfaces réseau et fournissent
l'information sur les serveurs de noms, et les applications qui ont besoin de
l'information sur les serveurs de noms.
resolvconf
est conçu pour fonctionner sans aucune configuration
manuelle préalable. Cependant, le paquet est relativement nouveau et peut
nécessiter des interventions manuelles pour qu'il fonctionne correctement.
C'est certainement vrai si vous avez personnalisé des paquets pour qu'ils
mettent à jour /etc/resolv.conf
: il faudra désactiver ces
modifications.
Voir /usr/share/doc/resolvconf/README.gz
pour plus de détails.
dnsmasq
Sauf si votre serveur de nom est le serveur officiel d'un domaine, il vaut
mieux utiliser un serveur de noms cache local comme dnsmasq
. Il
fonctionne bien avec resolvconf
.
bind
Si vous devez fournir un service de noms officiel pour un domaine alors il vous
faut un serveur de noms complet comme named
qui vient dans l'un
des paquets bind9
ou bind
. bind9
est
recommandé pour une nouvelle installation.
Pour installer bind9
, installez ces paquets de base :
bind9
; dnsutils
. Vous voudrez peut-être aussi
installer ces utilitaires : bind9-host
;
dns-browse
; dnscvsutil
;
nslint
. Vous voudrez peut-être aussi installer ce paquet de
documentation : bind9-doc
. Vous voudrez peut-être aussi
installer ces paquets de développement : libbind-dev
;
libnet-dns-perl
. Si vous configurez des interfaces par DHCP alors
vous trouverez peut-être ce paquet utile : dhcp-dns
.
Installez bind9
ou dpkg-reconfigure
pour faire la
configuration de base. La configuration consiste à éditer
named.conf
. Dans Debian, ce fichier se trouve dans
/etc/bind/
et est principalement utilisé pour définir les zones
DNS de base ; il inclut deux autres fichiers :
named.conf.local
, pour définir les zones locales, et
named.conf.options
, pour définir les options. (Ce dernier est
traité par resolvconf
pour produire
/var/run/bind/named.options
qui est le même que l'original sauf
que l'entrée forwarders est une liste des serveurs de noms non
locaux disponibles. Pour utiliser cela, changez la ligne include
de named.conf
pour qu'elle inclue
/var/run/bind/named.options
. Voir Gérer l'information sur les serveurs de noms –
resolvconf
, Section 10.4.2.)
Des fichiers de base de données cités dans named.conf*
sans un
chemin complet seront stockés dans /var/cache/bind/
. C'est le bon
endroit pour stocker les fichiers générés par named
: par
exemple, les fichiers de données pour les zones dont le démon est secondaire.
Les fichiers de données statiques de /etc/bind/
sont et doivent
être cités dans named.conf
par leur chemin complet. Voir /usr/share/doc/bind9/README.Debian.gz
pour plus de détails.
La configuration bas niveau des interfaces réseau peut être automatisée par le moyen de Dynamic Host Configuration Protocol (DHCP). Votre pare-feu ou votre routeur ou votre FAI haut-débit fournit peut-être l'adresse IP et d'autres paramètres de cette façon.
Pour que cela fonctionne, vous devez installer un des paquets suivants :
dhcp3-client
(version 3, Internet Software Consortium)
dhcpcd
(Yoichi Hariguchi et Sergei Viznyuk)
pump
(Redhat)
pump
est simple et courament utilisé. dhcp3-client
est complexe mais plus configurable. [26]
Afin de permettre la configuration réseau plus facile Debian fournit un outil
de configuration haut niveau standard qui comprend les commandes
ifup
et ifdown
et le fichier
/etc/network/interfaces
. [27] Si vous choisissez d'utiliser ifupdown
pour
configurer votre réseau alors vous ne devriez pas utiliser les commandes bas
niveau aussi. [28]
Ifupdown
est écrit avec l'hypothèse qu'il sera seul utilisé pour
configurer et déconfigurer les interfaces réseau.
Pour mettre à jour la configuration des interfaces, faites ceci :
# ifdown eth0 # editor /etc/network/interfaces # modifiez à votre convenance # ifup eth0
Pour plus d'information voir interfaces(5)
, /usr/share/doc/ifupdown/examples/network-interfaces.gz
et ifup(8)
.
Supposons que vous voulez configurer une interface Ethernet de façon à avoir
l'adresse IP fixe 192.168.0.123. Cette adresse commence par
192.168.0 donc elle doit être sur un réseau local. Supposons
aussi que 192.168.0.1 est l'adresse de la passerelle du réseau
local vers l'Internet. Éditez /etc/network/interfaces
et ajoutez
une partie comme suit :
iface eth0 inet static address 192.168.0.123 netmask 255.255.255.0 gateway 192.168.0.1
Si vous avez le paquet resolvconf
installé alors vous pouvez
ajouter ces lignes pour spécifier l'information DNS. Par exemple :
iface eth0 inet static address 192.168.0.123 netmask 255.255.255.0 gateway 192.168.0.1 dns-search nicedomain.org dns-nameservers 195.238.2.21 195.238.2.22
Après que l'interface ait été activée, les arguments des options
dns-search et dns-nameservers sont disponibles à
resolvconf
pour inclusion dans resolv.conf
.
L'argument nicedomain.org de l'option dns-search
correspond à l'argument d'une option search de
resolv.conf(5)
. Les arguments 195.238.2.21 et
195.238.2.22 de l'option dns-nameservers
correspondent aux arguments des options nameserver de
resolv.conf(5)
. D'autres options sont dns-domain et
dns-sortlist. Voir Gérer
l'information sur les serveurs de noms – resolvconf
, Section
10.4.2.
Pour configurer une interface par DHCP, éditez le fichier
/etc/network/interfaces
afin d'y inclure :
iface eth0 inet dhcp
Afin que cela fonctionne vous devez avoir installé l'un des clients DHCP mentionnés dans Configurer les interfaces réseau par DHCP, Section 10.5.
Le paquet wireless-tools
inclut un script
/etc/network/if-pre-up.d/wireless-tools
qui permet de configurer
du matériel Wi-Fi (802.11a/b/g) avant qu'une interface soit activée. La
configuration se fait à l'aide du programme iwconfig
; voir
iwconfig(8)
. Pour chaque paramètre de la commande
iwconfig
vous pouvez inclure une option dans
/etc/network/interfaces
avec le nom du paramètre préfixé par
« wireless- ». Par exemple, pour configurer l'ESSID de
eth0 en myessid et la clé de chiffrage à
123456789e avant d'activer eth0 par DHCP, éditez
/etc/network/interfaces
comme suit :
iface eth0 inet dhcp wireless-essid myessid wireless-key 123456789e
Les programmes ifup
et ifdown
utilisent
pon
et poff
pour activer ou désactiver des interfaces
PPP ; lisez-donc d'abord Configurer une interface
PPP, Section 10.2.4.
Supposons que vous avez fait la configuration pour utiliser le fournisseur
myisp. Éditez /etc/network/interfaces
pour y
inclure :
iface ppp0 inet ppp provider myisp
Avec ces lignes, ifup ppp0
exécute
pon myisp
Malheureusement, il n'est pour le moment pas possible de fournir d'autres
options à pppd
dans une section ppp de
/etc/network/interfaces
. [29]
Il n'est pour le moment pas possible d'utiliser ifupdown
pour
effectuer la configuration post-connexion des interfaces PPP. Comme
pon
se termine avant que pppd
ait terminé de créer la
connexion, ifup
exécute les scripts up avant que
l'interface soit activée. Jusqu'à ce que ce bogue [30] soit corrigé il est nécessaire
de faire la configuration post-connexion dans /etc/ppp/ip-up
ou
/etc/ppp/ip-up.d/
.
Beaucoup de Fournisseurs d'Accès Internet (FAIs) utilisent PPP pour négocier
les connexions bien que leurs clients soient connectés par des réseaux Ethernet
et/ou ATM. Cela se fait à l'aide de PPP sur Ethernet (PPPoE) qui est une
technique d'encapsulation des flux PPP dans des trames Ethernet. Supposons que
votre FAI soit myisp. D'abord, configurez PPP et PPPoE
pour le fournisseur myisp. Le moyen le plus facile de
le faire est d'installer le paquet pppoeconf
et de lancer
pppoeconf
depuis une console. Ensuite éditez
/etc/network/interfaces
pour y inclure :
iface eth0 inet ppp provider myisp
Il y a quelques fois des problèmes d'Unité Maximum de Transmission (Maximum
Transmit Unit – MTU) avec PPPoE sur des lignes DSL (Digital Subscriber
Lines). Voir DSL-HOWTO
pour plus de
détails.
Notez que si votre modem haut-débit contient un routeur alors celui-ci prend en charge la connexion PPPoE lui-même et apparaît sur le LAN comme une simple passerelle Ethernet vers l'Internet.
Supposons que eth0
soit connectée à l'Internet avec une adresse IP
obtenue par DHCP et eth1
soit connectée au LAN avec l'adresse IP
fixe 192.168.1.1. Éditez /etc/network/interfaces
pour y inclure :
iface eth0 inet dhcp iface eth1 inet static address 192.168.1.1 netmask 255.255.255.0
Si vous activez NAT sur cette machine comme décrit dans Configurer une passerelle, Section 10.12 alors vous pourrez partager la connexion Internet avec toute les machines du LAN.
Avec des interfaces virtuelles, vous pouvez configurer une seule carte Ethernet
pour qu'elle soit connectée à plusieurs sous-réseaux IP. Par exemple,
supposons que votre machine est sur le réseau local 192.168.0.x/24. Vous
voulez vous connecter à l'Internet en utilisant une adresse IP publique obtenue
par DHCP en utilisant cette même carte Ethernet. Éditez
/etc/network/interfaces
pour y inclure :
iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 iface eth0:0 inet dhcp
L'interface eth0:0 est virtuelle. Lorsqu'elle est activée, son parent eth0 l'est aussi.
Dans ce qui suit, il est important de comprendre la différence entre une interface physique et une interface logique. [31] Une interface physique est ce que l'on a appelé précédemment « l'interface », qui s'appelle eth0, ppp1, etc. Une interface logique est un ensemble de valeurs qui peuvent être assignées aux paramètres variables d'une interface physique. Si vous trouvez cela confus, remplacez l'expression « configuré comme interface logique X » par « configuré avec le profil d'interface X » en lisant.
Les définitions iface de /etc/network/interfaces
sont
en fait des définitions d'interfaces logiques, pas physiques. [32] Si vous ne voulez jamais
reconfigurer vos interfaces alors vous pouvez ignorer cela puisque l'interface
physique X sera par défaut configurée comme interface logique
X.
Cependant, supposons que votre ordinateur est un portable que vous transportez entre la maison et le travail. Lorsque vous connectez votre ordinateur au réseau de l'entreprise ou votre réseau personnel, vous devez configurer eth0 en conséquence.
Définissez d'abord deux interfaces logiques home et work (au lieu de eth0 comme on l'a fait auparavant) qui décrit comment l'interface doit être configurée pour le réseau personnel et le réseau de l'entreprise, respectivement.
iface home inet static address 192.168.0.123 netmask 255.255.255.0 gateway 192.168.0.1 iface work inet static address 81.201.3.123 netmask 255.255.0.0 gateway 81.201.1.1
Ensuite l'interface physique eth0 peut être activée pour le réseau personnel avec la configuration appropriée en le spécifiant sur la ligne de commande :
# ifup eth0=home
Pour reconfigurer eth0 pour le réseau de l'entreprise, exécutez les commandes :
# ifdown eth0 # ifup eth0=work
Notez qu'avec le fichier interfaces
ci-dessus il n'est plus
possible d'activer eth0 par ifup eth0 tout seul. La
raison est que ifup
utilise le nom de l'interface physique comme
défaut pour le nom de l'interface logique et dans notre exemple aucune
interface logique eth0 n'est définie.
Les noms d'interfaces logiques peuvent être transformés en autres noms
d'interfaces logiques lorsque ifup
est exécuté. La façon dont les
noms sont transformés dépend des circonstances. Ainsi, ifup
peut
être configuré pour activer une interface physique avec la bonne interface
logique parmi un ensemble d'alternatives prédéterminées.
La transformation de noms d'interfaces logiques apparaît dans les cas suivants :
ifup
alors le nom de l'interface physique est utilisé comme nom
d'interface logique.
/etc/network/interfaces
alors l'interface
physique est activée comme cette interface logique. Sinon ifup
affiche un message « Ignoring unknown interface » et s'arrête.
La syntaxe de la section mapping est :
mapping glob-pattern script script-name [map script input]
Le script appelé dans la section mapping est exécuté avec le nom de l'interface physique comme argument et avec le contenu de toutes les lignes map suivantes de la section. Le script affiche les résultats de la transformation sur la sortie standard avant de s'arrêter.
Par exemple, la section mapping suivante fera que
ifup
activera l'interface eth0 comme interface
logique home.
mapping eth0 script /usr/local/sbin/echo-home
where /usr/local/sbin/echo-home
is:
#!/bin/sh echo home
Parce que la transformation est faite par un script, il est possible de
sélectionner l'interface logique par un test. Commençons par un exemple.
Supposons que vous avez différentes cartes réseau pour le travail et pour la
maison. Le répertoire /usr/share/doc/ifupdown/examples/
contient
un script de transformation qui peut être utilisé pour sélectionner une
interface logique en se basant sur l'adresse MAC (Media Access Controller).
Installez d'abord le script dans un répertoire approprié.
# install -m770 /usr/share/doc/ifupdown/examples/match-mac-address.sh \ /usr/local/sbin/
Ensuite ajoutez une section comme celle qui suit à
/etc/network/interfaces
:
mapping eth0 script /usr/local/sbin/match-mac-address.sh map 02:23:45:3C:45:3C home map 00:A3:03:63:26:93 work
Des programmes plus sophistiqués de transformation sont décrits ci-dessous dans guessnet, Section 10.8.1, et laptop-net, Section 10.8.2.
Installez guessnet
et ajoutez une section comme suit à
/etc/network/interfaces
:
mapping eth0 script guessnet-ifupdown map home map work
Maintenant lorsque vous exécutez ifup eth0
, guessnet
vérifiera s'il faut activer home ou work. Pour faire
cela, il utilise l'information des définitions d'interfaces logiques.
Le paquet laptop-net
a une approche différente de la
reconfiguration du réseau automagique. Laptop-net n'utilise pas les
interfaces logiques de ifupdown
mais ses propres schémas de
configuration et profils système. Laptop-net utilise néanmoins
ifupdown
pour configurer les interfaces physiques. Pour plus
d'informations, consultez sa documentation laptop-net-doc
.
Nous avons vu comment les interfaces peuvent être reconfigurées. La reconfiguration doit être effectuée au moment approprié.
Traditionnellement, le réseau était configuré pendant la séquence de démarrage
par le fichier /etc/rcS.d/S40networking
et était rarement
reconfiguré. Les services qui dépendaient du réseau étaient démarrés plus tard
dans la séquence de démarrage. À l'arrêt ou au redémarrage, les scripts de
démarrage étaient exécutés dans l'ordre inverse.
Actuellement, cependant, il y a une tendance dans GNU et Linux à supporter du
matériel et des environnements qui changent dynamiquement. D'abord, le support
pour l'insertion de cartes PCMCIA à chaud a été ajouté ; plus récemment,
le mécanisme hotplug a été ajouté afin que beaucoup plus de
périphériques puissent être ajoutés pendant que l'ordinateur tourne. Cela
inclut du matériel réseau. Notez que les services qui dépendent sur du
matériel qui est installé à chaud doivent seulement être démarrés après que le
matériel ait été ajouté et doivent être arrêtés lorsque le matériel est enlevé.
Cela signifie que ces services doievnt être enlevés du contrôle du démarrage
System V et mis sous contrôle du paquet ifupdown
à la place.
Par exemple, supposons que le service foo contrôlé par le script
de démarrage /etc/init.d/foo
dépend de l'interface réseau
eth0 reconfigurée dynamiquement.
# update-rc.d -f foo remove
ifupdown
en
ajoutant les options up et down avec des appels au
script de démarrage de foo à la section eth0 de
/etc/network/interfaces
iface eth0 inet dhcp up /etc/init.d/foo start down /etc/init.d/foo stop
Au démarrage le script /etc/rcS.d/S40networking
exécute la
commande ifup -a
. Cela active toutes les interfaces physiques
listées dans les sections auto de
/etc/network/interfaces
.
Aujourd'hui, il est souvent mieux de gérer la configuration réseau par des
méthodes dynamiques. Une fois que les mécanismes pour supporter du matériel
qui change dynamiquement sont en place, il devient plus simple de traiter le
matériel fixe comme s'il était dynamique aussi. Le démarrage peut être traité
comme un simple événement hotplug. (Voir Activer la configuration réseau –
hotplug
, Section 10.9.2.)
Cependant, dans presque tous les cas, on veut au moins l'interface
lo au démarrage. Ainsi, assurez-vous que
/etc/network/interfaces
inclut les lignes suivantes.
auto lo iface lo inet loopback
Vous pouvez ajouter d'autres interfaces physiques dans des sections
auto si vous voulez qu'elles soient activées au démarrage aussi.
N'ajoutez jamais d'interface PCMCIA dans des sections
auto. cardmgr
est démarré après
/etc/rcS.d/S40networking
dans la séquence de démarrage.
hotplug
Pour le support de hotplug installez le paquet hotplug
.
Le matériel réseau peut être installé à chaud soit au démarrage soit après
qu'une carte (par exemple PCMCIA) ait été insérée dans la machine, ou après
qu'un utilitaire comme discover
soit exécuté et charge les modules
nécessaires.
Lorsque le noyau détecte un nouveau matériel il initialise le pilote pour ce
matériel et exécute ensuite le programme hotplug
pour le
configurer. Ensuite si le matériel est enlevé alors le noyau exécute
hotplug
de nouveau avec des paramètres différents. Dans Debian,
lorsque hotplug
est appelé il exécute les scripts de
/etc/hotplug/
et /etc/hotplug.d/
. Voir
hotplug(8)
pour plus de détails.
Le matériel réseau qui vient d'être inséré est configuré par le script
/etc/hotplug/net.agent
. [33] Supposons que votre carte réseau PCMCIA ait été insérée, ce
qui rend l'interface eth0 disponible pour utilisation.
/etc/hotplug/net.agent
exécute les actions suivantes :
ifup eth0=hotplug
À moins d'avoir ajouté une interface logique appelée hotplug à
/etc/network/interfaces
, cette commande ne fera rien. Pour que
cette commande configure eth0, ajoutez la section suivante dans
/etc/network/interfaces
:
mapping hotplug script echo
Comme expliqué dans Reconfiguration du réseau, Section 10.7 cela va transformer la commande ci-dessus pour être équivalente à :
ifup eth0=eth0
(N'incluez pas de section de ce type si vous
utilisez des instances de ifplugd
démarrées par
hotplug
pour contrôler l'interface, comme décrit dans Activer la configuration réseau –
ifplugd
, Section 10.9.3.)
Si vous voulez que seulement eth0 soit activée par
hotplug, et pas d'autres interfaces, alors utilisez grep
au lieu de echo
:
mapping hotplug script grep map eth0
Voir Reconfiguration magique du réseau, Section
10.8 et /usr/share/doc/hotplug/README.Debian
pour plus d'astuces.
ifplugd
ifplugd
active ou désactive une interface selon que le matériel
sous-jacent est ou n'est pas connecté à un réseau. Le programme peut détecter
un câble connecté à une interface Ethernet ou un piont d'accès Wi-Fi. Lorsque
ifplugd
voit que l'état d'un lien a changé il lance un script qui
par défaut exécute ifup
ou ifdown
pour l'interface.
ifplugd
fonctionne bien avec hotplug
. Lorsqu'une
carte est insérée, ce qui rend une interface disponible,
/etc/hotplug.d/net/ifplugd.hotplug
exécute une instance de
ifplugd
pour cette interface. Lorsque ifplugd
détecte que la carte est connectée à un réseau, il exécute ifup
pour cette interface.
waproamd
Afin de s'associer à un point d'accès, une carte Wi-Fi peut devoir être
programmée avec une clé de chiffrement WEP. Si vous utilisez
ifplugd
pour contrôler ifup
comme décrit dans Activer la configuration réseau –
ifplugd
, Section 10.9.3 alors vous ne pouvez évidemment pas
configurer la clé de chiffrement avec ifup
parce que
ifup
n'est appelé qu'après que la carte ait été associée au point
d'accès. Une solution possible est de programmer toutes les clés requises dans
la mémoire non volatile de la carte Wi-Fi. Si vous vous déplacez sur de
nombreux réseaux, votre carte Wi-Fi peut ne pas pouvoir stocker assez de clés.
Une autre solution est d'utiliser waproamd
qui configure la clé de
chiffrement WEP selon les points d'accès disponibles révélés par une recherche.
waproamd
fonctionne bien avec hotplug
. Lorsqu'une
carte est insérée, ce qui rend une interface disponible,
/etc/hotplug.d/net/waproamd.hotplug
exécute une instance de
waproamd
pour cette interface. waproamd
fonctionne
bien avec ifplugd
.
Voir le README du paquet waproamd
pour plus d'information.
La configuration des cartes réseau PCMCIA peut se faire de différentes façons.
ifupdown
sous le contrôle de hotplug
ifupdown
sous le contrôle de hotplug
avec
pcmcia-cs
désactivé en ajoutant exit 0 au début du
ficher /etc/pcmcia/network
(recommandé)
ifupdown
sous le contrôle de pcmcia-cs
avec
/etc/pcmcia/network
par défaut (obsolète)
pcmcia-cs
modifié en activant des possibilités de
/etc/pcmcia/network
(obsolète)
L'approche recommandée pour les cartes 16 bits prend avantage du fait que le
sous-système hotplug de Linux 2.4 supporte PCMCIA. Suivez simplement
les instructions de Activer la configuration
réseau – hotplug
, Section 10.9.2. [34] Afin que le paquet
pcmcia-cs
n'interfère pas avec le paquet hotplug
,
vous devez le modifier en ajoutant la ligne :
exit 0
au début de /etc/pcmcia/network
pour le désactiver.
Notez qu'il n'y a rien de mauvais à exécuter cardmgr
. On en veut
simplement pas qu'il appelle les programmes de configuration réseau.
Afin que cardmgr
fonctionne correctement vous devrez peut-être
éditer /etc/pcmcia/config.opts
afin de configurer les ressources
assignées aux cartes PCMCIA 16 bits. Voir PCMCIA, Section 7.2.1 et le
Linux PCMCIA
HOWTO
pour plus d'information.
La configuration des services réseau sur une machine de bureau ou un serveur personnel inclut :
/etc/inetd.conf
ssh
: shell sécurisé OpenSSH, voir SSH, Section 9.5.
/etc/ssh/ssh_config
/etc/ssh/sshd_config
exim
: agent de transport de courriel, voir Nom de courriel, Section 10.3.2 et Agent de transport de courrier électronique,
Section 9.6.1.
/etc/exim/exim.conf
/etc/mailname
/etc/aliases
/etc/email-addresses
fetchmail
: démon pour récupérer le courriel depuis un compte
POP3, voir Récupérer le courrier
électronique – Fetchmail, Section 9.6.2.
/etc/fetchmailrc
procmail
: livraison locale de courriel et filtre, voir Traiter le courrier électronique –
Procmail, Section 9.6.3.
~/.procmailrc
/etc/host.conf
/etc/hostname
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/resolv.conf
/etc/bind/named.conf
(à éditer)
/etc/bind/db.lan
(à ajouter pour les machines du réseau local)
/etc/bind/db.192.168.0
(à ajouter pour le DNS inversé
du réseau local)
/etc/dhcp3/dhclient.conf
(sur le client DHCP)
/etc/default/dhcp3-server
(sur le serveur DHCP)
/etc/dhcp3/dhcpd.conf
(sur le serveur DHCP)
cvs
: Concurrent Version System, voir Concurrent Versions System (CVS), Section 12.1.
/etc/cvs-cron.conf
/etc/cvs-pserver.conf
nfs-kernel-server
: Network File System, voir Configuration NFS, Section 3.4. (pour
systèmes Unix)
/etc/exports
samba
: partage de fichiers et d'imprimantes surr le réseau
pour Windows, voir Configuration Samba,
Section 3.5 et Samba, Section
8.6.38.
/etc/samba/smb.conf
/etc/printcap
(pour lpr)
apache
et apache2
: serveur web.
/etc/apache/*
/etc/apache2/*
squid
: cache web.
/etc/squid/*
Si vous rencontrez des problèmes, alors consultez la sortie des programmes suivants en premier :
# ifconfig # cat /proc/pci # cat /proc/interrupts # dmesg | more
Consultez aussi les sections suivant Bases pour tester un réseau, Section 8.6.29.
Si vous avez des problèmes avec certains sites web, consultez Étranges problèmes d'accès à certains sites web, Section 3.7.5.
Une machine Debian peut être une passerelle multi-possibilités, qui fait Translation d'Adresse Réseau (NAT, aussi connu sous le nom de masquerading), transfert de courriel, DHCP, cache DNS, cache HTTP, serveur CVS, serveur NFS, serveur Samba. Voir Nom d'hôte et IP à utiliser pour le réseau local, Section 3.1.9 pour un exemple de configuration.
Le projet netfilter/iptables est un sous-système de pare-feu pour Linux 2.4 et
supérieur. Voir Netfilter
, où de nombreux problèmes
de configuration réseau sont expliqués.
Le traitement des paquets par Netfilter utilise cinq chaînes par défaut : PREROUTING, INPUT, FORWARD, OUTPUT, et POSTROUTING.
routing decision IN ------> PRE ---> ------> FORWARD -----> ----> POST -----> OUT interface ROUTING \ filter / ROUTING interface DNAT | tracking ^ SNAT REDIRECT | | MASQUERADE v | INPUT OUTPUT | filter ^ filter,DNAT v | \--> Local Process --/ user-space programs
Les paquets sont traités pour chaque chaîne par défaut selon la table suivante.
Les règles de pare-feu ont plusieurs cibles :
--to-source ipaddr[-ipaddr][:port-port]
--to-ports port[-port]
--to-destination ipaddr[-ipaddr][:port-port]
--to-ports port[-port]
Les commandes de base de iptables
sont :
iptables -N chaine # crée une chaine iptables -A chaine \ # ajoute une règle à chaine -t table \ # utilise table (filtre, nat, troncage) -p protocol \ # tcp, udp, icmp, ou tous -s source-address[/mask] \ --sport port[:port] \ # port source si -p est tcp ou udp -d destination-address[/mask] \ --dport port[:port] \ # port destination si -p est tcp ou udp -j target \ # que faire si cela correspond -i in-interface-name \ # pour INPUT, FORWARD, PREROUTING -o out-interface-name # pour FORWARD, OUTPUT, POSTROUTING
Les machines du LAN peuvent accéder à l'Internet à travers une passerelle qui traduit les adresses IP du LAN en des adresses IP utilisables sur l'Internet.
# apt-get install ipmasq
Appliquez les règles de l'exemple pour fortifier la protection de
ipmasq
. Consultez /usr/share/doc/ipmasq/examples/stronger/README
.
Pour l'image du noyau Debian kernel-image-2.4 de Woody, assurez-vous de charger
les modules appropriés. La version de Sarge corrige ceci. Consultez Fonctions réseau, Section 7.2.3 pour
les instructions de configuration.
Pour l'image du noyau Debian 2.2, éditez Z92timeouts.rul
dans
/etc/masq/rules
comme suit pour assurer une connexion plus longue
aux sites distants (bon pour de gros emails, etc.) :
# tcp, tcp-fin, udp # 2hr, 10 sec, 160 sec - default # 1 day, 10 min, 10 min - longer example $IPCHAINS -M -S 86400 600 600
De plus, si le réseau est accédé par une carte PCMCIA, ipmasq
a
besoin d'être démarré soit depuis /etc/pcmcia/network.opts
(lire
/usr/share/doc/ipmasq/ipmasq.txt.gz
)
soit depuis /etc/network/interfaces
(lire Configuration réseau et PCMCIA, Section 10.9.5 et
Activer la reconfiguration du réseau, Section
10.9).
Supposons que vous avez un PC portable qui est configuré pour utiliser un autre environnement réseau et que vous voulez utiliser votre logiciel de courrier électronique sans le reconfigurer.
En ajoutant les règles suivantes avec la commande iptables
sur la
passerelle, la connexion SMTP sera redirigée vers la passerelle.
# iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j REDIRECT \ -p tcp --dport smtp --to-port 25 # smtp=25, INPUT est ouvert
Pour une règle de redirection plus complexe, installez le paquet
ipmasq
et ajoutez M30redirect.def
au répertoire
/etc/ipmasq/rules/
.
[FIXME] Politique de routage (par Phil Brutsche
pbrutsch@tux.creighton.edu) : Voir le Manuel d'iproute
pour les détails.
Le contrôle de traffic peut aussi être intéressant.
Environnement :
eth0: 192.168.1.2/24; gateway 192.168.1.1 eth1: 10.0.0.2/24; gateway 10.0.0.1 Pas de masquerading sur cette machine.
Un peu de magie :
[FIXME] Je n'ai jamais fait cela. Comment configurer une connexion RTC en cas de défaillance d'une connexion rapide ? Envoyez-moi une rustine pour cela s'il-vous-plaît :)
Guide de référence pour Debian
CVS, lun 03 avr 2005 22:57:18 UTCosamu@debian.org
gerbs@free.fr