Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Site
Windows
Linux
C++
Logiciel libres
Divers
Support
Retour accueil
YAGIL
Version en ligne
Téléchargement
Liens
Il est quasiment certain que votre distribution dispose d'un outil permettant d'effectuer la
configuration du réseau simplement. Connaissant à présent la signification des termes utilisés dans
les réseaux TCP/IP, vous devriez pouvoir parvenir à une configuration valide relativement
simplement. Il est fortement recommandé de consulter la documentation de votre distribution. Les
commandes de configuration du réseau sont souvent appelées dans les scripts de démarrage de la
machine, ou dans les scripts de changement de niveau d'exécution. Toutefois, il peut être utile de
connaître ces commandes, ne serait-ce que pour comprendre comment votre système fonctionne.
Cette section a donc pour but de vous présenter ces commandes, ainsi que les principaux fichiers
de configuration du réseau utilisés sous Linux.
l'interface loopback, qui représente le réseau virtuel de la machine, et qui permet aux
applications réseau d'une même machine de communiquer entre elles même si l'on ne
dispose pas de carte réseau ;
les interfaces des cartes réseau (que ce soient des cartes Ethernet, TokenRing ou autres) ;
les interfaces ppp, plip ou slip, qui sont des interfaces permettant d'utiliser les connexions
sérielles, parallèles ou téléphoniques comme des réseaux.
où interface est le nom de l'interface réseau que vous voulez configurer, adresse est l'adresse IP
que cette interface gérera, et masque est le masque de sous-réseau que vous utilisez. Les interfaces
que vous aurez à configurer seront certainement des interfaces Ethernet, auquel cas vous devrez
utiliser les noms eth0, eth1, etc. dans la commande ifconfig. Si vous désirez configurer l'interface
loopback, vous devrez utiliser le nom d'interface lo.
Le paramètre up donné à ifconfig lui indique que l'interface doit être activée. Cela signifie que dès
que la commande ifconfig s'achèvera, votre interface réseau sera active et fonctionnelle. On ne
peut faire plus simple... Bien entendu, il existe le paramètre inverse : down. Ce paramètre s'utilise
tout simplement dans la commande ifconfig avec la syntaxe suivante :
ifconfig interface down
Note : Prenez bien garde, lorsque vous écrivez vos adresses IP, à ne pas rajouter de 0
supplémentaire devant les nombres qui la constituent. En effet, il existe une
convention en informatique qui dit que les nombres préfixés d'un 0 sont codés en octal,
c'est-à-dire en base 8. Il va de soi qu'une adresse IP codée en octal n'utilise pas les
mêmes nombres que lorsqu'elle est exprimée en décimal, aussi éprouveriez-vous
quelques difficultés pour diagnostiquer le non fonctionnement de votre réseau si vous
faisiez cette erreur !
Le noyau utilisera par défaut le nombre 255 pour les adresses de broadcast dans les composantes
de l'adresse IP qui ne fait pas partie de l'adresse de sous-réseau. Si vous désirez utiliser une autre
adresse (en général, l'alternative est de prendre l'adresse du sous-réseau), vous devrez utiliser
l'option broadcast adresse dans la commande ifconfig. Cependant, le comportement par défaut
convient à la plupart des réseaux. La commande de configuration donnée en exemple ci-dessus sera
alors :
ifconfig eth0 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.0 up
Enfin, il est possible d'affecter plusieurs adresses IP à certaines interfaces réseau. C'est en
particulier le cas pour toutes les interfaces réseau classiques, mais bien entendu cela n'est pas
réalisable avec les interfaces de type point à point comme les interfaces des connexions ppp.
Lorsqu'une interface dispose de plusieurs adresses, la première est considérée comme l'adresse
principale de l'interface, et les suivantes comme des alias. Ces alias utilisent comme nom le nom
de l'interface réseau principale et le numéro de l'alias, séparés par deux points (caractère ':'). Par
exemple, si l'interface eth0 dispose d'un alias, celui-ci sera nommé eth0:0. Ainsi, pour fixer
l'adresse d'un alias d'une interface réseau, on utilisera la syntaxe suivante :
ifconfig interface:numéro add adresse netmask masque
où interface est toujours le nom de l'interface, numéro est le numéro de l'alias, adresse est
l'adresse IP à attribuer à cet alias, et masque est le masque de sous-réseau de cette adresse.
La commande ifconfig est en général appelée dans les scripts d'initialisation du système, qui ont
été générés par l'utilitaire de configuration réseau de votre distribution. Si vous effectuez un grep
sur « ifconfig » dans le répertoire /etc/rc.d/ (ou /sbin/init.d/, selon votre distribution), vous
trouverez la commande de démarrage du réseau. Il se peut qu'une variable d'environnement soit
utilisée à la place de l'adresse IP que vous avez choisie. Quoi qu'il en soit, vous devez sans aucun
doute avoir les lignes suivantes, qui permettent l'initialisation de l'interface loopback :
ifconfig lo 127.0.0.1 netmask 255.0.0.0 up
La commande utilisée pour définir une route est, chose surprenante, la commande système route.
Sa syntaxe est donnée ci-dessous :
route opération [-net | -host] adresse netmask masque interface
où opération est l'opération à effectuer sur la table de routage. L'opération la plus courante est
simplement l'ajout d'une règle de routage, auquel cas add doit être utilisé. L'option suivante permet
d'indiquer si le critère de sélection des paquets se fait sur l'adresse du réseau destination ou plus
restrictivement sur l'adresse de la machine destination. En général, il est courant d'utiliser la
sélection de toutes les adresses d'un même réseau et de les router vers une même interface. Dans
tous les cas, adresse est l'adresse IP de la destination, que celle-ci soit un réseau ou une machine.
Si la destination est un réseau, il faut indiquer le masque de sous-réseau masque à l'aide de l'option
netmask. Enfin, interface est l'interface réseau vers laquelle doivent être envoyés les paquets qui
vérifient les critères de sélection de cette règle.
Par exemple, la règle de routage à utiliser pour l'interface loopback est la suivante :
route add -net 127.0.0.0 netmask 255.0.0.0 lo
Cette règle signifie que tous les paquets dont l'adresse de destination appartient au sous-réseau de
classe A 127.0.0.0 doivent être transférés vers l'interface loopback. Cela implique en particulier que
les paquets à destination de la machine d'adresse IP 127.0.0.1 (c'est-à-dire la machine locale) seront
envoyés vers l'interface loopback (ils reviendront donc sur la machine locale).
Elle permet d'envoyer tous les paquets à destination du réseau de classe C 192.168.0.0 vers la
première interface Ethernet. C'est typiquement ce genre de règle qu'il faut utiliser pour faire
fonctionner un réseau local.
Il n'est normalement pas nécessaire d'ajouter les règles de routage pour les réseaux auxquel la
machine est connectée. En effet, la configuration d'une carte réseau à l'aide de la commande
ifconfig ajoute automatiquement à la table de routage une règle pour envoyer les paquets à
destination de ce réseau par l'interface réseau qui y est connectée. Cependant, la commande route
devient réellement nécessaire lorsqu'il faut définir les passerelles à utiliser pour l'envoi des paquets
destinés à une machine à laquelle la machine locale ne peut accéder directement. Les règles de
routage faisant intervenir une passerelle sont semblables aux règles de routage vues ci-dessus, à
ceci près que l'adresse IP de la passerelle à utiliser doit être fournie. Pour cela, on utilise l'option gw
(abréviation de l'anglais « Gateway »). La syntaxe utilisée est donc la suivante :
route add [-net | -host] adresse netmask masque gw passerelle interface
où passerelle est l'adresse IP de la passerelle à utiliser pour router les paquets qui vérifient les
critères de cette règle. Les autres paramètres sont les mêmes que pour les règles de routage
classique.
Par exemple, supposons qu'une machine soit connectée à un réseau d'adresse 192.168.0.0, et que
sur ce réseau se trouve une passerelle d'adresse 192.168.0.1 permettant d'atteindre un autre réseau,
dont l'adresse est 192.168.1.0. Une machine du réseau 192.168.0.0 aura typiquement les règles de
routage suivantes :
route add -net 192.168.0.0 netmask 255.255.255.0 eth0
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.1 eth0
La première règle permet, comme on l'a déjà vu, de communiquer avec toutes les machines du
réseau local. La deuxième règle permet d'envoyer à la passerelle 192.168.0.1 tous les paquets à
destination du réseau 192.168.1.0.
Inversement, si la passerelle utilise l'adresse 192.168.1.15 sur le réseau 192.168.1.0, les machines
de ce réseau qui voudront accéder au réseau 192.168.0.0 devront spécifier la règle de routage
suivante :
route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.1.15 eth0
Bien entendu, il est nécessaire que toutes les machines des deux réseaux utilisent ces règles de
routage pour que la communication entre les deux réseaux se fasse dans les deux sens.
Le problème de ces règles de routage est qu'elles spécifient l'adresse du réseau destination. Il est
évidemment hors de question d'utiliser une règle de routage différente pour toutes les adresses de
réseaux possibles. Il est donc possible de définir ce qu'on appelle une passerelle par défaut, qui
n'est rien d'autre que la passerelle vers laquelle doivent être envoyés tous les paquets qui n'ont pas
vérifié les critères des autres règle de routage. La syntaxe à utiliser pour définir la passerelle par
défaut est plus simple, puisqu'il n'est plus nécessaire de préciser les critères de sélection :
route add default gw passerelle interface
Ainsi, pour reprendre l'exemple précédent, supposons que la machine 192.168.0.47 dispose d'une
connexion à Internet et soit configurée pour partager cette connexion avec les machines du réseau
local. Pour que toutes les machines du réseau local puisse profiter de cette connexion, il suffit de
demander à ce que tous les paquets qui ne vérifient aucune autre règle de routage soient envoyés à
la passerelle 192.168.0.47. Cela se fait avec la règle de routage suivante :
route add default gw 192.168.0.47 eth0
Cette commande permet également de modifier ce nom, simplement avec la syntaxe suivante :
hostname nom
où nom est le nom à utiliser. Il est d'usage de n'utiliser que le nom de la machine, sans son domaine.
Le nom de domaine est déterminé automatiquement par le système à partir des informations issues
de la configuration de la résolution des noms de domaine. Nous verrons cela dans le paragraphe
suivant.
Cette commande est donc très simple à utiliser, et elle est en général appelée dans les scripts de
démarrage du système. La plupart des distributions utilisent le fichier /etc/HOSTNAME pour stocker
le nom de la machine. Vous êtes bien entendu libre de choisir le nom que vous voulez pour votre
ordinateur, mais vous devez vous assurer que ce nom est unique dans votre domaine !
Elles permettent d'indiquer que la recherche des noms pour leur résolution doit se faire d'abord
localement, puis par appel aux DNS si la recherche précédente a échoué. C'est en général le
comportement désiré. La deuxième ligne permet de faire en sorte que toutes les adresses
correspondant à une machine soient renvoyées. Si l'on avait utilisé l'option multi off, seule la
première adresse IP trouvée aurait été renvoyée.
La liste de noms locale est stockée dans le fichier /etc/hosts (cela explique le nom hosts utilisé
pour l'option order dans le fichier /etc/host.conf). Votre ordinateur connaîtra directement
l'adresse IP de toutes les machines référencées dans ce fichier. Il est bon de placer ici une entrée
pour les ordinateurs les plus couramment utilisés sur le réseau. Chaque entrée commence par une
adresse IP, et est suivie de la liste des noms de la machine possédant cette adresse, séparés par des
espaces. Pour ceux qui ne disposent pas de réseau local, ce fichier doit être relativement simple :
seule la ligne affectant l'adresse 127.0.0.1 à la machine locale (appelée « localhost ») doit s'y
trouver.
127.0.0.1 localhost
De la même manière, le fichier /etc/networks contient les adresses des réseaux. Ce fichier est
utilisé par la commande route pour donner un nom aux différents réseaux. Chaque entrée est
constituée du nom du réseau, suivi de son adresse IP. Encore une fois, ce fichier se réduit à sa plus
simple expression pour ceux qui n'ont pas de réseau local, puisqu'il ne contiendra tout au plus
qu'une entrée pour le réseau « loopback », sur lequel se trouve l'adresse de retour 127.0.0.1. Cette
entrée aura donc la forme suivante :
loopback 127.0.0.0
La configuration des serveurs de noms est en revanche une opération nécessaire si l'on désire
accéder à des machines dont on ne connaît que le nom. Le fichier de configuration utilisé est cette
fois le fichier /etc/resolv.conf. Sa structure est encore une fois très simple, avec une option par
ligne, chaque option étant introduite par un mot clé.
Le mot clé domain permet d'indiquer le nom du domaine dont fait partie votre machine. Par
exemple, si votre nom de domaine est « andromede.galaxie », vous devrez utiliser la ligne
suivante :
domain andromede.galaxie
Le mot clé search permet quant à lui de spécifier une liste de noms de domaines à ajouter par
défaut aux noms de machines non complètement qualifiés. Les éléments de cette liste doivent être
séparés par des espaces. La recherche d'une machine dont le nom ne comprend pas la partie de nom
de domaine s'effectue en ajoutant au nom de la machine les noms des domaines indiqués ici,
jusqu'à ce que la résolution du nom en adresse IP réussisse. Cette recherche commence bien
entendu par le nom de domaine local, s'il a été défini. Il est donc recommandé d'indiquer votre nom
de domaine dans cette liste de noms de domaines. Par exemple, si votre machine fait partie du
domaine « andromede.galaxie », vous devrez utiliser la ligne suivante :
search andromede.galaxie
Ainsi, si vous recherchez l'adresse de la machine « krypton », la requête au DNS se fera avec le
nom complètement qualifié « krypton.andromede.galaxie ». Vous êtes bien entendu libre d'ajouter
d'autres noms de domaines pour le cas où la résolution de nom échouerait sur ce domaine.
Enfin, l'option nameserver est essentielle, puisqu'elle permet de donner les adresses IP des
serveurs de DNS auxquels doivent être adressées les requêtes de résolution de noms. Par exemple,
si vous disposez de deux serveurs DNS, un primaire, d'adresse 192.168.0.10, et un secondaire,
d'adresse 192.168.0.15, vous utiliserez la ligne suivante :
nameserver 192.168.0.10 192.168.0.15
Cette ligne est évidemment obligatoire, faute de quoi la résolution des noms de machines en
adresse IP échouera pour toute machine qui ne se trouve pas dans votre fichier /etc/hosts.
La manière la plus simple de configurer les protocoles DHCP et BOOTP sur un poste client est
d'utiliser les fonctionnalités d'auto-configuration du noyau. Cependant, il est également possible
d'effectuer cette configuration au niveau utilisateur à l'aide de programmes complémentaires. Les
deux sections suivantes décrivent ces deux techniques.
L'option à activer pour permettre l'utilisation du protocole BOOTP est l'option « IP: kernel
level autoconfiguration » du menu « Networking options ». Cette option vous permettra de
sélectionner le protocole d'auto-configuration réseau que le noyau devra utiliser lors de son
amorçage. Vous devrez alors choisir l'option « IP: DHCP support (NEW) » ou l'option « IP:
BOOTP support (NEW) » pour activer respectivement les protocoles DHCP et BOOTP.
Une fois ces options sélectionnées, vous pourrez recompiler votre noyau, l'installer et redémarrer
la machine. Lors du démarrage, le noyau doit chercher un serveur DHCP ou un serveur BOOTP sur
le réseau local pour effectuer la configuration réseau de votre carte réseau.
Note : Vous devrez peut-être également activer les options « NFS file system
support » et « Root file system on NFS » du menu « Network File Systems » si
vous désirez faire démarrer votre machine sur un système de fichiers racine monté en
NFS lors du démarrage.
Il est également possible de configurer les clients DHCP au niveau utilisateur, à l'aide de
programmes complémentaires. Comme sur la plupart des machines Unix, le programme à utiliser
est le programme dhclient. Ce programme est généralement lancé dans les scripts de démarrage
des machines, et envoie des paquets de demande de configuration sur le réseau à l'adresse de
diffusion générale 255.255.255.255. Ces paquets sont donc susceptibles d'être captées par toutes les
machines du réseau, mais seuls les serveurs DHCP y répondent. Les réponses obtenues sont alors
analysés par dhclient, qui configure en conséquence l'interface réseau et passe ensuite en arrière-
plan.
Les informations envoyées par les serveurs DHCP peuvent être plus ou moins complètes, la base
étant bien sûr l'adresse IP de la machine et son masque de sous-réseau. Il est toutefois possible de
donner plus d'informations, comme par exemple les adresses des serveurs de noms, des routes par
défaut et des passerelles à utiliser.
Les adresses IP attribuées aux clients ne sont pas permanentes, car le protocole DHCP est avant
tout destiné à la configuration automatique des postes itinérants ou susceptibles de redémarrer
souvent. Par conséquent, ces adresses sont fournies dans le cadre d'un bail, dont la durée maximum
est fixée par le serveur. Dès que le bail obtenu par un client expire, celui-ci doit chercher à le
renouveler. C'est encore le programme dhclient qui s'en charge. C'est la raison pour laquelle celui-
ci passe en arrière-plan après avoir configuré l'interface pour la première fois : il attend la fin des
baux de la machine sur laquelle il tourne et cherche à les renouveler. Si un client ne renouvelle pas
ce bail (parce qu'il est arrêté par exemple), le serveur DHCP peut réutiliser son adresse IP et
l'affecter à une autre machine. Bien que les serveurs DHCP s'efforcent généralement de conserver
les adresses IP des clients à chaque bail, un client configuré par DHCP ne peut donc pas considérer
que son adresse IP restera toujours la même. C'est la contrepartie de la flexibilité.
Si aucun serveur DHCP ne peut être contacté lors du démarrage, dhclient abandonne
temporairement et réessaie au bout d'un temps aléatoire. Au bout d'un certain nombre d'essais non
fructueux, il peut décider de configurer les interfaces réseau avec les adresses IP des anciens baux
obtenus par la machine. Pour cela, il mémorise dans le fichier de configuration
/var/db/dhclient.lease les adresses IP de ces anciens baux. Ce fichier est périodiquement
réécrit avec la liste des adresses des baux valides afin d'éviter qu'il ne se remplisse ad vitam
eternam.
Bien entendu, les postes clients ne peuvent pas choisir leurs adresses IP sans vérification d'unicité.
Dans le cas de l'absence de serveur DHCP (et donc d'autorité centrale), les clients qui démarrent
interrogent les machines déjà présentes sur le réseau pour déterminer si l'adresse qu'ils envisagent
de prendre est bien libre. Dans le cas contraire, une autre adresse est essayée, et ainsi de suite.
Ainsi, même en cas de panne de tous les serveurs DHCP d'un réseau, les postes clients peuvent
toujours travailler ensemble sans conflit d'adresses IP.
La configuration DHCP pour les postes clients se réduit donc à l'essentiel : le lancement de
dhclient. Celui-ci s'utilise avec la syntaxe suivante :
dhclient interface0 [interface1 [...]]
où interface0, interface1, etc., sont les interfaces réseau qui doivent être configurées par
DHCP. On ne peut donc pas faire plus simple...
Note : Sous Linux, le programme dhclient utilise les fonctionnalité d'accès direct aux
cartes réseau et de filtrage des paquets. Ces deux fonctionnalités peuvent être activées
dans la configuration du noyau à l'aide des options « Packet socket », « Packet
socket: mmapped IO » et « Socket Filtering » du menu « Networking options ».
L'option « IP: multicasting » de la liste des options du protocole IP devra
également être activée. Le détail de la configuration et de la compilation du noyau a
été vu dans la Section 7.3.
Le programme dhclient est assez facétieux depuis quelques versions. S'il refuse
obstinément de fonctionner, vous devrez sans doute vous rabattre vers le programme
dhcpcd, beaucoup plus simple, mais également beaucoup plus fiable. La plupart des
distributions utilisent de dernier en lieu et place de dhclient. Consultez la
documentation de votre distribution pour déterminer la solution qu'elle utilise.
Tout comme les adresses IP, ces numéros identifiant les protocoles ne sont pas très intéressants
pour les humains, qui leur préfère évidemment le nom du protocole. Certains programmes réseau
utilisent donc ces noms pour identifier les protocoles. Pour leur permettre de faire l'association
entre ces noms et les identificateurs numériques, le fichier /etc/protocols est utilisé.
Le format de ce fichier est très simple. Il contient une ligne pour chaque protocole, constituée du
nom du protocole, de la valeur de son identificateur, et des autres noms que ce protocole peut avoir
(c'est-à-dire ses alias). Parmi ces protocoles, les plus importants sont les suivants :
Comme on le voit, le protocole IP dispose lui-même d'un identificateur de protocole (qui vaut 0 en
l'occurrence). Cet identificateur est un identificateur de « pseudo protocole », parce qu'IP est en fait
le protocole de base. ICMP est identifié par le numéro 1, TCP par le numéro 6 et UDP par le
numéro 17. Il existe beaucoup d'autres protocoles, qui ne seront pas décrits ici. Bien entendu, le
fichier /etc/protocols fourni avec votre distribution doit déjà contenir la définition de la plupart
des protocoles.
De la même manière, la plupart des ports TCP et UDP sont affectés à des services bien définis, et
certains programmes réseau peuvent chercher à faire la correspondance entre les noms de ces
services et les numéros de ports. Cette correspondance est stockée dans le fichier de configuration
/etc/services.
Les informations concernant les services sont données à raison d'une ligne par service. Chaque
ligne suit la syntaxe suivante :
nom port/protocole alias
où nom est le nom du service décrit par cette ligne, port est le numéro du port utilisé par ce service,
protocole est le nom du protocole utilisé par ce service (ce peut être « tcp » ou « udp »), et alias
la liste des autres noms sous lesquels ce service est également connu.
Service Port/Protocole
ftp 21/tcp
telnet 23/tcp
smtp 25/tcp
pop3 110/tcp
irc 194/tcp
irc 194/udp
Comme vous pouvez le constater, ces services n'ont pas d'alias. Ces informations sont données
uniquement à titre d'exemple. Il va de soi que le fichier /etc/services fourni avec votre
distribution contient la définition d'un grand nombre de services, et vous n'aurez en général pas à y
toucher.
Cependant, ils peuvent être relativement nombreux, et si tous les services sont lancés
simultanément, ils peuvent finir par consommer une part non négligeable des ressources système.
C'est pour cette raison que les super-démons inetd (de l'anglais « InterNET Daemon ») et xinetd
(de l'anglais « eXtended INETD ») ont été créés. Ces démons sont à l'écoute des demandes de
connexion des clients pour les autres services réseau, et ne lancent ceux-ci que lorsqu'un client se
connecte sur leurs ports. Une fois lancés, les véritables démons reprennent la main et
communiquent directement avec leurs clients. Ainsi, inetd et xinetd écoutent les ports pour tout le
monde, et sont la plupart du temps les seuls à fonctionner. Les ressources système sont donc
économisées et les services réseau sont démarrés et arrêtés à la demande.
Le super-démon xinetd est appelé à remplacer inetd, qui lui est beaucoup plus ancien et nettement
moins souple. En pratique, un seul de ces super-démons doit être démarré sur une machine (il est
inutile de les lancer tous les deux, car les clients ne peuvent se connecter qu'à un seul d'entre-eux
de toutes manières). Les deux sections suivantes décrivent la configuration de ces super-démons.
Le super-démon inetd laisse de plus en plus la main au nouveau super-démon xinetd qui est
beaucoup plus puissant, mais reste toutefois très utilisé sur de nombreuses machines. Sa description
n'est donc pas inutile, car toutes les distributions n'utilisent pas encore xinetd.
le nom du service (tel qu'il est défini dans la première colonne du fichier /etc/services)
dont inetd doit surveiller les requêtes ;
l'un des mots clés wait ou nowait, qui permettent d'indiquer si inetd doit attendre la fin de
l'exécution du démon gérant le service ou s'il peut attendre de nouvelles requêtes de la part
des clients ;
le nom de l'utilisateur au nom duquel le démon gérant ce service doit fonctionner (en
général, c'est l'utilisateur root) ;
Par exemple, la ligne suivante permet de lancer le démon telnetd sur toute requête via le protocole
TCP pour le service telnet :
telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd
Il est supposé ici que le démon en charge de ce service peut être lancé avec le programme
/usr/sbin/in.telnetd.
Le démon inetd est capable de fournir lui-même un certain nombre de services de base, et il n'est
pas nécessaire de fournir un démon pour ces services. Dans ce cas, il faut utiliser le mot clé
internal à la place du nom du fichier exécutable du démon de ce service. Les paramètres doivent
également être remplacés par le mot clé internal.
En fait, il est fort peu probable que votre fichier de configuration /etc/inetd.conf définisse les
services comme indiqué dans cette section. En effet, un programme intermédiaire en charge
d'assurer des contrôles de sécurité est souvent intercalé entre inetd et les démons gérant les
services. Nous verrons ce que fait exactement ce programme dans une prochaine section.
Le super-démon xinetd utilise un autre fichier de configuration que celui du super-démon inetd.
Pour xinetd, la définition des services mis à disposition des clients se fait dans le fichier de
configuration /etc/xinetd.conf. Toutefois, contrairement au fichier inetd.conf, le fichier
xinetd.conf peut inclure d'autres fichiers de configuration et référencer des répertoires contenant
les fichiers de configuration spécifiques aux services. Ainsi, la configuration des services est
beaucoup plus modulaire et se fait plus facilement.
En pratique, il est d'usage de définir les options par défaut pour tous les services dans le fichier de
configuration /etc/xinetd.conf, et de décrire les différents services dans des fichiers
complémentaires stockés dans le répertoire /etc/xinetd.d/. Ce répertoire est alors inclus
directement dans le fichier xinetd.conf à l'aide de la directive includedir dédiée à cet usage.
Les fichiers de configuration de xinetd sont constitués de sections permettant de décrire les
services pris en charge, ou tout simplement les options par défaut applicables à tous les services. La
forme générale de ces sections est la suivante :
service
{
option opérateur valeur [valeur [...]]
option opérateur valeur [valeur [...]]
...
}
où service est le nom du service (ou defaults pour les options par défaut), option est un mot-clé
identifiant une des options de ce service, et opérateur est l'un des opérateurs '=' (pour la définition
de la valeur d'une option ou l'écrasement de sa valeur précédente), '+=' (pour compléter la liste de
valeurs d'une option) ou '-= (pour supprimer une valeur de la liste de valeurs d'une option). Les
valeurs des options peuvent être multiples, et leur nature dépend des options utilisées.
Les principales options utilisables dans ces sections sont les suivantes :
Option Signification
Le port sur lequel le service peut être trouvé. Cette option est facultative. Si elle
port
n'est pas indiquée, le numéro de port utilisé sera celui indiqué dans le fichier de
configuration /etc/services pour le service en cours de configuration.
Le compte utilisateur dans lequel le démon prenant en charge le service doit être
user lancé. Cette option ne peut bien entendu pas être utilisée pour les services gérés
en interne par xinetd.
La liste des adresses des machines qui n'ont pas le droit de se connecter. Les
adresses peuvent être spécifiées de la même manière que pour l'option
no_access
only_from. Si une adresse vérifie les critères des deux options only_from et
no_access, c'est l'option dont le critère est le plus précis qui est choisie.
La période pendant laquelle le service est accessible. Cette période peut être
access_times exprimée sous la forme d'une liste d'intervalles « heure:minute-
heure:minute ».
Permet de donner la liste des services pris en charge. Cette option fonctionne de
manière similaire à l'option disabled, à ceci près qu'elle fonctionne en logique
inverse. L'absence de cette option implique l'activation de tous les services, sauf
enabled
ceux qui sont listés dans l'option disabled. En revanche, dès que cette option est
définie, seuls les services listés sont démarrés. Tout comme l'option disabled,
cette option ne peut être utilisée que dans la section globale defaults.
Permet de désactiver les services de manière unitaire. Cette option est utilisée
dans les sections des services, afin d'indiquer de manière plus fine qu'avec les
options enabled et disabled s'ils doivent être activés ou non. Cette option peut
disable prendre deux valeurs : « yes » ou « no ». La première permet de désactiver le
service et la deuxième de le garder fonctionnel. Notez que les options enabled et
disabled ont priorité l'option disable. Ainsi, un service désactivé par l'une de
ces options ne peut pas être réactivé en attribuant la valeur no à l'option disable.
Toutes les options disponibles ne sont pas décrites dans le tableau précédent. Vous pourrez obtenir
de plus amples renseignements en consultant la page de manuel xinetd.conf.
La section « defaults » permet de définir les options par défaut applicables à tous les services.
Les options qui y sont définies peuvent toutefois être redéfinies ou précisées à l'aide des opérateurs
=, += et -= dans les sections des différents services. Les options utilisables dans la section
defaults et que l'on a vu ci-dessus sont les options bind, log_type, log_on_success,
log_on_failure, instances, per_source, only_from, no_access, disabled et enabled.
L'exemple suivant présente la définition du service telnet située dans le fichier de configuration
/etc/xinetd.d/telnet :
service telnet
{
socket_type = stream
# Le numéro de port et le protocole utilisés peuvent être omis
# car ils sont déjà définis dans /etc/services.
server = /usr/sbin/in.telnetd
user = root
wait = no
only_from = localhost
disable = no
}
Note : xinetd n'inclue pas les fichiers contenant un point (caractère '.') ni ceux
finissant par un tilde (caractère '~'). En particulier, on évitera de mettre une extension
aux fichiers de configuration des services, puisque dans ce cas ils contiendraient un
point et ne seraient pas lus.