Comme mentionné précédement, il y a d'autres fichiers dont vous aurez besoin pour terminer votre installation réseau. Ces fichiers concernent des niveaux de configuration plus élévés des logiciels réseau. Chaque fichier important est décrit dans les sous-sections suivantes, mais en même temps vous trouverez qu'il y en a d'autres à configurer au fur et à mesure que vous deviendrez plus familiers avec les outils.
Si vous avez suivi ce document pas à pas jusqu'ici vous devez avoir construit un fichier rc configurant vos interfaces réseau et mis en place le routage nécessaire à votre propre configuration réseau. Nous allons maintenant attaquer les couches plus hautes des logiciels réseau.
Vous devriez à ce stade lire le livre d'Olaf Kirch Network Administrators Guide : il devrait être considéré comme le document de référence de cette étape du processus de configuration. Il vous aidera à choisir ce qu'il faut inclure dans ce fichier et surtout ce qu'il ne faut pas inclure. Faites attention que plus on a de services réseau disponibles, plus on a de chances d'avoir des carences de sécurité n'utilisez que ce dont vous avez besoin.
Vous devez en connaître un peu plus sur certains démons importants (processus système tournant en tâche de fond). Les pages de man vous en diront plus, mais ce sont :
inetd est un programme qui tourne en tâche de fond et qui gère les
requêtes de connexion Internet. Son but est d'éviter de laisser des serveurs
tourner quand personne n'y est connecté. Quand il voit une requête
pour un service particulier, comme par exemple telnet, ou
ftp, il va lire le fichier /etc/services
, trouver quel
serveur doit traiter la requête, le lancer et lui passer la connexion. Imaginez
que c'est le serveur maître de votre serveur Internet. Il possède aussi
quelques services qu'il traite lui même. Ce sont les services echo,
discard et generate utilisés à des fins de tests réseau. inetd ne gère pas tous les serveurs et services que vous devriez mettre en route, mais il le fait pour la plupart. Normalement des services tels que ceux basés sur udp
ou des services qui gèrent eux-mêmes leur propre multiplexage de connexion, comme les serveurs World Wide Web ou muds doivent tourner indépendamment de inetd. En général la documentation les accompagnant vous ira s'il faut utiliser inetd ou non.
syslogd est un démon qui gère les messages de trace des autres démons.
Il aiguille ces messages suivant les règles établies par le fichier
/etc/syslogd.conf
. Par exemple pour certains types de messages, vous
voudrez les envoyer sur la console et aussi dans un fichier d'archivage, alors
que pour d'autres types vous voudrez les archiver uniquement dans un fichier.
syslogd vous permet de décider quels sont les messages que vous voulez
tracer et où ils doivent aller.
Le fichier ci-dessous est un exemple de fichier rc.inet2 que Fred a construit. Il lance un grand nombre de serveurs, vous devrez donc réduire ce nombre pour satisfaire vos besoins. Pour cela effacez ou commentez les paragraphes (entre if et fi) dont vous n'avez pas besoin. Chaque paragraphe teste si le programme existe, envoie un message que vous verrez au démarrage de votre machine puis exécute le programme en tâche de fond avec les arguments voulus. Pour plus d'information sur chacun de ces démons, consultez le Network Administrators Guide ou les pages de man correspondantes.
#! /bin/sh
#
# rc.inet2 Ce script lance le systeme INET complet.
# Ce script monte aussi tous les disques NFS
# importants (comme /usr), il faut donc faire
# attention à ce que les binaires soient présents
# maintenant...
#
# Version: @(#)/etc/rc.d/rc.inet2 2.18 05/27/93
#
# Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
#
# Constantes.
NET="/usr/sbin"
IN_SERV="lpd"
LPSPOOL="/var/spool/lpd"
# A ce point, nous sommes prêts à parler au reste du monde...
echo -e "\nMounting remote file systems ..."
/bin/mount -t nfs -v # This may be our /usr runtime!!!
echo -e "\nStarting Network daemons ..."
# Lance le démon SYSLOG. Ceci doit être le premier serveur.
# C'est une OBLIGATION, donc laissez-le.
echo -n "INET: "
if [ -f ${NET}/syslogd ]
then
echo -n "syslogd "
${NET}/syslogd
fi
# Lance le SUN RPC Portmapper.
if [ -f ${NET}/rpc.portmap ]
then
echo -n "portmap "
${NET}/rpc.portmap
fi
# Lance le super serveur INET
# C'est une OBLIGATION, donc laissez-le.
if [ -f ${NET}/inetd ]
then
echo -n "inetd "
${NET}/inetd
else
echo "no INETD found. INET cancelled!"
exit 1
fi
# Lance le serveur de nom NAMED/BIND.
# NOTE: probablement vous n'avez pas besoin de le lancer.
#if [ ! -f ${NET}/named ]
#then
# echo -n "named "
# ${NET}/named
#fi
# Lance le serveur ROUTEd.
# NOTE: routed est maintenant obsolète. vous devez utiliser gated
#if [ -f ${NET}/routed ]
#then
# echo -n "routed "
# ${NET}/routed -q #-g -s
#fi
# Lance le serveur GATEd.
if [ -f ${NET}/gated ]
then
echo -n "gated "
${NET}/gated
fi
# Lance le serveur RWHO.
if [ -f ${NET}/rwhod ]
then
echo -n "rwhod "
${NET}/rwhod -t -s
fi
# Lance le serveur U-MAIL SMTP.
if [ -f XXX/usr/lib/umail/umail ]
then
echo -n "umail "
/usr/lib/umail/umail -d7 -bd </dev/null >/dev/null 2>&1 &
fi
# Lance les divers serveurs INET.
for server in ${IN_SERV}
do
if [ -f ${NET}/${server} ]
then
echo -n "${server} "
${NET}/${server}
fi
done
# Lance les divers serveurs SUN RPC.
if [ -f ${NET}/rpc.portmap ]
then
if [ -f ${NET}/rpc.ugidd ]
then
echo -n "ugidd "
${NET}/rpc.ugidd -d
fi
if [ -f ${NET}/rpc.mountd ]
then
echo -n "mountd "
${NET}/rpc.mountd
fi
if [ -f ${NET}/rpc.nfsd ]
then
echo -n "nfsd "
${NET}/rpc.nfsd
fi
# Réveille le(s) démon(s) PC-NFS.
if [ -f ${NET}/rpc.pcnfsd ]
then
echo -n "pcnfsd "
${NET}/rpc.pcnfsd ${LPSPOOL}
fi
if [ -f ${NET}/rpc.bwnfsd ]
then
echo -n "bwnfsd "
${NET}/rpc.bwnfsd ${LPSPOOL}
fi
fi
echo network daemons started.
# Terminé !
Il y a d'autres fichiers de configuration que vous devez configurer si vous voulez que des personnes se connectent et utilisent votre machine en tant que hôtes. Si vous avez installer linux à partir d'une distribution, vous avez probablement copies de ces fichiers, dès lors vérifiez les pour voir s'ils sont corrects et si ce n'est pas le cas vous utiliserez les exemples suivants.
Votre fichier /etc/rc.d/rc.inet2
a déjà lancé inetd,
syslogd et les divers serveurs rpc pour vous. Vous devez maintenant configurer les démons réseau qui seront gérés par
inetd. inetd utilise un fichier de configuration appelé
/etc/inetd.conf
.
Ci-dessous un exemple simple de configuration:
#
# Les services internes.
#
# Auteurs: Original taken from BSD UNIX 4.3/TAHOE.
# Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
#
echo stream tcp nowait root internal
echo dgram udp wait root internal
discard stream tcp nowait root internal
discard dgram udp wait root internal
daytime stream tcp nowait root internal
daytime dgram udp wait root internal
chargen stream tcp nowait root internal
chargen dgram udp wait root internal
#
# Services standards.
#
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd ftpd
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
#
# Shell, login, exec et talk sont des protocolese BSD.
#
shell stream tcp nowait root /usr/sbin/tcpd in.rshd
login stream tcp nowait root /usr/sbin/tcpd in.rlogind
exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
talk dgram udp wait root /usr/sbin/tcpd in.talkd
ntalk dgram udp wait root /usr/sbin/tcpd in.talkd
#
# Services d'informations et d'états.
#
finger stream tcp nowait root /usr/sbin/tcpd in.fingerd
systat stream tcp nowait guest /usr/sbin/tcpd /usr/bin/ps -auwwx
netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat
#
# Fin de inetd.conf.
La page manuel de inetd décrit la signification de chaque ligne, mais plus simplement chaque entrée décrit quel programme est exécuté quand une connexion est reçue sur la socket listé en première entrée.
Ces entrées qui possèdent incoming
où le nom du programme et les arguments doivent être sont des services qui sont fournis de manière interne par le programme
inetd .
La conversion entre le nom du service dans la première colonne et le numéro effectif de la socket auquel il se réfère est effectuée par le fichier
/etc/services
.
Le fichier /etc/services
est simplement un tableau de noms de services Internet avec le numéro et le protocole utilisé.
Ce tableau est utilisé par certains programmes comme inetd, telnet and tcpdump.
Il simplifie un peu la vie en permettant de se référer à un service par son nom plutôt que par un chiffre.
Voici un exemple de fichier /etc/services
:
#
# /etc/services - base de données incluant nom du service,
# numéro de la socket et protocole.
#
# Auteur:
# Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
#
tcpmux 1/tcp
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp
ftp 21/tcp
telnet 23/tcp
smtp 25/tcp mail
time 37/tcp timserver
time 37/udp timserver
name 42/udp nameserver
whois 43/tcp nicname # usually to sri-nic
domain 53/tcp
domain 53/udp
finger 79/tcp
link 87/tcp ttylink
hostnames 101/tcp hostname # usually to sri-nic
sunrpc 111/tcp
sunrpc 111/tcp portmapper # RPC 4.0 portmapper TCP
sunrpc 111/udp
sunrpc 111/udp portmapper # RPC 4.0 portmapper UDP
auth 113/tcp authentication
nntp 119/tcp usenet # Network News Transfer
ntp 123/tcp # Network Time Protocol
ntp 123/udp # Network Time Protocol
snmp 161/udp
snmp-trap 162/udp
exec 512/tcp # BSD rexecd(8)
biff 512/udp comsat
login 513/tcp # BSD rlogind(8)
who 513/udp whod # BSD rwhod(8)
shell 514/tcp cmd # BSD rshd(8)
syslog 514/udp # BSD syslogd(8)
printer 515/tcp spooler # BSD lpd(8)
talk 517/udp # BSD talkd(8)
ntalk 518/udp # SunOS talkd(8)
route 520/udp routed # 521/udp too
timed 525/udp timeserver
mount 635/udp # NFS Mount Service
pcnfs 640/udp # PC-NFS DOS Authentication
bwnfs 650/udp # BW-NFS DOS Authentication
listen 1025/tcp listener # RFS remote_file_sharing
ingreslock 1524/tcp # ingres lock server
nfs 2049/udp # NFS File Service
irc 6667/tcp # Internet Relay Chat
# End of services.
L'entrée telnet nous dit que le service telnet utilise la socket numéro 23 et le protocole tcp.
L'entrée domain nous dit que le service de nom de domaine (DNS) utilise la socket 52 et à la fois les protocoles tcp et udp.
Vous devez avoir une entrée adéquate dans
/etc/services
pour chaque entrée dans /etc/inetd.conf
.
Le fichier /etc/protocols
est un tableau de noms de protocoles avec son numéro correspondant. Puisque le nombre de protocoles en usage est faible ce fichier est très simple.
#
# /etc/protocols - base de données de protocoles.
#
# Auteur:
# Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
#
ip 0 IP # internet protocol
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # internet group multicast protocol
ggp 3 GGP # gateway-gateway protocol
tcp 6 TCP # transmission control protocol
pup 12 PUP # PARC universal packet protocol
udp 17 UDP # user datagram protocol
idp 22 IDP
raw 255 RAW
#
# Fin
La résolution des noms est le processus qui consiste à convertir une adresse en
notation pointée (comme tsx-11.mit.edu
) en une adresse IP que les
couches réseaux peuvent comprendre. Il y a deux façons de faire, une simple et
une plus complexe.
/etc/hosts
contient une liste des adresses IP et les noms des machines
correspondants. De cette manière vous pouvez faire référence à une machine soit
par son nom, soit par son adresse IP. En utilisant un serveur de noms (voir
section `named'), vous automatisez le même mécanisme de
traduction nom->adresse
IP. (Utiliser named vous permet d'utiliser votre propre serveur de
noms sur votre machine Linux). Ce fichier contient au moins une entrée pour
127.0.0.1
avec comme nom localhost
. Si vous n'utilisez pas
uniquement l'interface loopback, vous aurez besoin d'ajouter une entrée pour
votre adresse IP, avec votre nom complet (comme loomer.vpizza.com
).
Vous pouvez aussi ajouter des entrées pour vos passerelles et adresses réseau.
Par exemple, si loomer.vpizza.com
a comme adresse IP
128.253.154.32
, le fichier /etc/hosts
contiendra :
# /etc/hosts
# Liste des noms de machines et de leurs adresses IP.
127.0.0.1 localhost
128.253.154.32 loomer.vpizza.com loomer
# Fin de hosts
Bien sûr, vous aurez besoin d'éditer ce fichier pour qu'il corresponde à vos
besoins. Si vous utilisez seulement le loopback, la seule ligne nécessaire doit
être pour 127.0.0.1
, avec à la fois localhost
et votre nom de
machine.
Notez que pour la seconde ligne, il y a deux noms pour 128.253.154.32
 :
loomer.vpizza.com
et juste loomer
. Le premier nom est le nom
complet de la machine, appelé "Nom de Domaine
Complètement Qualifié", et le
second est simplement un alias du premier nom.
`Je T'implore...'
named est le démon serveur de nom pour la plupart des systèmes
d'exploitation de style UNIX. Il permet à votre machine de répondre aux
requêtes de mise en correspondance de nom, non seulement pour elle-même, mais
aussi pour les autres machines sur le réseau. Autrement dit, si une autre machine
veut trouver l'adresse de `goober.norelco.com'
, et que vous avez cette
machine dans votre base de données named, alors vous pouvez répondre à
cette requête et dire aux autres machines quelle est l'adresse de
`goobers'
.
Avec certaines vieilles implémentations de TCP/IP sous Linux, vous aurez besoin
d'utiliser named pour créer des alias de noms de machine (même pour la
vôtre). Le problème est que named est relativement difficile à
paramétrer proprement et à maintenir. Pour résoudre ce problème, un programme
appelé hostcvt.build
a été créé pour traduire le fichier
/etc/hosts
dans l'ensemble des fichiers qui constituent les fichiers
des bases de données de named. De toute façon même avec ce problème
résolu, named utilise du CPU et crée du trafic réseau.
La morale est la suivante : vous n'avez pas besoin d'utiliser named sur
votre système Linux. Les instructions de la distribution SLS vous indiqueront
sûrement de lancer hostcvt.build
pour initialiser named.
C'est simplement inutile sauf si vous voulez utiliser votre machine Linux comme
serveur de noms pour d'autres machines, et dans ce cas vous devrez en apprendre
plus sur named de toute façon. Quand il cherche une correspondance
pour un nom, votre machine Linux cherche d'abord dans le fichier
/etc/hosts
, puis demande au serveur de nom sur le réseau.
Les seules raisons que vous puissiez avoir d'utiliser named sont :
hosts
sans avoir besoin d'un
serveur de noms du tout. En général, la mise en correspondance de noms n'est
pas si lente et fonctionne très bien sur une liaison SLIP de toute façon.En général, vous n'avez PAS besoin d'utiliser named; cela signifie que
vous devez commenter les lignes correspondantes dans le fichier
rc.inet2
, et vous ne devez pas lancer hostcvt.build
. Si vous
voulez des alias de noms de machines, par exemple, si vous voulez vous référez
à loomer.vpizza.com
avec loomer
, vous pouvez simplement
ajouter un alias au fichier /etc/hosts
à la place. Il n'y a pas de
raison d'utiliser named sauf si vous avez un besoin
spécifique de le
faire. Si vous avez accès à un serveur de noms, (votre administrateur réseau
vous procurera son adresse), la plupart des réseau en ont un, ne vous ennuyez
pas avec named.
Si vous utilisez seulement le loopback, vous pouvez lancer named et
donner 127.0.0.1
comme adresse du serveur de noms, mais comme ce sera
la seule machine à laquelle vous pourrez parler vous ne l'appelerez jamais.
Le fichier /etc/networks
liste les adresses de votre propre réseau et des autres. Il est utilisé par la commande route, et vous permet
d'appeler un réseau par son nom si vous le voulez.
Pour chaque route vers un réseau que vous désirez ajouter par la commande
route, vous devez avoir l'entrée correspondante dans le fichier
/etc/networks
sauf si vous donnez l'option -net
sur la ligne
de commande de route.
Son format est similaire au fichier /etc/hosts
. Ci-dessous un exemple:
#
# /etc/networks: liste tous les réseaux pour lesquels vous voulez ajouter
# une route
#
default 0.0.0.0 # route par défaut - recommandé
loopnet 127.0.0.0 # réseau loopback - recommandé
mynet 128.253.154.0 # Exemple de réseau CHANGER avec le VOTRE
#
# Fin de networks
Le système possède quelques fonctions faisant partie de la librairie appelée
resolver. Le fichier /etc/host.conf
indique au système
comment rechercher les correspondances des noms de machines. Il doit comprendre
au moins les deux lignes suivantes :
order hosts,bind
multi on
Ces deux lignes indiquent à la librairie resolver de chercher d'abord
dans le fichier /etc/hosts
puis de demander au serveur de noms
(s'il est présent). La ligne multi indique que vous pouvez avoir
plusieurs adresses IP par nom de machine donnée dans /etc/hosts
.
Ce fichier provient de l'implémentation de la librairie resolv+ pour Linux. Vous trouverez plus de documentation dans la page de man de resolv+(8) si vous l'avez. Sinon vous pouvez l'obtenir à :
sunsite.doc.ic.ac.uk
/computing/comms/tcpip/nameserver/resolv+/resolv+2.1.1.tar.Z
Cette archive contient la page de man resolv+.8 pour la librairie resolver.
Ce fichier configure le système de résolution de noms. Il contient deux types
d'entrées : l'adresse de votre serveur de noms (s'il y en a un) et le nom de
votre domaine, si vous en possédez un. Si vous faites fonctionner votre propre
serveur de noms (named tournant sur votre machine Linux), l'adresse de
votre serveur de noms est 127.0.0.1
, l'adresse de loopback.
Votre nom de domaine est votre nom de domaine complètement qualifié sans votre
nom de machine. Par exemple si votre nom complet est
loomer.vpizza.com
, alors votre nom de domaine est vpizza.com
,
sans le nom de machine loomer
.
Par exemple, si votre machine est goober.norelco.com
, et votre serveur
de noms est à l'adresse 128.253.154.5
, alors votre fichier
/etc/resolv.conf
ressemblera à :
domain norelco.com
nameserver 128.253.154.5
Vous pouvez indiquer plus d'un serveur de noms. Chacun d'eux doit avoir une
entrée nameserver dans le fichier resolv.conf
.
Rappelez-vous que vous n'avez pas besoin de serveur de noms si vous n'utilisez que l'interface loopback.
Il ne vous reste plus qu'à configurer le nom de votre machine. Pour permettre à des applications comme sendmail d'accepter le courrier pour votre machine et à votre machine de s'identifier elle-même auprès des autres machines qui lui sont connectées.
Il y a deux programmes qui sont utilisés pour configurer ce type d'information
et qui sont généralement mal utilisés. Ce sont hostname et
domainname.
Si vous utilisez une version de net-tools
antérieure à la version
1.1.38
vous pouvez inclure une ligne dans votre fichier
/etc/rc
qui ressemble à :
/bin/hostname -S
cela signifie que la commande hostname va lire le fichier
/etc/HOSTNAME
qui devra contenir le nom de la machine complètement
qualifié. hostname séparera ensuite le nom de la machine du nom de
domaine et enregistrera les deux pour vous.
Par exemple la machine précédente devrait avoir le fichier
/etc/HOSTNAME
suivant :
goober.norelco.com
Par contre, si vous utilisez la commande hostname qui vient avec
net-tools-1.1.38
ou les versions suivantes, vous devrez ajouter la
ligne suivante à la fin de votre fichier /etc/rc.d/rc.inet1
 :
/bin/hostname goober.norelco.com
ou si vous avez mis à jour à partir d'une version précédente :
/bin/hostname -F /etc/HOSTNAME
et tout devrait fonctionner comme avant.
La commande /bin/domainname
est utilisée pour définir le nom de
domaine N.I.S. et non pas le nom de domaine D.N.S. Vous n'avez pas à le mettre en place sauf si vous utilisez NIS, que l'on décrira plus loin.
Il y a bien sûr d'autres fichiers dans le répertoire /etc
avec
lesquels vous barboterez encore. Vous trouverez plus d'informations dans le
livre d'Olaf Network Administration Guide. Il débute où cette
HOWTO finit, plus de détails seront proposés dans les versions
futures de ce document.
Une fois tous ces fichiers en place, chaque chose à sa place, vous devriez pouvoir relancer votre machine avec votre nouveau noyau et naviguer sur le réseau où bon vous semblera. Quoi qu'il arrive, je vous recommande vivement de conserver une copie de votre ancien noyau et même d'une `disquette de secours' au cas où quelque chose ne tournerait pas rond pour pouvoir revenir en arrière et corriger le problème. Vous pouvez utiliser la disquette d'initialisation de H.J. Lu ou le disk1 de la distribution SLS.