Page suivante Page précédente Table des matières
11. Configurer les démons réseau
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.
11.1 /etc/rc.d/rc.inet2 (la seconde moitié de rc.net)
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
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 surudpou 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
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.
11.2 Un exemple de fichier rc.inet2
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é !11.3 Autres fichiers de configuration réseau nécessaires.
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.
Un fichier /etc/inetd.conf en exemple.
Votre fichier
/etc/rc.d/rc.inet2a 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
incomingoù 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.
Un exemple de fichier /etc/services.
Le fichier
/etc/servicesest 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:
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 - 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./etc/servicespour chaque entrée dans/etc/inetd.conf.
Un exemple de fichier /etc/protocols.
Le fichier
/etc/protocolsest 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 # # Fin11.4 Résolution des noms
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
/etc/hostscontient 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 pour127.0.0.1avec comme nomlocalhost. 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 (commeloomer.vpizza.com). Vous pouvez aussi ajouter des entrées pour vos passerelles et adresses réseau.Par exemple, si
loomer.vpizza.coma comme adresse IP128.253.154.32, le fichier/etc/hostscontiendra :
# /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 hostsBien 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 foislocalhostet votre nom de machine.Notez que pour la seconde ligne, il y a deux noms pour
128.253.154.32:loomer.vpizza.comet justeloomer. 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.
named - en ai-je besoin ?
`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.builda été créé pour traduire le fichier/etc/hostsdans 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.buildpour 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 :
- Vous installez un réseau de machines et vous avez besoin d'un serveur de noms pour une des machines et vous n'avez pas d'autre serveur de noms sur le réseau.
- Votre administrateur réseau veut que votre système Linux serve de serveur de noms pour quelque raison que ce soit.
- Vous avez une liaison SLIP lente et vous voulez mettre au point un système de cache de noms pour que votre machine n'ait pas à communiquer sur la ligne série à chaque recherche de nom. Si vous aller être relié à un petit nombre de machines sur le réseau, et que vous connaissez leurs adresses, vous pouvez les mettre directement dans le fichier
hostssans 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.- Vous voulez utiliser un serveur de noms pour le plaisir.
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 lancerhostcvt.build. Si vous voulez des alias de noms de machines, par exemple, si vous voulez vous référez àloomer.vpizza.comavecloomer, 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.1comme adresse du serveur de noms, mais comme ce sera la seule machine à laquelle vous pourrez parler vous ne l'appelerez jamais.
/etc/networks
Le fichier
/etc/networksliste 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/networkssauf si vous donnez l'option-netsur 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
/etc/host.conf
Le système possède quelques fonctions faisant partie de la librairie appelée resolver. Le fichier
/etc/host.confindique au système comment rechercher les correspondances des noms de machines. Il doit comprendre au moins les deux lignes suivantes :
order hosts,bind multi onCes deux lignes indiquent à la librairie resolver de chercher d'abord dans le fichier
/etc/hostspuis 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.ZCette archive contient la page de man resolv+.8 pour la librairie resolver.
/etc/resolv.conf
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 estvpizza.com, sans le nom de machineloomer.Par exemple, si votre machine est
goober.norelco.com, et votre serveur de noms est à l'adresse128.253.154.5, alors votre fichier/etc/resolv.confressemblera à :
domain norelco.com nameserver 128.253.154.5Vous 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.
/etc/HOSTNAME
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-toolsantérieure à la version1.1.38vous pouvez inclure une ligne dans votre fichier/etc/rcqui ressemble à :
/bin/hostname -Scela signifie que la commande hostname va lire le fichier
/etc/HOSTNAMEqui 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/HOSTNAMEsuivant :
goober.norelco.comPar contre, si vous utilisez la commande hostname qui vient avec
net-tools-1.1.38ou les versions suivantes, vous devrez ajouter la ligne suivante à la fin de votre fichier/etc/rc.d/rc.inet1:
/bin/hostname goober.norelco.comou si vous avez mis à jour à partir d'une version précédente :
/bin/hostname -F /etc/HOSTNAMEet tout devrait fonctionner comme avant.
La commande
/bin/domainnameest 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.
11.5 Autres fichiers
Il y a bien sûr d'autres fichiers dans le répertoire
/etcavec 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.
Page suivante Page précédente Table des matières