Académique Documents
Professionnel Documents
Culture Documents
Administration Réseau Sous Linux
Administration Réseau Sous Linux
A Britta
UNIX est une marque deposee de X/Open. Linux n'est pas une marque deposee, et n'a aucun lien avec UNIXTM ou X/Open. Copyright c 1995 Olaf Kirch Kattreinstr. 38, 64295 Darmstadt, Germany
okir@monad.swb.de
xvii 1
1 2 3 4 5 6 7 8 10 10 11 12 12 13 14 14 15 15
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
vi
2 Le reseau TCP/IP
19
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : :
19 20 21 22 22 23 24 25 27 28 29 29 30 32 33 34 36 39 42 43 44 46 47 47 48 49 51 52
3.1 Peripheriques, pilotes, etc. 3.2 Con guration du noyau 3.2.1 Options du noyau dans Linux 1.0 et au-dela 3.2.2 Options du noyau a partir de Linux 1.1.14 3.3 Tour d'horizon des pilotes reseau de Linux 3.4 Installation Ethernet 3.4.1 C^blage Ethernet a 3.4.2 Cartes supportees 3.4.3 Autodetection des cartes Ethernet 3.5 Le pilote PLIP 3.6 Les pilotes SLIP et PPP
39
: : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : :
: : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
vii
53
: : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
53 54 55 56 60 60 61 61 62 63 65 66 67 69 71 72 72 74 74 74 77 78 79 79 80 82 84
5.9 5.10
5.11 5.12
Montage du systeme de chiers proc Installation des binaires Un nouvel exemple Assignation du nom de machine Assignation des adresses IP Creation de sous-reseaux Redaction des chiers hosts et networks Con guration des interfaces reseau 5.8.1 L'interface loopback 5.8.2 Interfaces Ethernet 5.8.3 Routage par une passerelle 5.8.4 Con guration d'une passerelle 5.8.5 L'interface PLIP 5.8.6 Les interfaces SLIP et PPP 5.8.7 L'interface dummy Tout sur ifcon g La commande netstat 5.10.1 A chage de la table de routage 5.10.2 A chage des statistiques sur une interface 5.10.3 A chage des connexions Test des tables ARP L'avenir
59
: : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
83
viii
: : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : :
84 85 86 88 88 89 91 95 96 100
Generalites Mode d'emploi de SLIP Le probleme des reseaux IP prives Utilisation de dip 7.4.1 Exemple de script 7.4.2 Manuel de reference de dip 7.5 Utilisation en mode serveur
101
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : :
Sous les P, le protocole PPP sous Linux Utilisation de pppd Les chiers d'options Appel telephonique par le programme chat Deboguer votre con guration PPP Options de con guration IP 8.7.1 Choix des adresses IP 8.7.2 Routage via une liaison PPP 8.8 Protocole de contr^le de liaison o 8.9 La securite sous PPP
113
: : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : :
113 114 115 116 117 119 119 120 121 122 124
Le super serveur inetd Contr^le d'acces par tcpd o Les chiers services et protocols RPC : appel de procedure distante Con guration des commandes en (( r ))
131
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
10.1 Initiation a NIS 10.2 NIS contre NIS+ 10.3 Le c^te client de NIS o 10.4 Installer un serveur NIS 10.5 Securite du serveur NIS 10.6 Con guration d'un client NIS avec NYS 10.7 Choisir les bonnes cartes 10.8 Utilisation des cartes passwd et group 10.9 NIS et les mots de passe shadow 10.10Utilisation du code NIS traditionnel Veri cations avant usage Monter un volume NFS Les demons NFS Le chier exports Montage automatique : l'automonteur
143
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
144 147 147 148 149 150 151 153 155 156
159
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
169
: : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : :
: : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
171 172 173 173 174 177 178 179 180 180 184 186 187 188 188 188 189 190 191 191 191 192 193 194 195 195 196 197 198 199
xi
203
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : :
204 207 208 209 209 210 212 213 215 216 216 220 221 222 223 224 226 226 227 228 228 230 231 232 232 233 234 234 235
219
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
235
15 Sendmail+IDA
15.1 Introduction a Sendmail+IDA 15.2 Apercu des chiers de con guration 15.3 Le chier sendmail.cf 15.3.1 Exemple de chier sendmail.m4 15.3.2 Parametres couramment utilises dans sendmail.m4 15.4 Presentation des tables de Sendmail+IDA 15.4.1 La table mailertable 15.4.2 La table uucpxtable 15.4.3 La table pathtable 15.4.4 La table domaintable 15.4.5 Le chier aliases 15.4.6 Tables rarement utilisees 15.5 Installation de sendmail 15.5.1 Extraction de la distribution binaire 15.5.2 Generation du chier sendmail.cf 15.5.3 Tests du chier sendmail.cf 15.5.4 Tests d'integration de sendmail.cf et des tables 15.6 Trucs et astuces du parfait petit administrateur 15.6.1 Renvoyer le courrier a une machine relais 15.6.2 Forcer du courrier dans des sites mal con gures 15.6.3 Forcer le courrier a partir par UUCP 15.6.4 Emp^cher le courrier de partir par UUCP e 15.6.5 Vider sur demande la queue de Sendmail 15.6.6 Obtenir des statistiques sur le courrier traite 15.7 Coherence des distributions binaires 15.8 Pour en savoir plus...
237
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : :
237 238 238 239 239 245 245 246 247 248 248 249 250 250 251 252 254 256 256 256 257 258 258 259 259 260
261
: : : : : : : : : : : : : : : : : : : : : : : : : : : :
261
17 C News
17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8
L'injection des articles Installation Le chier sys Le chier active Le traitement par lots (batching) Expiration des News Fichiers divers Les messages de contr^le o 17.8.1 Le message cancel 17.8.2 Les messages newgroup et rmgroup 17.8.3 Le message checkgroups 17.8.4 Les messages sendsys, version et senduuname 17.9 C News dans un environnement NFS 17.10Outils et travaux de maintenance 18.1 18.2 18.3 18.4 Installation du serveur NNTP Restreindre les acces NNTP Authenti cation NNTP Integration de nntpd dans C News
267
: : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : :
267 268 271 275 276 279 281 283 283 284 284 285 286 287 291 291 293 293
289
: : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
19.1 Con guration de tin 19.2 Con guration de trn 19.3 Con guration de nn
295
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
A C^ble port parallele pour PLIP a B Exemples de chiers de con guration pour smail
301 303
xiv
311
: : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
xv
: : : : : : : : : : : : : : : : : : : :
: : :
: : : : : : : : : : : : : : : : : : : : : :
3.1 Les relations entre les interfaces, les pilotes et le materiel. 5.1 Les deux sous-reseaux des brasseurs et viticulteurs. 6.1 6.2 6.3 6.4 6.5 6.6 Exemple de chier host.conf. Le chier named.boot de la machine kro. Le chier named.ca. Le chier named.hosts. Le chier named.local. Le chier named.rev.
: : : : : : :
: : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : :
7.1 Un exemple de script pour le programme dip. 9.1 Un exemple de chier /etc/inetd.conf. 9.2 Exemple de chier /etc/services (extrait). 9.3 Exemple de chier /etc/protocols.
: : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : :
12.1 Interaction des chiers de con guration de Taylor UUCP. 15.1 Exemple du chier de con guration gueuze.m4. 15.2 Exemple de chier aliases.
: : : : : : :
: : : : : : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : : : :
16.1 Circuit des News Usenet a l'universite Groucho Marx. 17.1 Flux des News par relaynews.
: : : : : : : : :
: : : : : : : : : : : : : : : : : : : : : : :
Preface
xvii
Preface
Vous ^tes sur le point de vous embarquer dans une fantastique aventure : vous allez e entrer dans le monde de Linux. Pour resumer, Linux vous rappellera l'esprit qui regnait dans les premiers jours de la micro-informatique, ou programmeurs geniaux et bidouilleurs passionnes passaient des nuits blanches avec un oscilloscope et un fer a souder pour construire leur propre micro-ordinateur. Les temps ont change, les outils aussi les debogueurs ont remplace la soudure, mais l'etat d'esprit est toujours present. Linux est ne de cette passion, et gr^ce a lui vous disposez d'un systeme UNIX a pour votre micro-ordinateur, n'ayant rien a envier aux autres implementations. Malgre ses origines, Linux a evolue et n'est plus reserve aux programmeurs avertis. Chaque jour, des milliers de personnes, de toute culture informatique, adoptent ce systeme d'exploitation pour toutes sortes d'applications techniques, scienti ques, educatives, et... bien s^r, pour le plaisir aussi. u Mais comment Linux a-t-il pu devenir aussi perfectionne et performant, aussi celebre et apprecie, sans ^tre developpe par une equipe de professionnels surpayes? Le FBI e devrait-il ouvrir une enqu^te sur ce mystere ? Que se cache-t-il la-dessous ? e La cooperation. Tout le secret est la. Linux est libre, dans tous les sens du terme. Cette idee de liberte, partagee par tous les programmeurs ayant r^ve de posseder un e jour leur propre systeme UNIX, a permis de realiser des miracles, chacun apportant sa pierre a l'edi ce. Demandez a n'importe quel developpeur pourquoi il passe des nuits entieres a travailler sur les sources de Linux. Tous auront la m^me reponse : la passion e de programmer, et d'o rir le meilleur a la communaute, librement, sans contraintes. Vous ne realisez peut-^tre pas qu'en utilisant Linux, vous contribuez a l'essor du e logiciel libre, dans le monde entier. Le libre acces aux programmes, avec la possibilite de les modi er et de les distribuer sans restrictions, est considere par beaucoup comme un droit fondamental de tout utilisateur d'ordinateur au m^me titre que les droits de e l'homme, la liberte, la recherche de plus gros disques durs, et le digestif apres le cafe. Le logiciel de nit comment sont utilisees les machines, le systeme d'exploitation en etant le tout premier exemple. En choisissant un systeme, vous determinez la maniere dont votre ordinateur fonctionnera, depuis l'interface utilisateur jusqu'aux pilotes de peripheriques.
xviii
Preface
Linux a l'enorme avantage d'^tre developpe par, et pour ses utilisateurs. Le marche du e logiciel n'a aucune in uence sur ses orientations : ce sont les besoins des utilisateurs qui les de nissent. Cette situation est bien plus saine que de tenter de conquerir un ( marche ) , ou de realiser des pro ts. Cela ne convient sans doute pas a tout le monde, ( ) mais tous ceux qui l'utilisent peuvent avoir une in uence sur son avenir. Pour tout dire, Linux est votre systeme d'exploitation personnel, domestique, bien a vous. Ce sera votre compagnon de tous les jours. Que trouver de mieux ?
Power to the people. Linux is here. Matt Welsh, coordinateur du groupe de documentation Linux, 9 novembre 1994.
Chapitre 1
souvent des ordinateurs, mais ce n'est pas obligatoire ce peut ^tre tout aussi bien e des terminaux X ou des imprimantes intelligentes. Les petits ensembles d'h^tes sont o appeles sites. Toute communication est impossible sans le truchement de quelque sorte de langage, ou de code. Dans le monde des reseaux d'ordinateurs, ces codes sont appeles protocoles. Toutefois, n'associez pas cette notion aux divers langages ecrits, mais plut^t aux codes o bien precis de nissant le comportement a adopter lors de rencontres o cielles entre chefs d'Etats, par exemple. Les protocoles utilises dans les reseaux informatiques ne sont pas autre chose que des regles tres strictes lors de l'echange de messages entre plusieurs h^tes. o
Cela fera que le programme uux, une commande de l'ensemble UUCP, plani era un job pour le site renux. Ce job consistera a prendre le chier netguide.dvi et le passer au programme lpr. L'option -r indique a uux de ne pas appeler immediatement le systeme distant, mais de stocker cette requ^te jusqu'a ce qu'une connexion soit etablie. Cela e s'appelle spouler 3 . UUCP permet aussi de transmettre commandes et chiers a travers plusieurs h^tes, o a condition que ces derniers l'autorisent. Supposons que renux soit en liaison UUCP avec groucho, qui archive de nombreuses applications UNIX. Pour telecharger le chier tripwire-1.0.tar.gz vers votre site, vous taperiez la commande :
$ uucp -mr renux!groucho!~/security/tripwire-1.0.tar.gz trip.tgz
Le job cree ici demandera a renux de recuperer le chier sur la machine groucho et de l'envoyer a votre site, ou votre UUCP le recevra sous le nom trip.tgz puis vous avertira par courrier de son arrivee. Cette operation s'e ectuera en trois etapes. Tout d'abord, votre site envoie le job a renux. La prochaine fois que renux etablira le contact avec groucho, il telechargera le chier. En n, la derniere etape sera le transfert entre renux et votre machine. De nos jours, la principale activite des reseaux UUCP consiste a transferer le courrier electronique et les News Usenet. Le courrier electronique (E-mail en abrege) permet d'echanger des messages entre utilisateurs de sites distants, sans se preoccuper de savoir comment se connecter sur ces h^tes. Le travail de routage entre votre machine et le site distant est entierement o realise par le systeme de courrier electronique. Dans un environnement UUCP, les messages sont generalement transportes en executant la commande rmail sur un h^te o voisin, en passant l'adresse du destinataire et le contenu du courrier. Le programme rmail transmettra a son tour les donnees a un autre site, et ainsi de suite jusqu'a ce qu'il atteigne la machine de destination. Nous reviendrons la-dessus plus en detail dans le chapitre 13.
2 Si vous utilisez bash, le GNU Bourne Again Shell, ou tout autre shell moderne, vous devrez encoder le point d'exclamation par une sequence d'echappement car c'est le caractere d'historique. 3 Nous sommes desoles, il s'agit bien de l'expression a utiliser en francais pour le spooling...
: :
Les (( News )) peuvent ^tre decrites comme un genre de messageries BBS 4 distribuees. e Ce terme designe le plus souvent les News Usenet, qui constituent le plus grand reseau d'echange de messages au monde, avec un nombre de sites connectes estime a 120 000. Les origines de Usenet remontent a 1979, ou apres l'introduction d'UUCP avec le nouvel UNIX V7, trois etudiants imaginerent un systeme d'echange d'informations au sein de la communaute UNIX. Ils ecrivirent quelques scripts, qui formerent le tout premier systeme de News. En 1980, ce reseau etait forme de trois sites duke, unc et phs, entre deux universites de Caroline du Nord. Et Usenet grandit a partir de la. Bien que concu a l'origine autour de UUCP, de nos jours Usenet n'est plus transporte par ce seul type de reseau. L'unite d'information est l'article, qui peut ^tre poste dans une hierarchie de forums, e ou newsgroups, dont le debit peut atteindre, a l'heure ou nous ecrivons ces lignes, plus de 100 megaoctets par jour. Dans le monde UUCP, les News sont en general transferees par paquets, en rassemblant tous les articles des forums demandes dans un certain nombre de batches. Le site recepteur passe ces chiers au programme rnews, qui les decompacte et assure le traitement necessaire. En n, UUCP est egalement un protocole de choix pour de nombreux sites d'archivage qui o rent un acces public par ligne telephonique ordinaire. On peut generalement s'y connecter en les appelant par UUCP, sous un nom d'utilisateur invite, comme guest, nuucp ou encore uucp, pour telecharger les chiers publics. Les mots de passe courants pour ce type d'acces sont souvent simplement uucp, nuucp, parfois m^me aucun mot de passe n'est necessaire. e
methode s'appelle un reseau a commutation de paquets. Entre autres choses, cela permet d'utiliser des applications interactives a travers le reseau le prix a payer est, bien entendu, une plus grande complexite du code mis en uvre. La solution adoptee sur les systemes UNIX (et beaucoup d'autres sites non UNIX) est connue sous le nom de TCP/IP. Nous allons voir de quoi il retourne.
A l'invite login, vous entrez alors votre nom d'utilisateur, par exemple dugenou, puis votre mot de passe. Vous obtenez alors un shell sur la machine quark, exactement comme si vous etiez devant la console de cet ordinateur. Votre travail termine, en sortant de ce shell vous revenez a l'invite de votre propre machine. Vous venez d'utiliser l'une des applications interactives instantanees o ertes par TCP/IP : le login distant. Lors de votre session sur quark, vous pouvez avoir besoin d'utiliser une application graphique sous X Window, par exemple un previsualiseur PostScript. Vous devez alors indiquer a ce programme que ses fen^tres doivent s'a cher sur votre ecran, et non sur e
6 ISDN correspond a l'etranger a ce que nous appelons RNIS en France (reseau numerique a integration de services), commercialise sous le nom de NUMERIS.
:
celui de la machine sur laquelle il s'execute. Cela se fait en positionnant la variable d'environnement DISPLAY :
$ export DISPLAY=erdos.maths:0.0
Si maintenant vous lancez votre application, elle contactera votre serveur X au lieu de celui de quark, et tout s'a chera sur votre propre ecran. Bien s^r, il va de soi que vous u devez deja travailler sous X11 sur votre machine erdos. En realite, TCP/IP permet a quark et erdos de s'echanger les paquets X11 a n de vous donner l'illusion d'^tre e sur un systeme unique. Vous constatez ici que le reseau est totalement transparent. Une autre application tres importante rendue possible par TCP/IP s'appelle NFS, Network File System (systeme de chiers par reseau). Il s'agit d'une autre maniere de rendre le reseau transparent, qui vous permet litteralement de monter des hierarchies de repertoires depuis d'autres h^tes, de telle maniere qu'elles vous apparaissent o comme des systemes de chiers locaux. Par exemple, tous les repertoires personnels des utilisateurs peuvent ^tre situes sur un serveur central depuis lequel chaque h^te e o du reseau monte cette arborescence. Le resultat est que chaque utilisateur peut employer n'importe quelle machine en se retrouvant, quoi qu'il arrive, dans le m^me e repertoire. De m^me, il est possible de n'installer des applications tres gourmandes e en place disque (comme TEX) que sur un seul ordinateur et d'exporter ces repertoires pour que les autres h^tes puissent s'en servir. Nous reviendrons plus en detail sur o NFS dans le chapitre 11. Bien s^r, ce ne sont que quelques exemples simples de ce que vous pouvez realiser u gr^ce aux reseaux TCP/IP leurs possibilites ne sont limitees que par l'imagination. a Nous allons maintenant regarder d'un peu plus pres le fonctionnement de TCP/IP. Vous comprendrez ainsi comment et pourquoi con gurer votre machine. Nous commencerons par l'equipement materiel necessaire, et petit a petit nous guiderons vos premiers pas.
1.3.2 Ethernet
L'equipement materiel le plus utilise pour la realisation de reseaux locaux est ce que l'on appelle l'Ethernet. Il consiste en un simple c^ble coaxial, sur lequel est connecte a chaque h^te par l'intermediaire de connecteurs, ou de bo^tiers electroniques nommes o transceivers. Les reseaux Ethernet sont extr^mement peu co^teux et simples a instale u ler, et leur vitesse de transfert etant de 10 megabits par seconde, ils rencontrent un succes toujours grandissant. Il existe trois categories d'Ethernet : n, gros, et paire torsadee. Les deux premiers utilisent un c^ble coaxial, qui di ere dans sa taille et la maniere de s'y connecter. a L'Ethernet n utilise des connecteurs (( BNC )) en (( T )), que vous pouvez inserer au milieu du c^ble reseau et brancher sur la prise prevue a cet e et a l'arriere de l'ordia nateur. Le gros Ethernet s'utilise en faisant un petit trou dans le c^ble et en conneca tant un transceiver par l'intermediaire d'une (( pince vampire )). Ces bo^tiers peuvent
supporter un ou plusieurs h^tes. Ces deux variantes supportent respectivement des o distances d'utilisation de 200 et 500 metres, d'ou leurs denominations : 10base-2 et 10base-5. La paire torsadee utilise deux ls de cuivre ordinaires et necessite un bo^tier additionnel appele hub elle est connue sous le nom de 10base-T. Bien que rajouter un h^te sur un c^ble Ethernet n soit un peu g^nant, cela n'aro a e r^te pas le reseau : le service est juste interrompu pendant un moment tres court, le e temps de couper le c^ble (en debranchant une prise s'il est bien concu) a n d'insea rer le connecteur necessaire. Cette operation ne prend que quelques secondes, au pis quelques minutes. La majorite des utilisateurs preferent l'Ethernet n pour des raisons economiques on trouve des cartes pour PC a partir de 300 francs et le c^ble ne co^te que quelques a u dizaines de centimes le metre. Toutefois, pour de grosses installations, le gros Ethernet est beaucoup plus approprie il n'est par exemple pas necessaire d'interrompre le tra c quelques secondes pour connecter une nouvelle machine sur le reseau. La longueur de c^ble maximale est l'un des principaux inconvenients de la technologie a Ethernet. Toutefois, on peut relier plusieurs segments par l'intermediaire de repeteurs, ponts ou routeurs. Les repeteurs copient simplement les signaux entre plusieurs troncons a n qu'ils apparaissent comme un unique c^ble Ethernet. En raison de la vitesse a necessaire, il ne peut pas y avoir plus de quatre repeteurs entre deux h^tes quelconques o du reseau. Les ponts et routeurs sont beaucoup plus sophistiques : ils analysent les donnees recues et ne les retransmettent que lorsque la machine destinataire n'est pas situee sur l'Ethernet local. L'Ethernet se comporte comme un bus, ou chaque h^te peut envoyer des paquets o (ou trames) pouvant atteindre 1 500 octets vers une autre machine du m^me reseau. e Chaque ordinateur possede une adresse unique au monde formee de 6 octets, inscrite dans la carte Ethernet lors de sa fabrication. Ces adresses sont generalement a chees comme une sequence de nombres hexadecimaux sur deux digits, separes par un deuxpoints, comme aa:bb:cc:dd:ee: . Une trame envoyee par une station est vue par toutes les autres, mais seule la machine destinataire l'extrait et l'utilise. Si deux h^tes tentent d'envoyer un paquet au m^me o e moment, il se produit une collision, dans ce cas les deux machines abandonnent l'envoi et recommencent quelques instants plus tard.
allant jusqu'a 200 km. Pour de tres longues distances, on utilise frequemment un autre type de transport, base sur un standard appele X.25. Beaucoup de reseaux utilisent ou o rent ce service on peut citer Tymnet aux Etats-Unis, Datex-P en Allemagne, ou Transpac en France. X.25 necessite un equipement special appele PAD (Assembleur/Desassembleur de paquets). X.25 de nit un ensemble de protocoles qui lui sont propres, mais qui sont neanmoins utilises couramment pour relier des reseaux utilisant TCP/IP ou tout autre protocole. Comme les trames IP ne peuvent pas ^tre converties de facon simple e en paquets X.25, la methode employee est l'encapsulation. Chaque paquet IP est encapsule dans une trame X.25 et envoye sur le reseau. Tres souvent, les radio-amateurs utilisent leur equipement pour relier leurs machines en reseau par ondes hertziennes il s'agit du packet radio (ou ham radio). Le protocole utilise s'appelle AX.25, et est derive de X.25. D'autres techniques mettent en uvre des liaisons series lentes mais tres economiques pour acceder au reseau par ligne telephonique. La encore, d'autres protocoles de transmission de paquets sont employes, comme SLIP ou PPP, que nous decrirons plus loin.
2
niels sophus
quark
erdos
Fig. 1.1 - L'envoi d'un datagramme entre erdos et quark se fait en trois etapes.
10
Le bene ce apporte par IP est de faire appara^tre des reseaux physiquement di erents en un seul reseau homogene. Cela se nomme l'interconnexion de reseaux, et le (( metareseau )) resultant est appele un internet. Notez bien la subtilite entre un internet et l' Internet. Ce dernier terme est le nom o ciel d'un internet mondial particulier. Bien s^r, IP necessite aussi une methode d'adressage independante du materiel. Pour u ce faire, on assigne a chaque h^te un nombre unique sur 32 bits, appele l'adresse IP. o Une adresse IP est generalement notee sous la forme de quatre nombres decimaux, un pour chaque portion de 8 bits, separes par des points. Par exemple, quark pourrait avoir une adresse IP de 0x954C0C04, qui serait alors ecrite 149.76.12.4 ce format est connu sous le nom evident de notation sur 4 octets, vous verrez aussi tres souvent l'appellation anglaise dotted quad. Vous noterez que nous avons maintenant trois types d'adresses di erents : tout d'abord le nom d'h^te, comme quark, puis les adresses IP, et en n les adresses materielles, les o 6 octets de l'interface Ethernet. Toutes doivent ^tre liees, de sorte que lorsque vous e tapez rlogin quark, la partie logicielle du reseau puisse obtenir l'adresse IP de quark et quand IP delivre des donnees a l'Ethernet du Departement de Physique, il puisse determiner a quelle adresse materielle correspond cette adresse IP. Nous verrons comment tout cela est realise dans le chapitre 2. Pour l'instant, il vous su ra de savoir que ces etapes se nomment la resolution de noms, pour ce qui est de faire correspondre les noms d'h^tes en adresses IP, et resolution d'adresses, pour la o correspondance de cette derniere en adresse materielle.
11
Il est tres important de savoir que IP, par conception, n'est pas un protocole able. Supposons que dix personnes, sur votre reseau Ethernet, soient en train de telecharger la derniere version de XFree86 depuis le serveur ftp de GMU. Le tra c genere peut alors devenir trop important pour la passerelle, si elle est trop lente ou manque de memoire. Si a ce moment, vous envoyez un paquet a destination de quark, sophus pourrait se trouver a cours de ressources pendant quelques instants et ne pas pouvoir traiter vos donnees. IP resout ce probleme d'une facon tres simple : il elimine le paquet, qui est irremediablement perdu. Par consequent, la responsabilite de veri er l'integrite des donnees transmises, et de les retransmettre en cas d'erreur est celle des h^tes en o communication. Ce r^le est assure par un autre protocole : TCP, ou Transmission Control Protocol, qui o cree un service able par-dessus IP, en prenant en charge le contr^le de la transmission. o La propriete la plus importante de TCP est d'utiliser IP a n de donner l'illusion d'une simple connexion entre les deux processus distants, de maniere a ce qu'il n'y ait pas a se preoccuper du routage des donnees. Une connexion TCP fonctionne un peu comme un tube bidirectionnel dans lequel chaque programme peut lire et ecrire. Vous pouvez l'imaginer comme une conversation telephonique, par exemple. TCP identi e chaque bout d'une telle connexion par les adresses IP des h^tes concero nes, et un numero de port sur chacun d'eux. Les ports peuvent ^tre vus comme des e points d'attache pour les connexions reseau. En prenant encore une fois le telephone comme exemple, on pourrait comparer les adresses IP aux codes regionaux (un numero par ville), et les ports aux numeros individuels (un numero par abonne) 8. Dans notre exemple de rlogin, l'application cliente (rlogin) ouvre un port sur erdos et se connecte au port 513 du systeme quark, dont le serveur rlogind est a l'ecoute. Il s'etablit alors une connexion TCP. Par l'intermediaire de cette connexion, rlogind e ectue la procedure d'autorisation d'acces, puis lance l'execution du shell. L'entree et la sortie standard de ce dernier sont redirigees vers la connexion TCP de sorte que tout ce que vous tapez sur votre machine dans rlogin soit envoye au ux TCP et aboutisse a l'entree standard du shell distant.
12
Toutefois, etablir une connexion TCP avec galois, envoyer le chier, puis deconnecter prendrait bien trop de temps. A la place, une requ^te est envoyee a galois, qui envoie e alors le chier dans deux ou trois paquets UDP, ce qui est bien plus rapide. Mais UDP n'est pas concu pour gerer la perte ou la corruption des donnees c'est a l'application, NFS dans le cas present, de prendre en charge ces problemes eventuels.
13
la plus courante dans le monde UNIX est la bibliotheque de sockets de Berkeley. Ce nom, qui dans un contexte technique signi e (( prise )), ou (( connecteur )) en anglais, provient de l'analogie courante faite entre les ports et des prises, sur lesquels on vient se (( brancher )) pour realiser la connexion. Cette bibliotheque o re la fonction bind pour speci er un h^te distant, un protocole de transport, et un service auquel un o programme peut se connecter ou bien ecouter (gr^ce aux fonctions connect, listen et a accept). Elle est assez generaliste, en ce sens qu'elle contient non seulement une classe de sockets TCP/IP (AF INET), mais egalement une classe qui permet les connexions locales a la machine (les sockets AF UNIX). Quelques implementations comportent m^me d'autres classes, comme le protocole XNS (Xerox Networking System) ou X.25. e Sous Linux, la bibliotheque de sockets est partie integrante de la bibliotheque C standard, libc. A l'heure actuelle, elle ne supporte que AF INET et AF UNIX, mais d'autres protocoles sont en developpement et appara^tront sans doute dans l'avenir.
14
necessaire a son aboutissement. Andrew Tridgell a realise samba, un serveur NetBIOS 9 gratuit pour systemes Unix dont les premieres versions sont tres prometteuses.
15
16
Il est evidemment impossible de detailler ici tous les ennuis de securite auxquels vous serez peut-^tre confronte. La lecture d'un ouvrage specialise est absolument necessaire, e particulierement en environnement reseau. Le livre (( Practical UNIX Security )), de Simson Gar nkel (voir Spaf93]) est hautement recommande. La securite commence par une bonne administration systeme. Cela comprend la veri cation des proprietaires et droits d'acces des chiers vitaux et des repertoires, l'observation de l'utilisation des comptes privilegies, etc. Le programme COPS, par exemple, permet de tester le systeme de chiers et la con guration courante a la recherche de permissions dangereuses ou autres anomalies. Il est souvent raisonnable d'utiliser une gestion des mots de passe les rendant plus di ciles a deviner. L'ensemble shadow password suite, par exemple, demande entre autres choses qu'ils aient une longueur minimale de cinq caracteres et comportent un ensemble de lettres minuscules, majuscules et chi res. Lors de la creation d'un service accessible par reseau, assurez-vous de ne lui donner que les privileges minimaux, ne lui permettez pas de faire des choses inutiles pour son fonctionnement normal. Par exemple, vous ne devez faire de programmes setuid a root ou tout autre utilisateur privilegie que lorsque c'est vraiment necessaire. Si vous desirez n'utiliser un service que pour une application tres limitee, n'hesitez pas a le con gurer de maniere aussi restrictive que possible. Si par exemple vous comptez autoriser des stations diskless a s'amorcer depuis votre machine, vous devez o rir TFTP (Trivial File Transfer Protocol) a n qu'elles puissent telecharger leur con guration de base depuis le repertoire /boot. Toutefois, utilise sans restrictions, TFTP permet a n'importe quel utilisateur du monde de telecharger tout chier de votre machine qui soit lisible par tous. Si ce n'est pas ce que vous desirez, pourquoi ne pas restreindre le service TFTP au repertoire /boot ? 11 . Dans le m^me ordre d'idees, vous pouvez restreindre l'acces a certains services a e des utilisateurs de certains h^tes, par exemple ceux de votre reseau local. Dans le o chapitre 9, nous presenterons tcpd, qui permet cette operation pour une grande variete d'applications reseaux. Un autre point tres important : eviter les logiciels a risque. Bien s^r, tous les prou grammes que vous utilisez peuvent ^tre dangereux, puisqu'ils peuvent receler des e bogues que des personnes malintentionnees pourraient exploiter pour penetrer dans votre systeme. Ce genre de situation arrive, et il n'existe malheureusement pas de protection a toute epreuve. Ces problemes a ectent aussi bien les applications du domaine public que les produits commerciaux 12. Toutefois, les programmes necessitant des privileges particuliers sont fatalement plus dangereux que les autres, car le moindre trou de securite peut avoir de graves consequences 13. Si vous installez
11 Nous reviendrons sur ce sujet dans le chapitre 9. 12 Il y a eu des systemes UNIX commerciaux (qui co^tent une petite fortune), fournis avec un u shell script setuid-root, qui permettait a tous les utilisateurs d'obtenir en une fraction de seconde tous les privileges root par un simple tour d'adresse. 13 En 1988, le ver RTM provoqua l'arr^t presque complet de la plus grande partie de l'Internet, e en exploitant une grosse breche dans quelques versions du programme sendmail. Ce trou de securite a ete corrige depuis.
: : :
17
un programme setuid, redoublez de prudence et assurez-vous de ne rien rater de sa documentation, a n d'eviter de creer une breche de securite par erreur ou omission. Malgre tout le soin que vous pourrez apporter a la securite, vous ne pourrez jamais vous considerer comme totalement a l'abri. Par consequent, vous devez pouvoir detecter les eventuels intrus le plus t^t possible. La lecture des chiers de trace du o systeme est un bon point de depart, mais les pirates le sachant aussi bien que vous, ils ne manqueront pas d'e acer tout ce qui pourrait les denoncer. Il existe neanmoins des outils comme tripwire 14 , qui calcule regulierement di erents checksums sur ces chiers, et les stocke dans une base de donnees. Lors des acces ulterieurs, ces valeurs sont recalculees et comparees avec celles precedemment trouvees a n de detecter toute modi cation anormale de ces traces.
18
19
Chapitre 2
Le reseau TCP/IP
Nous allons maintenant aborder tous les details que vous devrez conna^tre lors de la connexion de votre systeme Linux a un reseau TCP/IP, notamment la gestion des adresses IP, les noms de machines, et le routage. Ce chapitre vous apportera les bases necessaires pour la comprehension de ce que necessite une con guration reseau, les suivants decriront les di erents outils a employer.
20
2.2 Adresses IP
Comme nous l'avons vu dans le chapitre precedent, les adresses comprises par le protocole reseau IP sont des nombres de 32 bits. Chaque machine se voit assigne un nombre unique dans l'environnement : si vous concevez un reseau local qui ne partage pas de tra c TCP/IP avec d'autres reseaux, vous pouvez choisir ces nombres selon vos propres criteres. Toutefois, pour les sites connectes a l'Internet, ces adresses sont fournies par une autorite centrale, le Network Information Center, ou NIC 1 . Pour en faciliter la lecture, les adresses IP sont partagees en quatre nombres de 8 bits appeles octets 2 . Par exemple, l'adresse 0x954C0C04, qui est en hexadecimal celle du site quark.physique.groucho.edu, s'ecrira 149.76.12.4. Ce format est souvent appele notation sur 4 octets ou notation pointee (dotted quad notation en anglais). Cette notation est aussi due au fait que les adresses IP sont composees d'une valeur reseau, contenue dans les premiers octets, et une valeur h^te, dans ceux qui restent. o Lorsque vous demandez une adresse o cielle au NIC, vous n'obtenez pas de valeurs individuelles pour chaque machine que vous comptez connecter : le NIC vous accorde une adresse de reseau, et c'est a vous d'assigner toutes les adresses IP individuelles valides qu'elle permet, selon vos preferences. En fonction de la taille du reseau, la partie h^te peut ^tre plus ou moins grande. o e Pour faire face aux di erents besoins, il existe plusieurs classes de reseau, de nissant di erentes manieres de decouper les adresses IP. La classe A comprend les reseaux 1.0.0.0 a 127.0.0.0. La valeur reseau est contenue dans le premier octet. Cela donne une partie h^te de 24 bits, permettant environ 1,6 million de machines. o Classe B La classe B comprend les reseaux 128.0.0.0 a 191.255.0.0 la valeur reseau est contenue dans les deux premiers octets. Elle permet donc 16 320 reseaux de 65 024 h^tes chacuns. o Classe C La classe C comprend les reseaux 192.0.0.0 a 223.255.255.0, la valeur reseau etant contenue dans les trois premiers octets. Elle permet pres de 2 millions de reseaux de 254 h^tes. o Classes D, E, et F Les adresses comprises entre 224.0.0.0 et 254.0.0.0 sont soit experimentales, soit reservees pour un usage futur et ne speci ent aucun reseau. Classe A
1 Tres souvent, les adresses IP vous seront assignees par le fournisseur de services aupres duquel vous achetez votre connectivite. Mais vous pouvez egalement traiter directement aupres du NIC a n d'obtenir une adresse pour votre reseau, en envoyant un courrier electronique a l'adresse hostmaster@internic.net. 2 Il faut noter ici que la langue anglaise fait la di erence entre un nombre quelconque sur 8 bits, appele byte, de son utilisation dans la notation d'adresses IP, ou il prend l'appellation octet. En francais, nous ne disposons que du terme octet pour les deux cas.
: :
21
Si nous reprenons l'exemple du chapitre precedent, nous pouvons maintenant voir que 149.76.12.4, l'adresse de quark, designe l'h^te 12.4 du reseau de classe B o 149.76.0.0. Vous aurez peut-^tre remarque dans la liste ci-dessus que toutes les valeurs possibles e pour la partie h^te ne sont pas autorisees. En e et, les valeurs 0 et 255 sont reservees o a des usages speciaux : une adresse dont tous les bits de la partie h^te sont a zero o designe le reseau en lui-m^me, et si les bits sont tous a 1 il s'agit alors de l'adresse de e di usion (broadcast). Celle-ci designe simultanement toutes les machines connectees au reseau en question. Par consequent, 149.76.255.255 n'est pas une adresse d'h^te o valide, mais reference tous ceux du reseau 149.76.0.0. Il y a egalement deux autres adresses reservees, 0.0.0.0 et 127.0.0.0. La premiere s'appelle la route par defaut et la seconde, l'adresse loopback. La route par defaut est en rapport avec la facon dont sont diriges les datagrammes, ce que nous verrons dans la section suivante. Le reseau 127.0.0.0 est reserve au tra c IP local a votre ordinateur. En general, l'adresse 127.0.0.1 sera assignee a une interface speciale de votre systeme, appelee interface loopback, qui se comporte comme un circuit ferme. Chaque paquet TCP ou UDP qui lui est transmis, est immediatement retourne comme s'il arrivait d'un autre reseau. Ainsi, il est possible de developper et tester des programmes sans disposer d'un ( vrai ) reseau cette interface trouve toutefois sa principale utilite lors de l'emploi ( ) de logiciels utilisant le reseau sur la m^me machine, ou sur un ordinateur totalement e isole. Cette situation n'est pas si rare qu'il y para^t : par exemple, beaucoup de sites UUCP ne disposent d'aucune connectivite IP, mais ont besoin de faire fonctionner le serveur de News INN. Celui-ci utilisera alors l'interface loopback.
22
paquet expedie par ARP contient une requ^te pour l'adresse IP en question. Chaque e h^te le recevant compare alors cette adresse a la sienne, et si elles correspondent, o retourne une reponse ARP a la machine appelante. Celle-ci peut alors en extraire l'adresse Ethernet de l'expediteur. Vous pouvez vous demander comment un h^te peut atteindre une adresse Internet o pouvant se trouver sur un reseau Ethernet di erent, quelque part dans le monde, ou comment, en tout premier lieu, il peut savoir que cette adresse est sur un reseau Ethernet. Toutes ces questions mettent en jeu ce que l'on appelle le routage, qui consiste a localiser physiquement un h^te dans un reseau. Ce sera le sujet de la o section suivante. Voyons ARP plus en detail. Une fois qu'un h^te a decouvert une adresse Ethernet, il o la stocke dans son cache ARP a n de ne pas avoir a la redemander la prochaine fois qu'il devra envoyer un datagramme a la machine en question. Toutefois, il ne serait pas judicieux de conserver cette information inde niment la machine distante peut changer de con guration (changement de carte Ethernet pour des raisons techniques par exemple) et l'entree ARP ne serait plus valide. Par consequent, les entrees contenues dans le cache ARP sont supprimees au bout d'un certain temps a n de forcer une nouvelle requ^te. e Il est aussi quelquefois necessaire de trouver l'adresse IP associee a une adresse Ethernet donnee. Cela se produit lorsqu'une machine diskless veut s'amorcer depuis un serveur du reseau, ce qui est une situation tres courante sur les reseaux locaux. Ce type de station ne possede pratiquement aucune information sur elle-m^me, a l'exe ception de son adresse Ethernet : par consequent, elle di use un message demandant aux serveurs de lui indiquer son adresse IP. Il existe un autre protocole pour cela, appele Reverse Address Resolution Protocol, ou RARP. Avec le protocole BOOTP, il permet de de nir une procedure d'amorcage de clients diskless via reseau.
2.4 Routage IP
Nous allons maintenant voir comment localiser un h^te a qui nous voulons envoyer des o paquets, en fonction de son adresse IP. Les di erentes parties de l'adresse sont gerees di eremment et c'est a vous de con gurer correctement les chiers qui indiquent comment traiter chacune de ces parties.
2.4.1 Reseaux IP
Lorsque vous ecrivez une lettre a quelqu'un, vous indiquez generalement sur l'enveloppe une adresse complete speci ant le pays, le departement, le code postal, etc. Ensuite, vous mettez l'enveloppe dans une bo^te aux lettres et les services postaux la delivreront au destinataire : elle sera expediee dans le pays indique, ou d'autres services nationaux la dirigeront vers le departement indique, et ainsi de suite jusqu'au
2.4. Routage IP
23
destinataire. L'avantage de cette methode hierarchique est evident : quelle que soit la destination, la poste locale saura dans quelle direction diriger la lettre, mais n'aura pas a se soucier de savoir comment elle voyagera une fois qu'elle aura atteint le pays de destination. Les reseaux IP sont structures de facon similaire. L'Internet consiste en un certain nombre de reseaux particuliers, appeles systemes autonomes. Chaque systeme e ectue tout le routage necessaire entre ses h^tes internes de telle maniere que l'envoi d'un o datagramme se reduise a trouver un chemin vers le reseau sur lequel se trouve l'h^te o destinataire. Cela signi e qu'aussit^t que le paquet est passe a n'importe quel h^te o o de ce reseau particulier, le reste du traitement est exclusivement realise par ce reseau lui-m^me. e
2.4.2 Sous-reseaux
Cette structure est re etee par le decoupage des adresses IP en une partie reseau et une partie h^te, comme nous l'avons explique plus haut. Par defaut, le reseau de o destination est derive de la partie reseau de l'adresse IP. Par consequent, les h^tes o pour lesquels ce nombre est le m^me doivent se trouver sur le m^me reseau, et recie e proquement 3 . Il est alors logique d'o rir un schema similaire a l'interieur du reseau, puisqu'il peut lui-m^me consister en un ensemble de centaines de reseaux plus petits, la plus petite e unite etant des reseaux physiques comme l'Ethernet. Par consequent, IP permet de subdiviser un reseau IP en plusieurs sous-reseaux. Un sous-reseau prend la responsabilite de delivrer les datagrammes pour une certaine plage d'adresses IP appartenant au reseau IP dont il fait partie. Tout comme dans les classes A, B, ou C, il est identi e par la partie reseau des adresses IP. Toutefois, cette partie reseau est alors etendue en incluant quelques bits de la partie h^te. Le nombre o de bits qui seront interpretes en tant que valeur de sous-reseau est donne par ce que l'on appelle le masque de sous-reseau ou masque reseau, en anglais netmask. Il s'agit aussi d'un nombre sur 32 bits, qui speci e le masque de bits pour la partie reseau de l'adresse IP. Le reseau du campus de l'universite Groucho Marx est un exemple d'une telle organisation. Il possede le reseau de classe B 149.76.0.0, et son masque reseau est par consequent 255.255.0.0. A l'interieur, il est en fait constitue de plusieurs reseaux plus petits, comme ceux des di erents departements. Aussi, la plage d'adresses IP est divisee en 254 sous-reseaux, 149.76.1.0 a 149.76.254.0. Par exemple, le Departement de Physique Theorique s'est vu assigner 149.76.12.0. La dorsale du campus est aussi un reseau, auquel on a attribue l'adresse 149.76.1.0. Ces sous-reseaux partagent la m^me valeur reseau, e bien que le troisieme octet soit utilise pour les distinguer entre eux. Ils utiliseront un masque de sous-reseau de 255.255.255.0.
3 Les systemes autonomes sont plus generaux et peuvent comporter plus d'un reseau IP.
:
24
Partie h^te o
12 4
149
76
12
Partie reseau
Partie h^te o
La gure 2.1 montre comment 149.76.12.4, l'adresse de quark, est interpretee differemment selon qu'elle est consideree sur un reseau de classe B ordinaire, ou comme sous-reseau. Il faut bien avoir a l'esprit que la subdivision de reseaux n'est qu'une division interne. Les sous-reseaux sont crees par le proprietaire du reseau (ou les administrateurs). Souvent, ils sont mis en place pour delimiter des zones precises, qu'elles soient physiques (entre deux Ethernet), administratives (entre deux departements), ou geographiques et une personne se voit deleguer la responsabilite de ces sous-reseaux. Mais cette structure n'a ecte que le comportement interne et est completement invisible pour le reste du monde.
2.4.3 Passerelles
La subdivision de reseaux n'est pas seulement utile pour des raisons administratives, mais est aussi tres souvent la consequence naturelle des limitations materielles. Le point de vue d'un h^te connecte a un reseau physique donne (Ethernet par exemple), o est tres limite : il ne pourra acceder directement qu'aux machines situees sur le m^me e reseau local. Tous les autres h^tes ne lui sont accessibles qu'a travers ce que l'on o appelle une passerelle. Une passerelle est un h^te qui est connecte physiquement a deux o reseaux (ou plus) simultanement, et qui est con gure specialement pour permettre d'echanger des paquets entre eux. Pour que IP puisse facilement savoir si un h^te est sur un reseau local physique, ces o di erents reseaux physiques doivent appartenir a di erents reseaux IP. Par exemple, le reseau IP 149.76.4.0 est reserve aux h^tes du reseau local du Departement de o Mathematiques. Lors de l'envoi d'un datagramme vers quark, les logiciels reseau de erdos deduisent immediatement de l'adresse IP 149.76.12.4 que l'h^te destinataire o est situe sur un reseau physique di erent, et par consequent ne sera joignable que par une passerelle (sophus par defaut).
2.4. Routage IP
25
Cette machine passerelle, sophus, est connectee a deux sous-reseaux distincts : celui du Departement de Mathematiques et la dorsale du campus. Il accede a chacun d'eux par une interface di erente, qui sont respectivement eth0 et fddi0. Mais alors, quelle adresse IP devons-nous lui assigner ? Faut-il lui en donner une appartenant au sousreseau 149.76.1.0, ou bien a 149.76.4.0 ? La reponse est : les deux, mon general. Lors de dialogues avec des h^tes du Deparo tement de Mathematiques, sophus devra utiliser une adresse IP de 149.76.4.1, et avec la dorsale, ce sera 149.76.1.4. Donc, une passerelle se voit assigner une adresse IP par reseau auquel elle est connectee. Ces adresses (et les masques correspondants) sont liees aux interfaces par lesquelles on accede aux sous-reseaux. La correspondance entre les interfaces et adresses de sophus ressemblera donc a ceci : Interface Adresse Masque reseau eth0 149.76.4.1 255.255.255.0 fddi0 149.76.1.4 255.255.255.0 lo 127.0.0.1 255.0.0.0 La derniere entree correspond a l'interface loopback, que nous avons decrit plus haut. La gure 2.2 montre une partie de la topologie du reseau a l'universite Groucho Marx (GMU). Les machines connectees simultanement a deux sous-reseaux sont indiquees avec leurs deux adresses IP. La plupart du temps, vous pouvez ignorer la di erence entre l'adresse IP d'un h^te o et son interface. Pour ceux qui ne sont que sur un seul reseau, comme erdos, vous pourrez dire que cette machine a telle ou telle adresse IP, bien qu'en realite ce soit son interface Ethernet qui ait cette adresse. Mais la distinction n'est vraiment importante que pour les passerelles.
26
4.23 gauss
4.0
4.17 erdos
12.0
12.4 quark
4.1
Dorsale du campus
1.4
1.12 gcc1
niels
2.4. Routage IP
27
defaut doit generalement ^tre indiquee il s'agit d'une entree associant une passerelle e au reseau 0.0.0.0. Tous les paquets destines a un reseau inconnu seront expedies par ce chemin. Sur sophus, cette table pourrait ressembler a celle-ci :
Reseau
Passerelle 149.76.1.0 -
Interface
Les routes vers les reseaux sur lesquels sophus est directement connectee n'ont pas besoin de passerelle, c'est pourquoi ici la colonne correspondante contient un tiret. Les tables de routage peuvent ^tre construites par di erents moyens. Dans le cas de e petits reseaux, la meilleure methode est de le faire manuellement et de les positionner par la commande route lors de l'amorcage des systemes (voir le chapitre 5). Sur les grands reseaux, elles sont ajustees en cours de fonctionnement par des programmes qui s'echangent des informations de routage pour determiner les meilleures routes. En fonction de la taille du reseau, di erents protocoles de routage seront alors utilises. A l'interieur de systemes autonomes (comme le campus Groucho Marx), les protocoles de routage interne sont employes. Le plus courant, RIP (Routing Information Protocol) est implemente par le demon BSD routed. Entre les systemes autonomes, il faut faire appel aux protocoles de routage externe comme EGP (External Gateway Protocol) ou BGP (Border Gateway Protocol) ceux-ci (aussi bien que RIP) sont implementes dans le demon gated de l'universite de Cornell 4.
28
attendant la reception de mises a jour RIP pour modi er la table de routage locale de maniere appropriee. Lors de la di usion des informations sur la table locale, gated determine la longueur du chemin a partir de la valeur metrique associee avec chaque entree. Cette valeur est initialisee par l'administrateur systeme lors de l'etablissement de la route et doit re eter le prix de revient de ce chemin particulier. Par consequent, la valeur metrique d'une route vers un sous-reseau dont l'h^te est directement connecte doit toujours o valoir zero, alors qu'une route passant par deux passerelles aura la valeur deux. Notez que vous n'avez toutefois pas a vous soucier de cette valeur metrique si vous n'utilisez jamais le protocole RIP ou le programme gated.
29
Comme nous le savons maintenant, l'adressage sur un reseau TCP/IP est base sur des nombres de 32 bits. Comme ils sont di cilement memorisables, les h^tes sont o generalement baptises de facon plus humaine, par de simples noms comme pluton, zeus ou marcel. C'est alors au systeme de trouver les adresses IP correspondantes: il s'agit de la resolution de noms. Lorsqu'une application a besoin de trouver l'adresse IP d'un h^te donne, il s'appuie sur o les fonctions gethostbyname(3) et gethostbyaddr(3). Traditionnellement, celles-ci sont groupees avec quelques autres de la m^me famille, dans une bibliotheque specialisee e sous Linux l'ensemble est integre dans la bibliotheque standard libc. On fait en general reference a ces fonctions en parlant du (( resolver )). Sur un petit reseau, il n'est pas tres di cile de maintenir des tables de correspondances entre les noms de machines et leurs adresses. Ces informations sont en principe contenues dans un chier nomme /etc/hosts. Lors de l'ajout ou la suppression d'h^tes, ou o en cas de reassignation d'adresse, il su t de mettre a jour le chier hosts sur toutes les machines. Il est evident que cette operation devient quasi impossible sur des reseaux composes d'une tres grande quantite de systemes. NIS, le Network Information System developpe par Sun Microsystems, est une solution a ce probleme (On l'appelle YP, Yellow Pages ou pages jaunes pour des raisons historiques). NIS conserve le chier hosts, ainsi que certaines autres informations, dans une base de donnees sur une machine ma^tre depuis laquelle des clients peuvent recuperer a tout moment ce dont ils ont besoin. Mais la encore, cette approche n'est utilisable que sur des reseaux d'importance moyenne, comme les reseaux locaux, car il faut stocker et maintenir la base de donnees hosts de maniere centralisee et la distribuer a tous les serveurs. Sur l'Internet, ces informations etaient aussi a l'origine stockees dans un unique chier, HOSTS.TXT. Il etait maintenu au Network Information Center, ou NIC, et devait ^tre telecharge puis installe par tous les sites connectes. La croissance du ree seau engendra plusieurs problemes. En plus du surcro^t de travail d^ a la necessite u d'installer HOSTS.TXT regulierement, la charge des serveurs le di usant devint vite trop elevee. Pis encore, tous les noms devaient ^tre enregistres aupres du NIC, qui e devait s'assurer que tous soient bien uniques.
30
C'est pourquoi, en 1984, une nouvelle methode de resolution des noms fut adoptee, le Domain Name System. Le DNS est l' uvre de Paul Mockapetris, et regle simultanement les deux problemes que nous venons d'evoquer.
La gure 2.3 montre une partie de l'espace de nommage. Tout en haut de cette arborescence, l'entree denotee par un simple point, correspond a la racine et est appele root domain. Pour indiquer qu'un nom d'h^te est FQDN (c'est-a-dire completement o
31
quali e, et non pas relatif a un domaine local implicite), on l'ecrit parfois en le terminant par un point. Cela signi e que la derniere composante est le domaine racine (root domain). En fonction de sa position dans la hierarchie, un domaine peut ^tre appele de premier e niveau (top-level), second niveau ou troisieme niveau. Il peut y en avoir encore plus, mais le cas est assez rare. Voici plusieurs domaines americains de premier niveau que vous rencontrerez tres souvent :
Sites en rapport avec l'education (colleges, universites...). Entreprises commerciales. Organisations privees non commerciales. Beaucoup de reseaux UUCP prives sont dans ce domaine. Passerelles et autres machines administratives d'un reseau. Institutions militaires americaines. Institutions gouvernementales americaines. O ciellement, tous les noms de sites depourvus de domaines utilises en UUCP ont ete places dans ce domaine.
Techniquement, les quatre premiers appartiennent aux Etats-Unis, mais vous pourrez quand m^me rencontrer des sites d'autres pays dans ces domaines en particulier dans e net. En revanche, mil et gov sont exclusivement americains. En dehors des USA, chaque etat utilise generalement un domaine de premier niveau bien a lui, constitue d'apres les deux lettres de nissant le code pays ISO-3166. La Finlande, par exemple, utilise le domaine la France fr, l'Allemagne de, et l'Australie au. En dessous, chaque NIC est libre d'organiser les noms comme il l'entend. L'Australie, par exemple, utilise des domaines de second niveau identiques aux niveaux internationaux superieurs: com.au, edu.au, et ainsi de suite. D'autres, comme l'Allemagne, n'utilisent pas cette methode et preferent avoir des noms de machines bien plus longs representant directement les organismes gerant des domaines particuliers. Il n'est pas rare de rencontrer des noms d'h^tes comme ftp.informatik.uni-erlangen.de. La o langue allemande fonctionne de m^me, para^t-il... e Bien s^r, ces domaines nationaux n'impliquent absolument pas que les machines resiu dent physiquement dans les pays correspondants ils signalent seulement qu'elles ont ete enregistrees aupres du NIC de cet etat. Une entreprise suedoise peut avoir une branche australienne, mais toutes ses adresses dans le domaine de premier niveau se. Il appara^t donc maintenant que l'organisation de l'espace de nommage en une hierarchie de domaines, resout elegamment le probleme d'unicite des noms : gr^ce au a DNS, un nom d'h^te n'a besoin de rester unique qu'a l'interieur de son domaine pour o
32
qu'il soit egalement unique au monde. De plus, les domaines quali es sont facilement memorisables. Ces deux raisons su sent deja pour vouloir separer un grand domaine en plusieurs sous-domaines. Mais DNS peut faire bien plus encore. Il permet de deleguer l'autorite sur un sousdomaine a ses administrateurs. A l'universite Groucho Marx, les responsables peuvent par exemple creer un sous-domaine par departement, nous avons deja rencontre ce cas avec maths et physique. Lorsqu'ils trouveront le reseau du Departement de Physique trop grand et trop complexe a administrer, et di cile a apprehender de l'exterieur, ils pourront simplement passer le contr^le du domaine physique.groucho.edu aux o administrateurs de ce sous-reseau. Ceux-ci seront alors libres de decider des noms de machines voulus et de leur assigner des adresses IP de leur reseau comme ils l'entendent, sans intervention exterieure. En n, l'espace de nommage est separe en zones, chacune partant d'un domaine. Notez bien la di erence subtile entre une zone et un domaine : le domaine groucho.edu comprend toutes les machines de l'universite Groucho Marx, alors que la zone groucho.edu ne contient que celles gerees directement par le centre de calcul, celles du Departement de Mathemathiques par exemple. Les h^tes du Departement de Physique o appartiennent a une zone di erente, physique.groucho.edu. Dans la gure 2.3, le debut de chaque zone est repere par un petit cercle a droite du nom de domaine.
33
erdos.maths.groucho.edu. Celui-ci reconna^t que ce nom n'appartient pas a sa zone d'autorite, mais plut^t a l'une situee en dessous du domaine edu. Par consequent, il o
indique de contacter un serveur de noms de cette zone et joint a sa reponse la liste de tous ces serveurs, avec leurs adresses. Votre serveur de noms local contactera alors l'un d'entre eux, par exemple a.isi.edu. Celui-ci a son tour, indiquera que groucho.edu possede sa propre zone et renverra les adresses des serveurs de noms concernes. Le serveur de noms local presentera alors sa requ^te pour l'adresse de erdos a l'un d'entre e eux, qui, nalement, reconna^tra que ce nom appartient a sa zone et pourra retourner l'adresse IP correspondante. Tout cela peut para^tre generer beaucoup de tra c pour trouver une simple adresse IP, mais c'est en realite minuscule en comparaison de la quantite de donnees qu'il aurait fallu transferer si nous en etions encore au chier HOSTS.TXT central. Toutefois, cette methode est encore perfectible. A n d'ameliorer le temps de reponse lors des requ^tes suivantes, le serveur de noms e stocke les informations obtenues dans son cache local. Ainsi, la prochaine fois que quelqu'un, sur votre reseau local, desire trouver l'adresse d'une machine du domaine groucho.edu, votre serveur de noms n'aura pas besoin de recommencer toute la procedure, et ira directement se connecter au serveur de noms de groucho.edu 5 . Bien s^r, le serveur de noms ne conservera pas cette information inde niment, mais u elle sera supprimee au bout d'un certain temps. La duree de vie des informations contenues dans le cache est appelee time to live, ou TTL. Elle est positionnee par les administrateurs responsables de chaque zone.
34
requ^tes aboutiront aux autres serveurs. Bien entendu, ce schema ne met pas a l'abri e de dysfonctionnements produisant des reponses erronees a toutes les requ^tes DNS, e comme des bogues dans le programme lui-m^me par exemple. e Bien s^r, vous pouvez aussi utiliser un serveur de noms qui n'a autorite sur aucun u domaine domaine 7 . Ce type de serveur peut neanmoins ^tre utile, car il est toujours e capable de gerer des requ^tes DNS pour les applications fonctionnant sur le reseau e local, ainsi qu'un cache des informations. On l'appelle par consequent serveur cachingonly (cache seulement).
35
Information ayant autorite pour physique.groucho.edu. IN SOA niels.physique.groucho.edu. janet.niels.physique.groucho.edu. ( 940902 numero de serie 360000 mise a jour 3600 tentative apres echec 3600000 delai d'expiration 3600 ttl par defaut (time to live) )
Serveurs de noms IN NS niels IN NS gauss.maths.groucho.edu. gauss.maths.groucho.edu. IN A 149.76.4.23 Physique theorique (sous-reseau 12) niels IN A 149.76.12.1 IN A 149.76.1.12 nameserver IN CNAME niels otto IN A 149.76.12.2 quark IN A 149.76.12.4 down IN A 149.76.12.5 strange IN A 149.76.12.6 ... Physique des particules (accelerateur) (sous-reseau 14) boson IN A 149.76.14.1 muon IN A 149.76.14.7 bogon IN A 149.76.14.12 ...
36
vers leurs serveurs de noms. Ceci est generalement realise par une paire d'enregistrements : NS qui donne le nom quali e du serveur, et un enregistrement A qui associe une adresse a ce nom. Puisque ces enregistrements sont ce qui relie le tout pour que l'espace de nommage soit maintenu unique et coherent, ils sont souvent appeles glue records (enregistrements-colle). Ce sont les seuls endroits ou une zone contient des informations sur les h^tes de la zone inferieure. Les glue records pointant vers les o serveurs de noms de physique.groucho.edu sont montres dans la gure 2.5.
: Donnees pour la zone groucho.edu. @ IN SOA vax12.gcc.groucho.edu. joe.vax12.gcc.groucho.edu. ( 940701 numero de serie 360000 mise a jour 3600 tentative apres echec 3600000 delai d'expiration 3600 ttl par defaut (time to live) ) .... Glue records pour la zone physique.groucho.edu physique IN NS niels.physique.groucho.edu. IN NS gauss.maths.groucho.edu. niels.physique IN A 149.76.12.1 gauss.maths IN A 149.76.4.23 ...
37
En consequence, de nouvelles zones du domaine in-addr.arpa doivent ^tre creees e avec la zone physique et deleguees aux administrateurs reseau du departement : 8.76.149.in-addr.arpa, 12.76.149.in-addr.arpa, et 14.76.149.in-addr.arpa. Autrement, l'installation d'une nouvelle machine au laboratoire de physique des particules necessiterait qu'ils contactent leur domaine parent pour que la nouvelle adresse soit integree dans leur chier de la zone in-addr.arpa. La base de donnees de la zone pour le sous-reseau 12 est montree dans la gure 2.6. Les glue records correspondants dans la base de leur zone parente sont illustres gure 2.7.
Le domaine 12.76.149.in-addr.arpa. IN SOA niels.physique.groucho.edu. janet.niels.physique.groucho.edu. ( 940902 360000 3600 3600000 3600 ) IN PTR otto.physique.groucho.edu. IN PTR quark.physique.groucho.edu. IN PTR down.physique.groucho.edu. IN PTR strange.physique.groucho.edu.
2 4 5 6
Le domaine 76.149.in-addr.arpa. IN SOA vax12.gcc.groucho.edu. joe.vax12.gcc.groucho.edu. ( 940701 360000 3600 3600000 3600 ) ... sous-reseau 4: departement mathematiques. 1.4 IN PTR sophus.maths.groucho.edu. 17.4 IN PTR erdos.maths.groucho.edu. 23.4 IN PTR gauss.maths.groucho.edu. ... sous-reseau 12: departement de physique, zone separee. 12 IN NS niels.physique.groucho.edu. IN NS gauss.maths.groucho.edu. niels.physique.groucho.edu. IN A 149.76.12.1 gauss.maths.groucho.edu. IN A 149.76.4.23 ... @
Une consequence importante du systeme in-addr.arpa est que les zones ne peuvent ^tre creees que comme sur-ensembles de reseaux IP, et encore pis, que ces masques ree seaux doivent ^tre alignes sur des octets. Tous les sous-reseaux de l'universite Groucho e Marx ont un masque de 255.255.255.0, par consequent une zone in-addr.arpa peut ^tre creee pour chaque sous-reseau. Toutefois, si le masque etait 255.255.255.128, e la creation de zones pour le sous-reseau 149.76.12.128 serait impossible, car il n'y a
38
aucun moyen de dire au DNS que le domaine 12.76.149.in-addr.arpa a ete separe en deux zones d'autorite, avec des h^tes repartis de 1 a 127, et 128 a 255. o
39
Chapitre 3
40
eth0
eth2
eth1
eth3
Pilote SMC
Pilote 3Com
Fig. 3.1 - Les relations entre les interfaces, les pilotes et le materiel.
41
les commandes et les donnees que le noyau envoie doivent passer par ces registres. La memoire d'E/S est generalement decrite en donnant son adresse de depart, ou adresse de base. Les adresses de base typiques pour les cartes Ethernet sont 0x300 ou 0x360. En principe, vous n'avez pas a vous occuper de ces problemes materiels, car le noyau teste ces caracteristiques lors de l'amorcage pour tenter de detecter les peripheriques installes. Il lit plusieurs adresses memoire et compare les donnees trouvees avec ce qu'il devrait voir si certaines cartes Ethernet etaient presentes. Toutefois, il est possible qu'il n'arrive pas a detecter certain materiel c'est parfois le cas avec des cartes Ethernet bon marche qui ne sont pas des clones parfaits des realisations standard d'autres constructeurs. De plus, Linux n'essaiera de detecter que le premier peripherique Ethernet. Si vous utilisez plusieurs cartes, il vous faudra l'indiquer explicitement au noyau. Vous pourrez aussi parfois ^tre oblige d'indiquer au noyau un autre parametre: la e ligne d'IRQ (interruptions materielles). Les peripheriques generent une interruption pour indiquer au noyau qu'ils ont besoin qu'il s'occupe d'eux, par exemple lorsque des donnees sont arrivees ou qu'un evenement special s'est produit. Dans un PC, ces signaux electriques peuvent se produire sur l'une des 15 lignes d'interruption, numerotees de 0 a 15. 1 Le numero du canal d'interruption assigne a un peripherique est appele son IRQ, pour resumer. Comme nous l'avons explique dans le chapitre 2, le noyau accede a un peripherique par l'intermediaire d'une interface. Les interfaces sont des parties logicielles qui o rent un ensemble de fonctions communes pour tout type de materiel, comme l'envoi ou la reception de datagrammes. On les identi e par des noms, de nis directement a l'interieur du noyau ce ne sont pas des chiers decrivant un peripherique comme ceux presents dans le repertoire /dev. Les noms courants pour les interfaces Ethernet sont eth0, eth1, etc. L'assignation des interfaces aux peripheriques depend souvent de l'ordre dans lequel ils ont ete con gures et detectes. Par exemple, la premiere carte Ethernet installee deviendra eth0, la suivante eth1, et ainsi de suite. Les interfaces SLIP et PPP sont gerees di eremment des autres, car elles sont dynamiques : chaque fois qu'une telle connexion est etablie, le noyau assigne une nouvelle interface au port serie concerne. Les relations entre le materiel, les pilotes de peripheriques et les interfaces sont illustrees dans la gure 3.1. Lors de l'amorcage, le noyau a che quels sont les peripheriques qu'il a pu detecter et le nom des interfaces qu'il leur a assigne. Voici un tout petit extrait de ce que l'on peut voir a l'ecran lors du demarrage de Linux :
. . This processor honours the WP bit even when in supervisor mode. Good.
1 Les IRQ 2 et 9 sont les m^mes, car le PC possede deux processeurs d'interruption gerant 8 e lignes chacun, montes en cascade. Le processeur secondaire est connecte a la ligne IRQ 2 du premier.
:
42
Nous voyons que le noyau a ete compile avec le support de TCP/IP et qu'il comprend des pilotes pour SLIP, CSLIP et PPP. La troisieme ligne en partant de la n indique qu'un adaptateur D-Link a ete detecte et installe en tant qu'interface dl0. Si vous avez une carte Ethernet, le noyau a chera une ligne commencant par eth0, suivie par le type de carte detectee, par exemple :
eth0: 3c509 at 0x300 tag 1, BNC port, address 00 60 8c 53 d4 1d, IRQ 15. 3c509.c:1.03 10/8/94 becker@cesdis.gsfc.nasa.gov
Si vous avez installe une carte Ethernet et qu'aucun message de ce type n'appara^t, c'est que le noyau est incapable de detecter la carte correctement. Nous verrons comment remedier a cette situation un peu plus loin.
43
y]
En depit de ce qui est ecrit entre parentheses, vous devez repondre y quel que soit le type de peripherique reseau, Ethernet, SLIP, ou PPP. En repondant y, le support Ethernet est valide automatiquement mais les autres types de pilotes reseau feront l'objet de questions separees.
SLIP (serial line) support? (CONFIG_SLIP) y] SLIP compressed headers (SL_COMPRESSED) y] PPP (point-to-point) support (CONFIG_PPP) y] PLIP (parallel port) support (CONFIG_PLIP) n]
Ces questions concernent les di erentes couches de protocoles supportees par Linux. SLIP permet le transport de datagrammes IP sur les ports serie CSLIP en est une amelioration, les en-t^tes TCP/IP sont compresses. Notez que cette option ne valide e pas automatiquent CSLIP, mais inclut les fonctions necessaires dans le noyau pour pouvoir l'utiliser eventuellement. PPP est un autre protocole utilise pour realiser une liaison reseau a travers des liaisons serie. Il est bien plus souple que SLIP et n'est pas limite a IP il peut tranferer n'importe quel type de paquet reseau. Si cette option n'appara^t pas chez vous, c'est que vous possedez une version peu recente de Linux. PLIP permet d'envoyer des datagrammes IP a travers un port imprimante parallele. Peu performant, il est surtout utilise pour communiquer tant bien que mal avec des PC fonctionnant sous MS-DOS, ou sur des machines portables depourvues de cartes Ethernet. Les questions suivantes concernent les cartes Ethernet de di erents constructeurs. De jour en jour, de nouveaux pilotes appara^ssent et par consequent vous verrez de plus en plus de questions ajoutees a cette section. Si vous desirez realiser un noyau utilisable sur plusieurs machines equipees de cartes di erentes, vous pouvez valider plusieurs pilotes.
NE2000/NE1000 support (CONFIG_NE2000) WD80*3 support (CONFIG_WD80x3) n] y]
44
n]
En n, dans la section consacree aux systemes de chiers, le script de con guration vous demandera si vous voulez le support de NFS, le systeme de chiers par reseau. Il vous permet de monter ou d'exporter des disques durs distants a travers le reseau, ceux-ci apparaissant de maniere transparente comme s'ils etaient locaux, directement connectes a la machine.
NFS filesystem support (CONFIG_NFS_FS) y]
y]
Pour pouvoir utiliser TCP/IP, vous devez repondre y a cette question. Si vous repondez n, vous pourrez toutefois compiler le noyau avec le support IPX.
IP forwarding/gatewaying (CONFIG_IP_FORWARD) n]
Vous devez valider cette option si votre systeme fonctionne en passerelle entre deux reseaux Ethernet, ou encore entre un reseau et un lien SLIP/PPP. Bien qu'il n'y ait aucun inconvenient majeur a laisser cette possibilite en service, vous pouvez preferer ne pas la valider a n de con gurer votre machine en tant que rewall. Les Firewalls sont des h^tes connectes a deux reseaux ou plus, mais qui ne routent aucun tra c o entre eux. Ils sont couramment employes pour o rir des acces Internet a moindres
45
risques pour le reseau local interne. Les utilisateurs sont autorises a se connecter sur le rewall et acceder ainsi a l'Internet, mais les machines locales sont protegees de toute attaque exterieure puisqu'aucune connexion ne pourra traverser ce rewall.
* * (it is safe to leave these untouched) * PC/TCP compatibility mode (CONFIG_INET_PCTCP)
n]
Cette option permet d'eviter de declencher un bogue dans certaines versions de PC/TCP, une implementation commerciale de TCP/IP pour le systeme MS-DOS. Si vous la validez, vous pourrez toujours communiquer avec le reste du monde, mais les performances peuvent devenir mediocres sur les liaisons a faible vitesse.
Reverse ARP (CONFIG_INET_RARP) n]
Ici, il s'agit de valider ou non le protocole RARP (Reverse Address Resolution Protocol). Il sert aux stations diskless et aux terminaux X, qui ont besoin d'obtenir leur adresse IP au demarrage. Vous ne devez valider RARP que si vous compter utiliser de tels clients.
Assume subnets are local (CONFIG_INET_SNARL) y]
Lorsqu'il envoie des donnees par TCP, le noyau doit les tronconner en plusieurs paquets avant de les passer a la couche IP. Pour les h^tes pouvant ^tre atteints par un o e reseau local comme l'Ethernet, il creera des paquets plus grands que pour ceux qui vont parcourir une longue distance 2 . Si vous ne validez pas SNARL ((( SubNets ARe Local )), les sous-reseaux sont locaux), le noyau considerera qu'un reseau n'est local que s'il y a une interface y etant directement rattachee. Toutefois, si vous regardez le reseau de classe B de l'universite Groucho Marx, la totalite de cette classe B est locale, mais la plupart des h^tes sont interfaces avec seulement un ou deux sous-reseaux. Si o vous validez SNARL, le noyau pourra considerer que tous les sous-reseaux sont locaux et utiliser de grands paquets avec toutes les machines du campus. Si vous avez besoin de paquets de plus petite taille en direction de certains h^tes (parce o que les donnees passent par exemple par une liaison modem SLIP), vous pourrez le faire gr^ce a l'option mtu de la commande route, qui est brievement decrite a la n a de ce chapitre.
Disable NAGLE algorithm (normally enabled) (CONFIG_TCP_NAGLE_OFF) n]
L'algorithme de Nagle permet d'eviter d'envoyer des paquets IP particulierement petits, appeles tinygrams. Ils sont souvent crees par les outils interactifs qui ont a
2 Cette methode permet d'eviter la fragmentation par des liens qui ont une taille de paquet maximale tres reduite.
:
46
transmettre par le reseau tres peu de donnees a la fois, comme telnet ou rsh. Sur des liaisons lentes, comme celles realisees par modem, ils constituent une perte de debit importante. Cet algorithme tente d'eviter ce phenomene en retenant la transmission de donnees TCP quelques instants, en certaines circonstances. Vous n'aurez besoin de supprimer cette fonction que si vous avez de serieux et frequents problemes de perte de datagrammes.
The IPX protocol (CONFIG_IPX) n]
Cette option valide le support de IPX, le protocole de transport utilise par les reseaux Novell. Il est toujours en developpement, et n'est pas tres utilisable pour l'instant. Le developpement est bloque en raison du manque d'information disponible sur les di erentes couches de ce protocole, qui n'est pas du domaine public : les speci cations sont vendues a un prix inadmissible, et selon une clause de non-divulgation. Si la situation se debloque, il sera peut-^tre possible dans l'avenir d'echanger des donnees e avec des utilitaires MS-DOS utilisant IPX et de router du tra c entre des reseaux Novell a travers une liaison PPP. A partir de la version 1.1.16, Linux o re un nouveau type de pilote, le pilote dummy que l'on peut traduire par (( bidon )), vous allez voir pourquoi. La question suivante appara^t vers le debut de la section concernant les pilotes reseau :
Dummy net driver support (CONFIG_DUMMY) y]
Ce pilote ne fait pas grand-chose, mais il est tres utile sur des machines isolees ou reliees uniquement en SLIP ou PPP. C'est, en resume, une interface loopback supplementaire, qui permet aux machines faisant du SLIP mais n'ayant aucune liaison Ethernet, d'avoir une interface correspondant en permanence a votre adresse IP. Vous trouverez des explications plus detaillees sur le sujet dans la section The Dummy Interface du chapitre 5, a la page 74.
L'interface locale loopback. Utilisee a des ns de tests, ou par quelques applications reseau. Elle fonctionne comme un circuit ferme dans lequel tout datagramme ecrit sera immediatement retourne a la couche
47
eth0, eth1: : : dl0, dl1: : : sl0, sl1: : : ppp0, ppp1: : : plip0, plip1: : :
reseau du systeme. Il y a toujours une interface loopback presente dans le noyau, et il n'y a que peu d'inter^t a en disposer de plusieurs. e Cartes Ethernet. Il s'agit du nom generique de la plupart de ces peripheriques. Ces interfaces permettent d'acceder a un adaptateur de poche D-Link DE-600, un autre peripherique Ethernet. Il est un peu special, en ce sens qu'il est pilote par le port imprimante parallele du PC. Interfaces SLIP. Elles sont associees aux ports serie, dans l'ordre ou elles sont allouees pour une liaison SLIP. Le noyau supporte jusqu'a quatre interfaces de ce type (16 sur option dans les versions recentes). Interfaces PPP. Tout comme les precedentes, elles sont associees a chaque port serie passe en mode PPP. Pour l'instant, il peut y en avoir jusqu'a quatre, ou plus en modi ant legerement le code source. Interfaces PLIP, permettant de transporter des datagrammes IP par les ports imprimante parallele. Jusqu'a trois interfaces de ce type sont supportees elles sont allouees par le pilote PLIP au moment de l'amorcage du systeme, pour chaque port parallele.
Lorsque d'autres pilotes de peripheriques verront le jour, comme ISDN, AX.25 (qui sont en stade alpha de developpement), ou autres, de nouveaux noms feront leur apparition. Dans les sections suivantes, nous allons aborder en detail l'utilisation des pilotes decrits ci-dessus.
48
et vous ne devez pas creer de branches (c'est-a-dire de connexion en etoile). Si vous employez un c^ble coaxial avec des connecteurs en (( T )), ces connecteurs doivent ^tre a e branches directement sur la carte Ethernet : vous ne devez jamais inserer un c^ble a a cet endroit. Si vous vous connectez sur un (( gros )) Ethernet, vous devrez brancher votre machine par l'intermediaire d'un transceiver (appele quelquefois Ethernet Attachment Unit). Il peut se brancher dans la prise AUI a 15 broches de votre carte Ethernet. Mais il est aussi possible d'employer un c^ble blinde entre le transceiver et la prise AUI. a
49
Pour utiliser l'une de ces cartes sous Linux, vous pouvez employer un noyau precompile en provenance de l'une des principales distributions binaires du systeme tous les pilotes correspondants y sont generalement integres. Toutefois, a terme, la meilleure solution sera de vous compiler votre propre noyau avec la con guration exacte dont vous aurez besoin.
50
lilo.conf. Pour informer Linux de la presence d'une carte Ethernet particuliere, vous pouvez mettre :
ether=irq,adresse,param1,param2,nom
Les quatre premiers parametres sont numeriques, le dernier est le nom du peripherique. Toutes les valeurs numeriques sont optionnelles si l'une d'elles est omise ou initialisee a zero, le noyau tentera de la detecter automatiquement ou utilisera une valeur par defaut. Le premier parametre ajuste la ligne d'IRQ assignee au peripherique. Par defaut, le noyau tentera une autodetection le pilote pour 3c503 a la particularite de selectionner une IRQ libre parmi les IRQ 5, 9, 3 et 4, et con gure la carte pour cette valeur. Le parametre adresse donne l'adresse de base d'entrees/sorties de la carte la valeur zero indique qu'il faudra tenter une detection automatique aux adresses citees plus haut. Les deux parametres restants peuvent avoir di erentes signi cations selon les pilotes. Pour ce qui est des cartes utilisant de la memoire partagee, comme les WD80x3, ils speci ent le debut et la n de cette zone de memoire. D'autres cartes utilisent param1 pour ajuster le niveau des messages de deboguage a ches. Les valeurs de 1 a 7 correspondent a une verbosite croissante, alors que 8 les supprimera tous 0 denote la valeur par defaut. Les pilotes 3c503 utilisent param2 pour selectionner le transceiver interne (defaut) ou un bo^tier externe (avec une valeur de 1). Le premier utilise le connecteur BNC, le second le port AUI de la carte. Si vous avez deux cartes Ethernet, vous pouvez laisser Linux detecter la premiere et passer les parametres pour la seconde par lilo. Vous devez toutefois faire attention que le pilote ne trouve pas accidentellement la seconde carte avant la premiere, vous disposez pour cela de l'option reserve de lilo, qui indique explicitement au noyau d'eviter de tester l'espace d'E/S occupe par cette seconde carte. Par exemple, pour que Linux installe un second adaptateur Ethernet a 0x300 en tant que eth1, vous passerez les parametres suivants :
reserve=0x300,32 ether=0,0x300,eth1
L'option reserve permet d'^tre assure qu'aucun pilote ne tentera d'acceder a l'espace e d'entrees/sorties de la carte pour tenter d'autodetecter quelque peripherique. Vous pouvez egalement utiliser les parametres du noyau pour forcer l'autodetection de eth0 :
reserve=0x340,32 ether=0,0x340,eth0
Pour supprimer toute detection automatique, vous pouvez speci er un argument adresse de valeur -1 :
ether=0,-1,eth0
51
Si vous avez con gure votre port parallele di eremment, vous devrez changer ces valeurs dans le chier drivers/net/Space.c des sources du noyau de Linux et recompiler une nouvelle version. Les ports imprimante restent utilisables normalement : ils ne sont pris en charge par le pilote PLIP que lorsque l'interface correspondante est con guree (( up )).
5 NCSA telnet est un celebre programme pour MS-DOS qui fournit TCP/IP sur Ethernet ou PLIP, et supporte telnet et FTP.
:
52
53
Chapitre 4
54
En dehors des emulateurs de terminaux, il existe aussi des programmes utilisant une liaison serie non interactive pour transporter des donnees entre ordinateurs. En e et, il est beaucoup plus rapide de telecharger de maniere automatique quelques douzaines de kilo-octets que de lire votre courrier en restant connecte, par exemple. En contrepartie, cela demande bien plus de place disque en raison des informations inutiles que vous ne lirez pas, mais transfererez quand m^me particulierement dans les News Usenet. e Le meilleur exemple de ce type de logiciels de communication est UUCP. Il s'agit d'une serie de programmes qui copient des chiers entre ordinateurs, executent des commandes sur la machine distante, etc. UUCP est frequemment utilise pour le transport du courrier electronique et de Usenet dans les reseaux prives. L'ensemble TaylorUUCP, de Ian Taylor, qui fonctionne aussi sous Linux, sera decrit dans le chapitre suivant. Il existe d'autres logiciels non interactifs du m^me genre, utilises sur le reseau e de BBS Fidonet, et des portages Linux sont disponibles, comme par exemple ifmail. SLIP se situe entre les deux, permettant un usage interactif ou non. Beaucoup utilisent SLIP pour appeler leur fournisseur de services IP a n de se connecter a l'Internet, ou pour acceder a tout autre reseau prive. Ce protocole peut aussi ^tre employe pour e des liaisons permanentes entre deux reseaux, bien que ce ne soit vraiment interessant que par ISDN 2 .
55
diverses disciplines de ligne, qui permettent de changer completement le comportement du peripherique. Par exemple, le pilote SLIP de Linux est implemente au moyen d'une discipline de ligne speciale. La mesure de la vitesse d'une ligne serie est un peu ambigue. En principe, il s'agit du nombre de bits par seconde (bps). Quelquefois, vous entendrez des gens exprimer cette vitesse en bauds, ce qui est incorrect. Ces deux termes ne sont pas interchangeables: les bauds se referent a une caracteristique physique de quelque peripherique, la frequence a laquelle des impulsions sont transmises. Les bits par seconde denotent une caracteristique d'une connexion serie existant entre deux points, mesurant le nombre moyen de bits transmis en une seconde. Il est important de savoir que ces deux valeurs sont generalement di erentes, car beaucoup de peripheriques encodent plusieurs bits par impulsion electrique.
Si vous n'avez rien de tout cela sur votre systeme, vous allez devoir les creer.
Certains suggerent de creer un lien symbolique du nom de /dev/modem vers le peripherique ou le modem est connecte, de sorte que les utilisateurs occasionnels n'aient pas a se souvenir de noms aussi peu intuitifs que /dev/cua1. Toutefois, vous ne devrez pas utiliser /dev/modem dans un programme et le vrai /dev/cua1 dans un autre, car certains logiciels emploient parfois des chiers de verrouillage pour signaler l'utilisation du peripherique. Par convention, ces chiers portent un nom derive par exemple ce sera LCK..cua1 pour indiquer que /dev/cua1 est occupe. Si di erents programmes accedaient au m^me modem par di erents noms de peripheriques, ils ne pourraient e pas reconna^tre leurs chiers de verrouillage les uns des autres, et les applications ne fonctionneraient pas correctement.
57
entendu tous ces circuits, ainsi que le 8250, qui fut le premier ERAU a equiper les ordinateurs de type PC. Dans la con guration par defaut, le noyau teste les quatre ports serie standard COM1 a COM4. Ils se verront assigner les nombres mineurs 64 a 67, comme nous l'avons vu plus haut. Si vous voulez con gurer vos ports serie correctement, il vous faudra installer le programme setserial de Ted Tso's, ainsi que le script /etc/rc.serial qui sera execute au demarrage du systeme. Voici un exemple d'un tel script :
# /etc/rc.serial - script de configuration des ports serie. # # Detection interruptions /sbin/setserial -W /dev/cua* # Configuration /sbin/setserial /sbin/setserial /sbin/setserial /sbin/setserial des peripheriques /dev/cua0 auto_irq /dev/cua1 auto_irq /dev/cua2 auto_irq /dev/cua3 auto_irq
Consultez la documentation fournie avec setserial pour avoir une explication detaillee des parametres a employer. Si votre carte serie n'est pas detectee, ou si la commande setserial -bg montre une con guration erronee, vous devrez forcer les valeurs correctes en les indiquant explicitement. Ce probleme se produit parfois avec des modems internes equipes de circuits Rockwell. Si, par exemple, l'ERAU est detecte comme etant un NSC 16450, alors qu'il s'agit en realite d'un compatible NSC 16550, vous devrez modi er la con guration du port en question ainsi :
/sbin/setserial /dev/cua1 auto irq skip test autoconfig uart 16550
Il existe des options similaires pour forcer le port de communication, l'adresse de base, et la ligne d'IRQ utilisee. Lisez la page de manuel de setserial(8) pour plus de details. Si votre modem supporte le contr^le de ux materiel, assurez-vous qu'il soit bien en o service. Les programmes de communications n'essaient pas de le valider par defaut vous devez, aussi etonnant que cela puisse para^tre, le faire manuellement. La meilleure solution est de le mettre en service au lancement du systeme en mettant dans le chier rc.serial une commande stty comme ceci :
$ stty crtscts </dev/cua1
58
Cette commande vous a chera le parametrage du port serie concerne avec tous les details chaque drapeau est a che, avec un signe negatif s'il est invalide. Vous devrez trouver dans la liste, crtscts. Si vous voyez -crtscts, c'est que le contr^le de ux o n'est pas en service.
59
Chapitre 5
60
et d'executer (( mount /proc )) depuis votre script /etc/rc. Ce procfs est maintenant con gure dans la plupart des noyaux par defaut. S'il ne l'est pas dans le v^tre, vous obtiendrez un message du genre : (( mount: fs type procfs o not supported by kernel ) (systeme de chiers type procfs non supporte par le ) noyau). Il vous faudra dans ce cas recompiler ce noyau en repondant (( yes )) lorsque la con guration vous demandera si vous desirez le support de procfs. Un dernier mot a propos de procfs. Bien qu'apparaissant comme n'importe quel repertoire, contenant des chiers textes ou binaires de toutes tailles, vous ne devez pas vous inquieter pour votre precieux espace disque dur : ce ne sont que des chiers virtuels, simules par le noyau. Le tres gros kcore, par exemple, correspond simplement a toute la memoire dont vous disposez plus vous aurez de RAM, plus il sera gros, mais il n'occupe aucune place disque.
61
de recompiler l'ensemble, mais quelquefois il vous faudra quand m^me changer tous e les programmes. L'ensemble est generalement distribue parallelement aux nouvelles sources du noyau, dans des chiers appeles net-XXX.tar.gz, ou varXXX correspond au numero de version. Pour Linux 1.0, il s'agit de 0.32b. Le dernier noyau, a l'heure ou nous ecrivons ces lignes (1.1.72 et plus), necessite au minimum net-tools-1.1.56.tar.gz. Si vous desirez compiler et installer les applications TCP/IP standard vous-m^me, e vous en trouverez les sources sur la plupart des serveurs FTP ou BBS di usant Linux. Ce sont des versions plus ou moins modi ees des programmes de Net-BSD ou quelques autres sources. D'autres grosses applications, comme Mosaic, Archie, Gopher ou IRC doivent ^tre obtenues separement, comme pour tout autre systeme UNIX. La plupart e se compilent sans modi cation sous Linux si vous suivez correctement les instructions. Le site FTP o ciel de Net-3 est sunacm.swan.ac.uk, repris par sunsite.unc.edu dans le repertoire system/Network/sunacm. Le code derive de BSD par Matthias Urlich peut ^tre obtenu sur ftp.ira.uka.de dans /pub/system/linux/netbsd. En France, e allez d'abord voir sur ftp.ibp.fr, le repertoire /pub/linux contient des miroirs de di erents sites vous ne devriez pas avoir besoin d'utiliser de co^teuses liaisons interu nationales pour vous procurer du code source Linux.
62
la commande hostname pour initialiser le nom d'h^te a la valeur nom, elle doit ^tre o e invoquee ainsi :
# hostname nom
La pratique courante est d'indiquer ici le nom d'h^te non quali e, c'est-a-dire sans o speci er le nom de domaine. Par exemple, les machines de (( La biere virtuelle )) peuvent s'appeler trappiste.bibine.com, kro.bibine.com, etc. Ce sont leurs noms o ciels, pleinement quali es. Leur noms d'h^tes locaux seraient alors uniquement la premiere o composante, comme trappiste. Toutefois, comme le nom local est frequemment utilise pour trouver l'adresse IP de la machine, vous devez vous assurer que le resolver soit capable de le faire cela signi e que vous devez indiquer ce nom dans le chier /etc/hosts. Certains suggerent d'utiliser la commande domainname pour indiquer au noyau quel est le nom de domaine, la partie restante du FQDN. Ainsi, il serait possible de combiner la sortie de hostname et de domainname pour obtenir le nom quali e. Pourtant, cette solution n'est qu'a moitie correcte : la commande domainname est normalement utilisee pour initialiser le domaine NIS de la machine, qui peut ^tre totalement di ee rent du domaine DNS auquel cet h^te appartient. o
63
Form ))) a hostmaster@internic.net, ou au NIC ((( Network Information Center ))) de votre pays s'il en existe un. Si votre reseau n'est pas connecte a l'Internet et n'y sera pas dans un avenir proche, vous ^tes libre de choisir n'importe quelle adresse valide. Assurez-vous simplement e que jamais aucun de vos datagrammes internes ne s'echappe vers le vrai Internet. Pour en ^tre vraiment s^r, il vaut mieux utiliser l'une des adresses reseau reservees e u pour les usages prives. Le IANA (Internet Assigned Numbers Authority), la (( haute autorite )) regissant l'attribution des adresses sur l'Internet, a mis au point plusieurs adresses reseau de classes A, B et C que vous pouvez utiliser librement sans avoir a vous enregistrer o ciellement. Elles ne sont valides qu'a l'interieur de votre reseau prive et ne sont jamais routees entre les vrais sites Internet. Ces valeurs, de nies dans le RFC 1597, sont :
Notez que les deuxieme et troisieme blocs contiennent respectivement 16 et 256 reseaux. Choisir vos adresses dans l'un de ces reseaux n'est pas seulement utile lorsque vous ^tes isole de l'Internet vous pouvez aussi realiser un acces bien plus restrictif en e employant une machine en tant que passerelle. Pour votre reseau local, la passerelle sera accessible par son adresse IP interne, alors que le reste du monde la conna^tra par une adresse o cielle d^ment enregistree (que votre fournisseur de services vous u aura attribuee par exemple). Nous reviendrons sur ce type de con guration lorsque nous parlerons de SLIP, dans le chapitre 7 (page 101). Pour toute la suite de cet ouvrage, nous considererons que l'administrateur reseau de (( La biere virtuelle )) utilise un reseau de classe B, disons 172.16.0.0. Bien s^r, u une classe C aurait largement su pour satisfaire les besoins de nos brasseurs et viticulteurs virtuels. Nous avons choisi une classe B pour des raisons de simplicite, cela rendra les exemples de sous-reseaux de la section suivante bien plus faciles a comprendre.
64
191 72 0
191 72 1
191 72 2
Sous-reseau brasseurs
Passerelle
Sous-reseau viticulteurs
monde exterieur, vous n'avez pas besoin de creer de sous-reseaux: nous expliquerons pourquoi dans le chapitre 7. Pour gerer les deux reseaux locaux Ethernet, l'administrateur des brasseurs virtuels a decide d'utiliser 8 bits de la partie h^te comme bits additionnels de sous-reseau. o Cela lui laisse 8 autres bits pour la partie h^te, permettant 254 machines sur chacun o des sous-reseaux. Il assigne alors le sous-reseau numero 1 aux brasseurs, et donne le numero 2 aux viticulteurs. Leurs adresses reseaux respectives sont alors 172.16.1.0 et 172.16.2.0. Le masque de sous-reseau vaut 255.255.255.0. La machine kro, qui est la passerelle entre les deux reseaux, se voit attribuer un nombre d'h^te de 1 sur chacun d'eux, ce qui donne respectivement les adresses IP o 172.16.1.1 et 172.16.2.1. La gure 5.1 illustre la situation, montrant la passerelle et les deux sous-reseaux. Notez que dans cet exemple, nous utilisons un reseau de classe B pour simpli er les choses une classe C serait plus realiste. Sous les versions recentes de Linux, les sousreseaux ne sont pas bornes sur 8 bits, par consequent m^me un reseau de classe C peut e ^tre tronconne en plusieurs sous-reseaux. Par exemple, vous pourriez utiliser 2 bits e de la partie h^te pour le masque reseau, ce qui vous donnerait quatre sous-reseaux o possibles comportant chacun 64 machines 1 .
1 Le dernier nombre de chaque reseau est reserve a l'adresse de di usion, donc il ne s'agirait en realite que de 63 machines possibles par sous-reseau.
:
65
La con guration de la bibliotheque resolver sera traitee en detail dans le chapitre 6. Le chier hosts contient une entree par ligne, consistant en une adresse IP, un nom d'h^te, et une liste facultative d'alias permettant d'appeler plus facilement cette mao chine par tout autre nom. Les champs sont separes par des espaces ou des tabulations, et tout ce qui suivra un signe diese (#) sera considere comme commentaire et sera ignore. Les noms d'h^tes peuvent ^tre quali es ou relatifs au domaine local. Dans le cas o e de trappiste, on met generalement le nom quali e, trappiste.bibine.com, puis trappiste seul, de maniere a ce que la machine soit connue aussi bien par son nom pleinement quali e que par son petit nom local. Voici un exemple de ce que pourrait ^tre un chier hosts de l'entreprise (( La biere e virtuelle )) : deux noms speciaux ont ete ajoutes, kro-if1 et kro-if2, qui donnent les adresses des deux interfaces utilisees sur kro.
2 Vous n'aurez besoin de l'adresse des serveurs NIS que si vous utilisez la version NYS de Peter Eriksson. Les autres implementations de NIS trouvent leurs serveurs en cours de route, simplement en utilisant ypbind.
:
66
# # Fichier hosts # # IP # 127.0.0.1 # 172.16.1.1 172.16.1.2 172.16.1.3 # 172.16.2.1 172.16.2.2 172.16.2.3 172.16.2.4
Tout comme avec les adresses IP des machines, vous aurez parfois besoin d'utiliser un nom symbolique pour designer les adresses reseau. Par consequent, le chier /etc/hosts est accompagne d'un chier semblable, /etc/networks, qui est son equivalent pour les reseaux. Chez nos brasseurs, nous pourrions installer un chier networks comme celuici 3 :
# /etc/networks de la societe biere-net 172.16.1.0 pinard-net 172.16.2.0 La biere virtuelle.
3 Les noms du chier networks ne doivent pas entrer en con it avec ceux du chier hosts, sous peine de reactions tres bizarres de certains programmes.
:
67
Cette commande assignera l'adresse adresse-ip a interface, et activera celle-ci. Tous les autres parametres seront mis a des valeurs par defaut. Par exemple, le masque reseau sera derive de la classe du reseau de l'adresse IP, comme 255.255.0.0 pour une adresse de classe B. La commande ifcon g est decrite en detail a la n de ce chapitre. La commande route, quant a elle, permet d'ajouter ou de supprimer des entrees dans la table de routage du noyau sa syntaxe est (en partie) la suivante :
route add|del] cible
Les arguments add et del determinent l'action a e ectuer : add ajoute la route vers cible, alors que del la supprime.
Occasionnellement, vous rencontrerez aussi le nom localhost utilise a la place de cette adresse IP. Le programme ifcon g cherchera ce nom dans le chier /etc/hosts, ou une entree doit le declarer comme etant le nom correspondant a l'adresse 127.0.0.1 :
# Exemple d'entree du fichier /etc/hosts pour localhost localhost 127.0.0.1
Pour voir quelle est la con guration courante d'une interface, appelez simplement ifcon g en lui passant le nom de l'interface en argument :
$ ifconfig lo lo Link encap Local Loopback inet addr 127.0.0.1 Bcast NONE SET] Mask 255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU 2000 Metric 1 RX packets 0 errors 0 dropped 0 overrun 0 TX packets 0 errors 0 dropped 0 overrun 0
Comme vous le voyez, l'interface loopback s'est vu assigner un masque reseau de 255.0.0.0, puisque 127.0.0.1 est une adresse de classe A. Aucune adresse de di usion n'est positionnee, et il n'y en a de toutes facons pas vraiment besoin avec cette interface si particuliere. Toutefois, si vous utilisez le demon rwhod sur cette machine, vous pourrez avoir besoin d'initialiser l'adresse de di usion de l'interface loopback pour que ce programme fonctionne correctement. Vous trouverez comment faire dans la section (( Tout sur ifcon g )), un peu plus loin dans ce chapitre.
68
Maintenant, vous pouvez presque commencer a jouer avec votre (( mini-reseau )). Il ne manque qu'une chose : une entree dans la table de routage qui indique a IP qu'il peut utiliser cette interface comme route vers 127.0.0.1. On lui indique par :
# route add 127.0.0.1
La encore, vous pouvez indiquer le nom localhost au lieu de l'adresse IP. Ensuite, vous devez tester que tout marche bien, par exemple en utilisant ping. Le programme ping est un peu l'equivalent d'un sonar pour le reseau 4. On emploie ping pour veri er qu'il est bien possible d'atteindre une adresse donnee, et pour mesurer le temps de propagation entre le moment ou l'on envoie un datagramme et ou il nous revient. On appelle parfois ce delai le (( temps moyen de propagation )), ou (( round-trip time )).
# ping localhost PING localhost (127.0.0.1): 56 data 64 bytes from 127.0.0.1: icmp_seq=0 64 bytes from 127.0.0.1: icmp_seq=1 64 bytes from 127.0.0.1: icmp_seq=2 ^C bytes ttl=32 time=1 ms ttl=32 time=0 ms ttl=32 time=0 ms
--- localhost ping statistics --3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0/0/1 ms
En appelant ping comme ci-dessus, il emettra des paquets inde niment jusqu'a ce qu'il soit interrompu par l'utilisateur. Le ^C visible dans l'exemple correspond au moment ou le programme a ete arr^te par Ctrl-C 5 . e Notre exemple montre que les paquets a destination de 127.0.0.1 sont correctement delivres et qu'une reponse nous est retournee quasi instantanement. Cela prouve que nous avons reussi a con gurer notre premiere interface reseau. Si la sortie que vous obtenez de ping ne ressemble pas a ce qui est montre ci-dessus, c'est que vous avez un probleme quelque part. Veri ez que les programmes ifcon g et route que vous utilisez sont compatibles avec la version du noyau, et avant tout, que ce noyau a bien ete compile avec le support du reseau (vous pouvez le veri er par la presence du repertoire /proc/net). Si vous obtenez le message d'erreur (( Network unreachable )), signi ant que le reseau est inaccessible, c'est que vous vous ^tes e probablement trompe en tapant la commande route. Veri ez que vous utilisez bien la m^me adresse que celle indiquee a ifcon g. e Les etapes que nous venons de voir sont su santes pour faire fonctionner des applications reseau sur une machine isolee. Apres avoir ajoute les lignes de con guration
4 Souvenez-vous... (( Echoes )), Pink Floyd... 5 Certaines implementations de ping necessitent la commande resultat, typiquement celles des systeme BSD.
: :
ping -s
69
que nous avons vues dans le chier rc.inet1 et vous ^tre assure que ces scripts rc.inet e sont bien appeles depuis /etc/rc, vous pouvez reamorcer votre machine et essayer differentes applications. Par exemple, (( telnet localhost )) devrait etablir une connexion avec votre propre machine, en vous proposant une invite login. L'interface loopback n'est pas utile qu'en tant qu'exemple dans les livres sur le reseau, ou comme test de con guration. Elle est utilisee par quelques applications lors du fontionnement normal 6 . Par consequent, vous devez toujours la con gurer, que votre machine soit connectee a un reseau ou non.
Cette commande assigne l'adresse IP de gueuze (172.16.1.2) a l'interface eth0. Si nous avions omis le masque reseau, ifcon g l'aurait deduit de la classe de l'adresse reseau, ce qui aurait donne 255.255.0.0. Une petite veri cation nous donne maintenant :
# ifconfig eth0 eth0 Link encap 10Mps Ethernet HWaddr 00:00:C0:90:B3:42 inet addr 172.16.1.2 Bcast 172.16.1.255 Mask 255.255.255.0 UP BROADCAST RUNNING MTU 1500 Metric 1 RX packets 0 errors 0 dropped 0 overrun 0 TX packets 0 errors 0 dropped 0 overrun 0
Vous pouvez voir que ifcon g initialise automatiquement l'adresse de di usion (le champ Bcast ci-dessus) selon la methode usuelle, en mettant a 1 tous les bits de la partie h^te de l'adresse reseau. De plus, le MTU ((( Maximum Transfer Unit )), la o taille maximale des trames Ethernet que le noyau generera pour cette interface) a ete positionne a 1 500 octets. Toutes ces valeurs peuvent ^tre forcees par des options e speciales que nous decrirons plus tard. Tout comme avec l'interface loopback, nous devons installer une entree dans la table de routage pour informer le noyau de ce reseau accessible par eth0. Chez nos brasseurs virtuels, il faudra donc taper la commande route suivante :
# route add -net 172.16.1.0
6 Par exemple, toutes les applications basees sur les RPC utilisent l'interface loopback pour s'enregistrer aupres du demon portmapper au demarrage du systeme.
:
70
A premiere vue, cela semble tenir de la magie, puisqu'il n'appara^t pas clairement comment route peut detecter par quelle interface cette route doit passer. Pourtant, le truc est simple : le noyau regarde toutes les interfaces qui ont ete con gurees et compare l'adresse de destination (172.16.1.0 dans ce cas) avec la partie reseau de l'adresse de l'interface (c'est-a-dire, un (( ET )) bit a bit entre l'adresse de l'interface et le masque reseau). La seule qui correspond est eth0. Mais qu'est-ce que cette option -net est donc censee faire ? Elle est utilisee car route peut traiter aussi bien des routes vers des reseaux que des routes vers de simples h^tes o (comme vous l'avez vu plus haut dans le cas de localhost). Lorsqu'on lui passe une adresse en notation sur 4 octets, le programme tente de deviner s'il s'agit d'un reseau ou d'un h^te, en regardant les bits de la partie h^te. Si cette partie h^te de l'adresse o o o vaut zero, route considere qu'il s'agit d'un reseau et d'une adresse d'h^te dans le cas o contraire. Par consequent, route penserait que 172.16.1.0 est un h^te et non pas un o reseau, car le programme ne sait pas que nous utilisons un sous-reseau. Nous devons donc lui indiquer explicitement qu'il s'agit d'un reseau, en lui passant l'option -net. Bien s^r, la commande ci-dessus est un peu penible a taper, et peut entra^ner des u fautes de frappe. Une approche plus pratique consiste a employer les noms de reseaux que nous avons de nis dans le chier /etc/networks auparavant. Du coup, notre commande devient plus lisible et l'on peut m^me supprimer l'option -net puisque route e sait maintenant que 172.16.1.0 correspond a un reseau.
# route add biere-net
Maintenant que nous avons termine les etapes de base de la con guration, nous allons veri er que notre interface Ethernet fonctionne correctement. Choisissez un h^te o connecte a votre reseau local, par exemple kro, et tapez :
# ping kro PING kro: 64 byte packets 64 bytes from 172.16.1.1: 64 bytes from 172.16.1.1: 64 bytes from 172.16.1.1: 64 bytes from 172.16.1.1: ^C icmp_seq=0. icmp_seq=1. icmp_seq=2. icmp_seq=3. time=11. ms time=7. ms time=12. ms time=3. ms
----gueuze.bibine.com PING Statistics---4 packets transmitted, 4 packets received, 0% packet loss round-trip (ms) min/avg/max = 3/8/12
Si vous ne voyez pas quelque chose ressemblant a cela sur votre ecran, c'est sans nul doute que quelque chose ne va pas. Si vous rencontrez un taux inhabituel de paquets perdus, il s'agit probablement d'un probleme materiel, comme des resistances de terminaison absentes, un c^blage incorrect, voire... l'oubli de connecter la machine a au reseau. Si vous ne recevez aucun paquet, testez la con guration de l'interface par la commande netstat. Les statistiques sur les paquets emis et recus a ches par ifcon g devraient vous indiquer si, au moins, des datagrammes ont ete envoyes. Si vous avez
71
un acces physique a la machine distante, allez voir egalement les statistiques qu'elle indique. Vous pourrez ainsi determiner exactement ou les paquets se sont perdus. De plus, veri ez les informations de routage par la commande route pour voir si les deux h^tes sont correctement con gures a ce niveau. Invoquee sans arguments, route a che o la totalite de la table de routage du noyau (l'option -n lui fait a cher les adresses IP au lieu des noms des machines) :
# route -n Kernel routing table Destination Gateway 127.0.0.1 * 172.16.1.0 * Genmask Flags Metric Ref 255.255.255.255 UH 1 0 255.255.255.0 U 1 0 Use 112 10 Iface lo eth0
La signi cation detaillee de ces champs est expliquee plus loin, dans la section (( La commande netstat )). La colonne Flag contient une liste des drapeaux positionnes pour chaque interface : U signi e qu'elle est active, et H indique que l'adresse de destination est un h^te. Si le drapeau H est mis alors que vous vouliez que cette route soit une route o reseau, il vous faut retaper la commande route avec l'option -net. Pour veri er qu'une route est utilisee, testez si la valeur indiquee dans le champ Use de l'avant-derniere colonne s'incremente entre deux invocations de ping.
Bien entendu, chaque machine du reseau des viticulteurs a laquelle vous voudrez parler devra comporter une route correspondante vers le reseau des brasseurs. Sinon, vous ne pourriez qu'envoyer des donnees depuis gueuze vers, par exemple, gamay mais aucune reponse de cette derniere ne pourrait revenir, les paquets etant irremediablement perdus.
72
Cet exemple ne decrit qu'une passerelle permettant l'echange de datagrammes entre deux reseaux Ethernet isoles. Maintenant, supposons que kro soit aussi connectee a l'Internet (disons, par une liaison supplementaire SLIP). Nous voudrions alors que les datagrammes a destination de n'importe quel reseau autre que celui des brasseurs soit passes a kro. On peut realiser cela en la declarant comme passerelle par defaut :
# route add default gw kro
Le nom de reseau default est un raccourci pour indiquer 0.0.0.0, qui denote la route par defaut. Vous n'avez pas besoin d'ajouter ce nom au chier /etc/networks, il est integre directement dans la commande route. Si vous constatez de nombreuses pertes de paquets en essayant ping vers une machine situee a une ou plusieurs passerelles de la, ce peut ^tre le signe d'un reseau tres charge. e La perte de datagrammes n'est pas tellement le fait de de ciences techniques, mais elle est surtout liee aux exces momentanes de charge sur les passerelles, qui peuvent entra^ner un temps de transfert inconsiderement long, voire l'omission de quelques paquets.
La serie de commandes a invoquer pour con gurer les deux interfaces devient alors :
# # # # ifconfig eth0 kro-if1 ifconfig eth1 kro-if2 route add biere-net route add pinard-net
73
une liaison point-a-point, car ce type de liaison met en jeu deux h^tes ((( points ))), o par opposition aux grands reseaux. Prenons un exemple. Admettons que l'un des employes de (( La biere virtuelle )) possede un ordinateur portable, connecte a kro par PLIP. Le portable s'appelle le e et ne possede qu'un seul port parallele. A l'amorcage, ce port parallele sera enregistre en tant que plip1. Pour activer le lien, vous devrez con gurer l'interface plip1 a l'aide des commandes suivantes 7 :
# ifconfig plip1 leffe pointopoint kro # route add default gw kro
La premiere commande con gure l'interface, signalant au noyau qu'il s'agit d'une liaison point-a-point, l'autre c^te ayant l'adresse de kro. La seconde installe la route o par defaut, utilisant kro comme passerelle. Sur cette derniere, une commande ifcon g similaire sera necessaire pour activer la liaison (route n'est pas utile ici) :
# ifconfig plip1 kro pointopoint leffe
Ce qui est interessant ici, c'est que l'interface plip1 sur kro n'a pas une adresse IP separee, mais peut aussi se voir attribuer l'adresse 172.16.1.1 8. Nous avons donc maintenant con gure le routage du portable vers le reseau des brasseurs mais il nous faut encore trouver une methode pour router les paquets de n'importe quel h^te de ce reseau vers le e. Une solution particulierement lourde consiste o a rajouter une route speci que sur chaque h^te de ce reseau, declarant kro comme o passerelle vers le e :
# route add leffe gw kro
7 Notez bien que pointopoint n'est pas une faute typographique c'est vraiment le nom de l'option. 8 Par precaution, ne con gurez toutefois de liaisons PLIP, SLIP ou PPP que lorsque vous avez completement initialise les tables de routages pour vos reseaux. Avec certaines anciennes versions de Linux, votre route reseau pourrait se mettre a pointer sur le lien point-a-point.
: :
Lorsque l'on est confronte a l'etablissement de routes temporaires comme ici, faire appel au routage dynamique est une solution nettement meilleure. Pour cela, une methode consiste a employer gated, un demon de routage, que vous devrez installer sur chaque h^te du reseau de maniere a distribuer les informations de routage dynamio quement. Cependant, la meilleure solution est encore proxy ARP (Address Resolution Protocol, protocole de resolution d'adresses). Avec proxy ARP, kro repond a n'importe quelle requ^te ARP pour le e en envoyant sa propre adresse Ethernet. Le e resultat est que tous les paquets a destination de le e arriveront en realite a kro, qui les renverra alors a l'ordinateur portable. Nous reviendrons sur proxy ARP dans la section (( Checking the ARP Tables )). Les futures versions des utilitaires reseau pour Linux contiendront un outil nomme plipcon g, qui permettra de choisir la ligne d'IRQ a utiliser pour le port imprimante. Plus tard, il pourrait m^me ^tre remplace par une commande ifcon g plus generale. e e
74
75
L'argument interface est bien s^r le nom de l'interface, et adresse correspond a u l'adresse IP a lui assigner. Ce peut ^tre indi eremment une adresse exprimee en noe tation sur 4 octets, ou un nom de machine que ifcon g recherchera dans les chiers /etc/hosts et /etc/networks. Les options -net et -host forcent la commande a considerer l'adresse comme un reseau ou un h^te, respectivement. o Si ifcon g est invoquee uniquement avec le nom de l'interface, cette commande a che alors la con guration courante de l'interface en question. Sans aucun parametre, elle considerera toutes celles qui sont con gurees une option -a permet de lui faire a cher egalement les interfaces inactives. Sur eth0, la sortie de ifcon g peut donner quelque chose comme ceci :
# ifconfig eth0 eth0 Link encap 10Mbps Ethernet HWaddr 00:60:8C:53:D3:65 inet addr 193.56.58.85 Bcast 193.56.58.255 Mask 255.255.255.0 UP BROADCAST RUNNING MTU 1500 Metric 1 RX packets 414652 errors 3 dropped 3 overruns 3 TX packets 518279 errors 0 dropped 0 overruns 0
Les champs MTU et Metric montrent respectivement le MTU et la valeur metrique pour cette interface. La valeur metrique est utilisee par certains systemes d'exploitation pour determiner le prix ou l'e cacite d'une route. Pour l'instant, Linux n'utilise pas cette valeur, mais elle est de nie pour des raisons evidentes de compatibilite. Les lignes RX et TX montrent combien de paquets ont ete recus (RX) ou transmis (TX) sans erreurs, combien d'erreurs se sont produites, combien de paquets furent elimines (probablement par manque de memoire), et combien ont ete perdus en raison de debit trop important. Ces (( overruns )) se produisent generalement lorsque les paquets arrivent trop rapidement, et que le noyau n'a pas eu le temps de servir la derniere interruption alors qu'une autre arrive. Les drapeaux a ches par ifcon g correspondent plus ou moins aux noms des options de sa ligne de commande nous allons les expliquer ci-dessous. Voici la liste des parametres reconnus par la commande ifcon g, avec les noms des drapeaux correspondants. Les options qui ne sont que des bascules de conditions particulieres permettent egalement de les supprimer si elles sont precedees du signe ( moins ) (-). ( )
up
down
Cette option marque l'interface comme etant accessible a la couche reseau du noyau. Elle est implicite lorsqu'une adresse est donnee sur la ligne de commandes. Elle peut aussi ^tre utilisee pour remettre en e service une interface qui a ete arr^tee momentanement par l'option e down. Elle correspond aux drapeaux UP et RUNNING. Marque l'interface comme etant inaccessible a la couche IP du noyau. Cela interdit tout tra c IP a travers l'interface. Notez que cette option ne supprime pas les entrees de la table de routage pouvant utiliser
76
netmask masque
Assigne le masque de sous-reseau a utiliser pour cette interface. Il peut ^tre donne soit par un nombre hexadecimal sur 32 bits precede e de 0x (comme en langage C), soit en notation traditionnelle sur 4 octets. Cette option est utilisee pour les liaisons point-a-point qui ne mettent en jeu que deux machines. Elle est necessaire pour con gurer, par exemple, des interfaces SLIP ou PLIP. Si une adresse point-a-point est initialisee, la commande ifcon g afchera alors le drapeau POINTOPOINT.
pointopoint adresse
broadcast adresse
L'adresse de di usion est generalement constituee a partir de la valeur reseau en mettant tous les bits de la partie h^te a 1. Quelques o implementations de IP (notamment les systemes derives de BSD 4.2) utilisent un schema di erent, ou la partie h^te est mise a zero). L'opo tion broadcast est la, entre autres, pour s'adapter a ces environnements etranges. Si une adresse de di usion est positionnee, ifcon g a chera le drapeau BROADCAST.
metric nombre
mtu octets
Option employee pour assigner une valeur metrique a l'entree de la table de routage creee pour cette interface. Cette valeur est utilisee par RIP (Routing Information Protocol) pour construire les tables de routage pour le reseau 9. La valeur metrique mise par defaut par ifcon g est zero. Si vous n'employez pas de demon RIP, vous n'aurez pas besoin de cette option si vous le faites, vous n'aurez que tres rarement besoin de changer cette valeur. Permet d'ajuster la taille de l'unite de transfert ((( Maximum Transmission Unit ))), qui correspond au nombre maximum d'octets que l'interface est capable de manipuler en une seule transaction. Pour
9 RIP choisit la route optimale vers un h^te donne en se basant sur la (( longueur )) du chemin o a parcourir. Elle est calculee en ajoutant toutes les valeurs metriques individuelles de chaque liaison entre les machines rencontrees. Par defaut, un saut ((( hop ))) a une valeur de 1, mais ce peut ^tre e n'importe quelle valeur entiere inferieure a 16 (une route egale a 16 est consideree comme in nie, et inutilisable). Le parametre metric permet d'ajuster cette valeur, qui est alors di usee par le demon de routage.
:
77
arp
-arp promisc
-promisc allmulti
-allmulti
l'Ethernet, la valeur par defaut est 1 500 pour les interfaces SLIP c'est 296. Il s'agit d'une option speci que aux reseaux comme l'Ethernet ou le packet-radio. Elle met en service le protocole de resolution d'adresses, ARP, a n de detecter les adresses physiques des machines attachees au reseau. Pour les reseaux cites, elle est toujours en service par defaut. Si ARP est hors service, ifcon g a chera le drapeau NOARP. Supprime l'utilisation de ARP sur cette interface. Passe l'interface en mode global (promiscuous mode). Sur un reseau Ethernet (par exemple), cela a pour e et de faire recevoir tous les paquets a l'interface, qu'ils soient destines a un autre h^te ou non. On o peut ainsi analyser le tra c sur le reseau a l'aide de ltres de paquets ou autres outils. Generalement, cette technique appelee (( Ethernet snooping )) est une bonne methode pour traquer certains problemes reseau quasi indetectables autrement. D'un autre c^te, elle permet aux personnes malintentionnees de sono der ce qui passe sur le reseau, a la recherche de mots de passe ou pour realiser d'autres actions illegales. Pour se proteger, une solution consiste a ne laisser personne connecter impunement sa machine sur votre reseau Ethernet. Une autre option est d'utiliser des protocoles d'authenti cation securises, comme Kerberos, ou le login SRA 10 . Cette option correspond au drapeau PROMISC. Annule le mode global. Les adresses multicast sont un genre d'adresses de di usion limitees a un groupe de machines qui n'ont pas necessairement besoin de se trouver sur le m^me sous-reseau. Elles sont supportees sous Linux a e partir du noyau version 1.1.72, en alpha-test. Cette option correspond au drapeau ALLMULTI. Invalide les adresses multicast.
78
Flags UH U UGN
Metric 1 1 1
L'option -n indique a netstat d'a cher les adresses IP selon la notation sur 4 octets plut^t que d'indiquer les noms symboliques des h^tes et des reseaux. C'est particulieo o rement utile lorsque l'on veut eviter des recherches de noms a travers le reseau (via un serveur DNS ou NIS). La seconde colonne montre la passerelle vers laquelle pointe l'entree de la table. Si aucune passerelle n'est utilisee, un asterisque est a che a la place. La troisieme colonne indique la (( generalite )) de la route. Lorsqu'on lui demande de trouver une route pour une certaine adresse IP, le noyau regarde toutes les entrees de la table de routage, faisant un ET bit a bit de l'adresse et de ce masque avant de la comparer a la cible de cette route. La quatrieme colonne indique les di erents drapeaux qui caracterisent cette route :
G U H D M
La route utilise une passerelle (gateway). L'interface est en service (up). On ne peut joindre qu'un simple h^te par cette route. C'est pas o exemple le cas pour l'entree loopback 127.0.0.1. Ce drapeau est positionne si l'entree de la table a ete generee par un message ICMP de redirection (voir la section 2.5). Positionne si l'entree de la table a ete modi ee par un message ICMP de redirection.
La colonne Ref de la sortie de netstat montre le nombre de references a cette route, c'est-a-dire combien d'autres routes (par des passerelles par exemple) necessitent sa presence. Les deux dernieres colonnes indiquent le nombre de fois ou cette entree a ete utilisee, et l'interface a laquelle les datagrammes sont envoyes.
79
Les champs MTU et Met montrent le MTU et la valeur metrique courants pour cette interface. Les colonnes RX et TX indiquent combien de paquets ont ete recus (RX-OK) ou emis (TX-OK) sans erreurs, avec erreurs (RX-ERR/TX-ERR), combien furent elimines (RX-DRP/TX-DRP) et combien furent perdus en raison de debit trop haut pour le noyau (RX-OVR/TX-OVR). La derniere colonne indique quels drapeaux sont positionnes. Ce sont les initiales des noms qui sont a ches lorsque vous demandez l'etat de la con guration de l'interface par la commande ifcon g.
B L M O P R U
Une adresse de di usion est positionnee. Cette interface est un peripherique loopback. Tous les paquets sont recus (mode global). ARP est hors service. Il s'agit d'une connexion point-a-point. L'interface est en fonctionnement. L'interface est en service.
80
Nous voyons que la plupart des serveurs sont simplement en attente de connexion. Toutefois, la quatrieme ligne indique une connexion SMTP en cours depuis gueuze, et la sixieme nous apprend qu'il existe une connexion telnet sortante vers la machine gamay 11 . L'emploi de l'option -a seule a chera toutes les sockets de toutes les categories.
-v] -d nom-de-machine
Tous les arguments nom-de-machine peuvent ^tre soit des noms d'h^tes en clair, soit e o des adresses IP en notation sur 4 octets. La premiere invocation a che les entrees ARP pour les adresses IP ou h^tes speci es, o ou tous les h^tes connus si aucun nom-de-machine n'est donne. Par exemple, sur kro, o nous pourrions obtenir :
# arp -a IP address
:
HW type
HW address
11 Vous pouvez savoir si une connexion est sortante ou entrante a partir des ports mis en jeu. Le numero de port a che sur l'h^te appelant sera toujours un simple entier, alors que sur la machine o appelee, un service connu sera actif, pour lequel netstat utilisera le nom symbolique trouve dans le chier /etc/services.
81
Ce qui montre les adresses Ethernet de kro, gueuze et trappiste. Avec l'option -t, vous pouvez limiter l'a chage au type de materiel speci e. Ce peut ^tre ether, ax25 ou pronet, correspondant respectivement a l'Ethernet 10 Mbps, e AMPR AX.25 et les equipements token ring IEEE 802.5. L'option -s sert a ajouter de facon permanente l'adresse Ethernet de nom-de-machine dans les tables ARP. L'argument materiel speci e l'adresse materielle, qui est par defaut une adresse Ethernet sous la forme de six nombres hexadecimaux separes par le signe (( : )). Vous pouvez aussi initialiser l'adresse materielle d'autres types d'equipement, gr^ce a l'option -t. a Vous pouvez avoir a ajouter manuellement une adresse IP a la table ARP si pour une raison quelconque, les requ^tes ARP vers la machine distante echouent par exemple e si son pilote ARP est bogue ou s'il existe une autre machine sur le reseau qui, suite a une erreur de con guration, possede la m^me adresse IP. Forcer manuellement les e adresses IP dans la table ARP est aussi une methode (plut^t violente) pour se proteger o des h^tes de votre reseau qui tenteraient de se faire passer pour d'autres. o Appeler arp avec l'option -d a pour e et de supprimer toutes les entrees ARP relatives a l'h^te concerne. Ce peut ^tre un moyen de forcer l'interface a faire une nouvelle o e tentative d'obtention de l'adresse Ethernet pour l'adresse IP en question. Cette fonction est tres utile lorsqu'une machine mal con guree a di use une information ARP erronee (bien s^r, vous devrez corriger la con guration de ce systeme avant). u L'option -s peut aussi servir a implementer proxy ARP. Il s'agit d'une technique speciale ou un h^te, appelons-le relais, agit comme une passerelle vers un autre h^te o o que nous nommerons truc en pretendant que les deux adresses se referent au m^me e h^te, relais. Il e ectue cela en di usant une entree ARP pour truc qui pointe sur o sa propre interface Ethernet. Du coup, lorsqu'une machine enverra une requ^te ARP e pour truc, relais retournera une reponse contenant sa propre adresse Ethernet. La machine demandeuse enverra alors tous les datagrammes vers relais, qui les passera gentiment a truc, l'autre bout n'y voyant que du feu. Cette gymnastique peut devenir necessaire quand, par exemple, vous voulez acceder a truc depuis une machine MS-DOS possedant une implementation completement defectueuse de TCP, qui ne comprend pas trop bien les methodes de routage. Avec proxy ARP, cette machine MS-DOS aura l'impression que truc est sur le sous-reseau local, et n'aura donc pas besoin de savoir comment router des datagrammes a travers une passerelle. Proxy ARP est aussi tres utile lorsqu'une machine doit faire passerelle uniquement de temps en temps, par exemple a travers une liaison telephonique. Dans un precedent exemple, nous avons rencontre l'ordinateur portable le e, qui etait connecte a kro par une liaison PLIP, mais seulement de temps a autre. Bien s^r, cela ne marchera u
82
que si l'adresse de la machine pour laquelle vous voulez o rir proxy ARP se trouve sur le m^me sous-reseau IP que votre passerelle. Par exemple, gueuze pourrait faire e du proxy ARP pour n'importe quel h^te du sous-reseau des brasseurs (172.16.1.0), o mais ce serait impossible pour une machine sur celui des viticulteurs (172.16.2.0). La syntaxe a employer pour o rir un service proxy ARP a truc est donnee ci-dessous il est bien entendu que l'adresse Ethernet indiquee doit ^tre celle de relais. e
# arp -s truc 00:00:c0:a1:42:e0 pub
5.12 L'avenir
Le reseau sous Linux est en perpetuelle evolution. De profonds changements dans le noyau apporteront une methode de con guration tres souple permettant de con gurer les peripheriques reseau en cours de route. Par exemple, la commande ifcon g prendra des arguments qui permettront de choisir l'IRQ et le canal DMA. La commande route se verra ajouter bient^t des options supplementaires, comme mtu o pour modi er le MTU d'une route particuliere, qui modi era, pour cette route seulement, le MTU speci e pour l'interface correspondante. Vous utiliserez cette possibilite pour les routes passant par des passerelles, lorsque la liaison entre la passerelle et la machine de destination necessite un MTU tres faible. Par exemple, supposons que la machine alambic soit connectee a kro par une liaison SLIP. Lors de l'envoi de donnees depuis gueuze vers alambic, la couche reseau de alambic utilisera des paquets allant jusqu'a 1 500 octets puisqu'ils sont emis sur l'Ethernet. La liaison SLIP, elle, fonctionne avec un MTU de 296 octets, aussi il faudrait que le code reseau de kro fragmente ces paquets IP en morceaux plus petits tenant dans 296 octets. Si, au lieu de cela, vous aviez con gure la route sur gueuze pour utiliser depuis le debut 296 octets, cette fragmentation relativement co^teuse u aurait pu ^tre evitee : e
# route add alambic gw kro mtu 296
Notez que l'option mtu permet aussi de supprimer selectivement les e ets de la regle SNARL ((( les sous-reseaux sont locaux ))). Il s'agit de l'option de con guration du noyau decrite dans le chapitre 3. En n, consultez les pages de manuel et les documentations de la version de Linux et des commandes que vous possedez. A l'heure ou nous ecrivons ces lignes, certaines de ces nouvelles caracteristiques sont deja operationnelles.
83
Chapitre 6
84
multi nospoof
Determine l'ordre dans lequel les services vont ^tre sollicites. Les e valeurs valides sont bind pour l'interrogation du serveur de noms, hosts pour une recherche dans le chier /etc/hosts, et nis pour utiliser NIS. Tous peuvent ^tre speci es, eventuellement. e Prend les arguments on ou o , indiquant si un h^te cite dans le chier o /etc/hosts est autorise a posseder plusieurs adresses IP, ou non. Cette option n'a aucun e et sur les requ^tes DNS ou NIS. e Comme nous l'avons explique dans le chapitre precedent, DNS vous permet de trouver le nom d'h^te appartenant a une adresse IP donnee o en utilisant le domaine in-addr.arpa. Les tentatives d'envoi d'un faux nom sont appelees le (( spoo ng )). Pour se preserver, le resolver peut ^tre con gure pour tester si l'adresse IP originale est vraiment e associee avec le nom obtenu. Si ce n'est pas le cas, le nom est rejete
85
alert trim
et une erreur est retournee. Ce comportement est mis en service en mettant nospoof on. Cette option prend les arguments on ou o . Si elle est en service (on), toute tentative de spoo ng (voir ci-dessus) sera enregistree dans les chiers trace du systeme via syslog. Prend en argument un nom de domaine, qui sera elimine des noms d'h^tes avant la recherche. Tres utile pour les entrees hosts, ou vous o pouvez ne trouver que des noms de machines sans domaine local. La recherche d'un h^te comprenant le domaine local verra ce dernier o supprime, permettant ainsi a la recherche dans /etc/hosts d'aboutir. L'option trim est cumulative, votre h^te pouvant alors ^tre considere o e comme local a plusieurs domaines.
Un exemple d'un tel chier pour la machine kro est fourni dans la gure 6.1 ci-dessous.
# /etc/host.conf # Nous utilisons named, mais pas NIS (pas encore) order bind hosts # Autorise les adresses multiples multi on # Prevention des tentatives de spoofing nospoof on # Supprime domaine local (pas vraiment necessaire). trim bibine.com.
Remplace l'option order donnee dans host.conf. Les services sont hosts, bind et nis, separes par une espace, une virgule, un point, ou un deux-points (:). Determine les mesures a prendre en cas de spoo ng. Completement invalide par o . Les valeurs warn et warn o mettent le test de spoo-
86
RESOLV MULTI
Speci e la liste des domaines a supprimer, remplacant celle donnee dans host.conf par l'option trim. Speci e une liste de domaines a supprimer, qui s'ajoutera a celle donnee dans host.conf par l'option trim.
87
Tout cela est tres bien, nous direz-vous mais des que l'on sort du Departement Mathematiques, nous revoila avec ces noms pleinement quali es. Et bien s^r, vous u voudriez aussi pouvoir utiliser des raccourcis comme quark.physique pour atteindre les machines dans le domaine du Departement de Physique. Et c'est ici que la liste de recherche entre en jeu : l'option search permet d'indiquer une liste de recherche, qui correspond a une generalisation de la declaration domain. La ou cette derniere n'autorise qu'un seul domaine par defaut, search permet de speci er toute une liste de domaines, chacun etant essayes jusqu'a ce que la recherche aboutisse. Cette liste utilise des espaces ou des tabulations comme caractere de separation. Les declarations domain et search sont mutuellement exclusives, et ne peuvent appara^tre plus d'une fois. Si aucune d'elles n'est indiquee, le resolver tentera de deviner le domaine par defaut a partir du nom d'h^te local, en utilisant l'appel systeme getdoo mainname(2). Si le nom n'a pas de partie domaine, c'est le domaine racine qui sera utilise par defaut. Si vous decidez de mettre une instruction search dans resolv.conf, vous devez faire tres attention aux domaines que vous declarez dans la liste. Les bibliotheques resolver de version anterieure a BIND-4.9 construisaient une liste de recherche par defaut a partir du nom de domaine, si aucune liste n'etait precisee. Cette liste par defaut etait constituee du domaine par defaut lui-m^me, plus tous ses domaines parents, jusqu'a e la racine. Cela a pose quelques problemes car les requ^tes DNS aboutissaient a des e serveurs de noms qui n'auraient jamais d^ ^tre concernes. ue Supposons que vous vous trouviez a (( La biere virtuelle )), et que vous vouliez vous connecter a la machine foot.groucho.edu. Mais, ayant un peu abuse des productions de cette honorable societe, vos doigts derapent sur le clavier et au lieu de taper foot, vous mettez foo, qui n'existe pas. Le serveur de noms de GMU vous indiquera donc qu'il ne conna^t aucun h^te de ce nom. Avec l'ancienne implementation de la liste o de recherche, le resolver commencerait alors a rajouter bibine.com, puis com au bout. Ce dernier cas pose un gros probleme car groucho.edu.com pourrait ^tre un e domaine valide. Leur serveur de noms pourrait m^me trouver une machine foo dans e leur domaine, ce qui n'est pas du tout ce que vous vouliez 1 ! Dans certaines applications, ces recherches boguees peuvent poser des problemes de securite. Par consequent, vous devez generalement limiter les domaines de votre liste de recherche a votre organisation locale, ou equivalent. Au Departement de Mathematiques de l'universite Groucho Marx, la liste de recherche serait initialisee a maths.groucho.edu et groucho.edu. Si vous trouvez que les domaines par defaut sont un peu di ciles a apprehender, regardez cet exemple de chier resolv.conf pour (( La biere virtuelle )) :
# /etc/resolv.conf # Notre domaine domain bibine.com
88
Lors de la recherche du nom trappiste, le resolver cherchera trappiste, et ne le trouvant pas, trappiste.bibine.com.
89
Le programme named est en principe lance au demarrage du systeme et fonctionne continuellement jusqu'a l'arr^t de la machine. Il prend ses informations dans un chier e de con guration nomme /etc/named.boot, ainsi que dans divers autres chiers qui contiennent des correspondances entre domaines et adresses, et d'autres donnees de ce type. Ces derniers sont appeles chiers de zone. Le format et la semantique de ces chiers constituent l'objet de la section suivante. Pour lancer named, tapez simplement :
# /usr/sbin/named
Aussit^t, named va lire le chier named.boot et tous les chiers de zone indiques o dedans. Il ecrit son numero de processus dans /var/run/named.pid sous forme ASCII, telecharge des donnees depuis le serveur primaire si necessaire, puis se met a l'ecoute du port 53 en attente de requ^tes DNS 3 . e
domaine fichier --------------------------------------------------cache . named.ca primary bibine.com named.hosts primary 0.0.127.in-addr.arpa named.local primary 72.191.in-addr.arpa named.rev
90
Les commandes cache et primary que l'on peut voir dans cet exemple chargent des informations dans named. Ces informations sont prises dans les chiers de reference indiques dans le second argument ils representent les RR (resource records) du DNS, que nous allons voir ci-dessous. Ici, nous avons con gure named en tant que serveur de noms primaire pour trois domaines, comme l'indiquent les trois lignes primary de la n du chier. La premiere de ces lignes, par exemple, indique a named qu'il doit agir comme serveur primaire pour bibine.com, en prenant les informations de zone dans le chier named.hosts. Le mot cle directory lui indique que tous les chiers de zone sont situes dans le repertoire /var/named. L'entree cache est tres speciale et doit ^tre presente sur pratiquement toutes les mae chines comportant un serveur de noms. Sa fonction est double : elle indique a named de valider son cache et de charger les informations sur les domaines racine depuis le chier cache speci e (named.ca dans notre exemple). Nous reviendrons sur ces domaines racine un peu plus loin. Voici une liste des options les plus importantes que vous pouvez utiliser dans named.boot :
directory
primary
secondary
Designe un repertoire dans lequel resident les chiers de zone. Le nom de ces chiers peut ensuite ^tre indique relativement a ce repertoire. e Il est possible d'avoir plusieurs repertoires en indiquant chaque fois le mot-cle directory. Selon le standard adopte sous Linux, ce doit ^tre e en principe /var/named. Prend deux arguments, un nom de domaine et un nom de fichier, declarant le serveur de nom local comme ayant autorite pour le domaine indique. En tant que serveur primaire, named charge les informations de zone depuis le chier de reference speci e. Generalement, il y aura au moins une entree primary dans chaque chier named.boot, pour la recherche inverse du reseau 127.0.0.0, qui correspond au reseau loopback. Prend comme arguments un nom de domaine, une liste d'adresses, et un nom de fichier. Declare le serveur de noms local comme etant le serveur ma^tre secondaire pour le domaine indique. Un serveur secondaire contient aussi les donnees ayant autorite pour le domaine, mais il ne les recupere pas dans des chiers il essaie de les telecharger depuis le serveur primaire. L'adresse IP d'au moins un serveur primaire doit ^tre fournie a named dans la liste d'adresses. Le e serveur de noms local contactera tour a tour chacune d'elles jusqu'a ce qu'il ait reussi a transferer la base de donnees de la zone, qui sera alors stockee dans le chier de sauvegarde speci e dans le troisieme argument. Si aucun des serveurs primaires ne repond, les informations
91
cache
forwarders
slave
de zone seront chargees depuis cette sauvegarde. Le programme named tentera alors de remettre a jour ces informations a intervalles reguliers. Tout cela sera decrit plus loin, avec le RR de type SOA. Prend un domaine et un nom de fichier en arguments. Ce chier contient les informations sur les domaines racine, qui est une liste d'enregistrements pointant vers les serveurs de noms racine. Seuls les enregistrements NS et A seront reconnus. Le domaine doit ^tre soit e le nom du domaine racine, soit un simple point (.). Cette information est absolument cruciale pour named : si la ligne cache n'appara^t pas dans le chier d'amorcage, named ne creera pas du tout de cache. Les performances seront alors serieusement degradees et la charge du reseau extr^mement augmentee si le serveur e suivant n'est pas sur le reseau local. De plus, named sera incapable de joindre les serveurs racine, et par consequent il ne resoudra aucune adresse, exceptees celles pour lesquelles il a autorite. Prend une liste d'adresses en argument. Les adresses IP gurant dans cette liste designent des serveurs de noms que named peut interroger s'il echoue dans la resolution d'une requ^te en utilisant son e cache local. Elles sont essayees dans l'ordre indique, jusqu'a ce que l'un de ces serveurs reponde a la requ^te. e Cette instruction fait du serveur un serveur de noms esclave, c'esta-dire qu'il ne fera jamais de recherche recursive par lui-m^me, mais e les transmettra aux serveurs indiques par forwarders.
Il y a encore deux options que nous ne decrirons pas ici, sortlist et domain. De plus, il existe deux directives pouvant ^tre utilisees a l'interieur de ces chiers de la base e de donnees : $INCLUDE et $ORIGIN. Elles sont rarement utilisees, aussi nous ne les decrirons pas non plus.
92
mation disponible depuis le DNS. Chaque RR a un type. Le type A, par exemple, fait correspondre un nom d'h^te a une adresse IP, et un enregistrement de type CNAME o associe un alias a un nom o ciel de machine. Par exemple, jetons un il a la gure 6.4, qui represente le chier named.hosts de l'entreprise (( La biere virtuelle )). Les resource records des di erents chiers de reference partagent un format commun :
domaine] ttl ] classe] type donnees
Les champs sont separes par des espaces ou des tabulations. Une entree peut s'etendre sur plusieurs lignes s'il y a une parenthese ouvrante avant le premier caractere de saut de ligne, et si le dernier champ est suivi d'une parenthese fermante. Tout ce qui se trouve entre un signe point-virgule et le saut de ligne suivant est considere comme un commentaire et donc ignore.
domaine
ttl
classe
type
donnees
Il s'agit du nom de domaine auquel s'appliquent les entrees. Si aucun domaine n'est donne, le RR est considere comme s'appliquant au domaine du precedent RR. A n de forcer les resolvers a supprimer l'information au bout d'un certain temps, chaque RR se voit attribuer une duree de vie maximale, appele time to live, ou ttl. Le champ ttl speci e le temps en secondes pendant lequel l'information restera valide apres qu'elle a ete recuperee sur le serveur. Il s'agit d'un nombre decimal comportant 8 chi res au plus. Si aucune valeur ttl n'est donnee, c'est la valeur du champ minimum du precedent enregistrement SOA qui sera prise par defaut. Il s'agit d'une classe d'adresses, comme IN pour les adresses IP, HS pour des objets Hesiod. Pour le reseau TCP/IP, ce sera IN. S'il n'y a aucun champ classe, c'est la classe du RR precedent qui sera prise. Decrit le type du RR. Les types d'enregistrement les plus courants sont A, SOA, PTR, et NS. Nous verrons bient^t a quoi ils correspono dent. Contient les donnees associees avec le RR. Le format de ce champ depend du type de l'enregistrement. Il sera decrit separement, avec chaque type de RR.
Voici ci-dessous une liste non exhaustive des RR a utiliser dans les chiers de reference. Il y en a d'autres, que nous ne decrirons pas : ils sont experimentaux et tres peu employes.
93
SOA signi e (( Start of Authority )) et signale que l'enregistrement qui suit contient les informations ayant autorite pour ce domaine. Chaque chier de reference inclus par une instruction primary doit contenir un enregistrement SOA pour cette zone. Il contient les champs suivants :
origine
contact
Il s'agit du nom canonique du serveur de noms primaire pour ce domaine. Il est en general indique de maniere absolue. L'adresse electronique de la personne responsable de la maintenance du domaine, mais avec le signe `@' remplace par un point. Par exemple, si la personne responsable a (( La biere virtuelle )) est l'utilisateur marcel, alors ce champ contiendra marcel.bibine.com. Le numero de version du chier de zone, exprime sous la forme d'un nombre decimal entier. Chaque fois que des donnees sont modi ees, ce nombre doit ^tre incremente. e Ce numero de serie est utilise par les serveurs de noms secondaires pour savoir quand les informations de zone ont change. Pour rester a jour, les serveurs secondaires demandent l'enregistrement SOA du primaire a intervalles reguliers et comparent le numero de serie a celui du SOA se trouvant dans leur cache. S'il a change, les serveurs secondaires telechargent alors toute la base de donnees de la zone depuis le serveur primaire. Speci e l'intervalle, en secondes, entre les veri cations periodiques des enregistrements SOA du serveur primaire pour les eventuelles mises a jour. La encore, il s'agit d'un nombre decimal entier exprime sur 8 chi res au plus. Generalement, la topologie du reseau ne change pas tres souvent, aussi ce nombre doit indiquer approximativement une journee pour les grands reseaux, voire davantage pour les plus petits. Ce nombre determine les intervalles auxquels un serveur secondaire doit tenter de recontacter le serveur
numero de serie
rafra^chissement
tentatives
94
expiration
minimum
NS
Cet enregistrement associe une adresse IP a un nom de machine. Le champ de donnees contient l'adresse en notation sur 4 octets. Pour chaque h^te, il ne doit exister qu'un enregistrement de type A. o Le nom utilise est considere comme le nom o ciel, ou nom canonique, de la machine. Tous les autres noms sont des alias et doivent ^tre e associes au nom canonique par un enregistrement de type CNAME. Les enregistrements NS servent a speci er un serveur primaire de zone et tous ses serveurs secondaires. Ils pointent vers un serveur de noms ma^tre de la zone concernee, le champ de donnees contenant le nom de ce serveur de noms. Vous rencontrerez des enregistrements NS dans deux situations : lorsque vous deleguez l'autorite a une zone subordonnee, et dans la base de donnees de la zone subordonnee elle-m^me. Les listes de serveurs e speci es dans les zones parent et deleguees doivent correspondre.
95
CNAME
PTR
MX
A n de resoudre le nom vers lequel pointe un enregistrement NS, un enregistrement A supplementaire peut ^tre necessaire, le fameux glue e record qui donne l'adresse IP du serveur de noms. Les glue records sont necessaires dans le chier de zone lorsque le serveur pointe est hors du domaine delegue. Cet enregistrement associe un alias au nom canonique d'un h^te. Le o nom canonique est celui indique par un enregistrement A les alias y sont simplement lies par un CNAME, mais ne possedent pas leur propre enregistrement. Ce type d'enregistrement est utilise pour associer les noms dans le domaine in-addr.arpa avec les noms d'h^tes. Il sert a la recherche o des noms en fonction de l'adresse IP (recherche inverse). Le nom indique doit ^tre le nom canonique. e Cet RR annonce un echangeur de courrier (mail exchanger) pour un domaine. Le sujet est decrit dans la section (( Mail Routing on the Internet )), chapitre 13. La syntaxe d'un enregistrement MX est :
domaine] ttl] classe] MX preference h^te o
HINFO
L'argument h^te nomme l'echangeur de courrier pour domaine. o Chaque echangeur est associe a une preference, nombre entier. Un programme agent de transport de courrier desirant delivrer un message a domaine essaiera tous les h^tes qui ont un enregistrement MX o pour ce domaine, jusqu'a ce qu'il aboutisse. Celui dont la valeur de preference est la plus faible sera essaye en premier, et ainsi de suite. Donne des informations sur l'equipement materiel et logiciel de la machine. Sa syntaxe est :
domaine] ttl] classe] HINFO materiel logiciel
Le champ materiel indique le type d'ordinateur. Plusieurs conventions sont utilisees une liste de noms valides est donnee dans (( Assigned Numbers )), RFC 1340. S'il contient des espaces, il doit ^tre e delimite par des double quotes (" "). Le champ logiciel indique le systeme d'exploitation utilise. La encore, il faut choisir l'un des noms reconnus, indiques dans le document RFC 1340.
96
complexes et que vous n'arrivez pas a faire fonctionner named, procurez-vous le livre DNS and BIND de Cricket Liu et Paul Albitz ( AlbitzLiu92]). Le chier cache named.ca presente dans la gure 6.3 montre un exemple d'enregistrement pour un serveur de noms racine. Un chier cache typique decrit en general environ une douzaine de serveurs de noms. Vous pouvez obtenir la liste courante des serveurs de noms pour le domaine racine en employant l'utilitaire nslookup decrit dans la section suivante 5 .
/var/named/named.ca Fichier cache pour les brasseurs. Nous ne sommes pas sur l'Internet, par consequent nous n'avons besoin d'aucun serveur racine. Pour activer ces enregistrements, supprimez les points-virgules qui les mettent en commentaire. . NS.NIC.DDN.MIL . NS.NASA.GOV 99999999 99999999 99999999 99999999 IN IN IN IN NS A NS A NS.NIC.DDN.MIL 26.3.0.103 NS.NASA.GOV 128.102.16.10
Et nslookup interroge alors le serveur de noms declare dans le chier resolv.conf, a propos de nom-de-machine (Si ce chier contient plusieurs serveurs, nslookup en choisit un au hasard). Le mode interactif est bien plus interessant. En plus de pouvoir obtenir des renseignements sur des h^tes individuels, vous pouvez demander n'importe quel type o d'enregistrement DNS et telecharger la totalite des informations de zone pour un domaine. Invoque sans arguments, nslookup a che le serveur de noms qu'il utilise et passe en mode interactif. A l'invite >, vous pouvez alors entrer n'importe quel domaine sur
5 Notez que vous ne pouvez pas interroger votre serveur de noms a propos des serveurs racine si aucun chier d'informations les concernant n'est installe. Pour contourner ce probleme, vous pouvez soit indiquer un autre serveur de noms a nslookup, soit utiliser l'exemple donne dans la gure 6.3 comme point de depart, puis obtenir ainsi la liste complete des serveurs valides.
:
97
IN
SOA
IN
NS
le courrier local est distribue sur kro IN MX 10 kro adresse loopback localhost. IN A 127.0.0.1 Ethernet des brasseurs kro IN A 172.16.1.1 kro-if1 IN CNAME kro kro est aussi un serveur de News Usenet news IN CNAME kro gueuze IN A 172.16.1.2 trappiste IN A 172.16.1.3 Ethernet des viticulteurs kro-if2 IN A 172.16.2.1 gamay IN A 172.16.2.2 cahors IN A 172.16.2.3 brouilly IN A 172.16.2.4
/var/named/named.local
Recherche inverse de 127.0.0 L'origine est 0.0.127.in-addr.arpa. kro.bibine.com. alfred.bibine.com. ( 1 numero de serie 360000 rafra^chissement: 100 heures 3600 tentatives: une heure 3600000 expiration: 42 jours 360000 minimum: 100 heures ) kro.bibine.com. localhost.
IN
SOA
IN IN
NS PTR
98
IN
SOA
lequel vous desirez des renseignements. Par defaut, il demande les enregistrements de classe A, ceux contenant l'adresse IP relative au nom du domaine. Vous pouvez changer ce comportement par la commande (( set type=type )) ou type est l'un des RR decrits plus haut, ou bien (( ANY )), c'est-a-dire tous. Voici un exemple de session nslookup :
$ nslookup Default Name Server: rs10.hrz.th-darmstadt.de Address: 130.83.56.60 > sunsite.unc.edu Name Server: rs10.hrz.th-darmstadt.de Address: 130.83.56.60 Non-authoritative answer: Name: sunsite.unc.edu Address: 152.2.22.81
Si vous recherchez un nom qui n'a pas d'adresse IP associee, mais d'autres enregistrement dans la base de donnees DNS, nslookup retournera le message d'erreur (( No type A records found ) . Toutefois, vous pouvez lui faire querir d'autres enregistrements ) que le type A par la commande set type. Par exemple, pour obtenir l'enregistrement SOA de unc.edu, vous feriez :
99
Demander le type ANY retournera tous les RR associes a un nom donne. En dehors de la mise au point et du deboguage, nslookup permet d'obtenir la liste des serveurs de noms racine courants. Vous pouvez l'obtenir en demandant tous les enregistrements NS associes au domaine racine :
> set typ=NS > . Name Server: fb0430.mathematik.th-darmstadt.de Address: 130.83.2.30 Non-authoritative answer: (root) nameserver = NS.INTERNIC.NET (root) nameserver = AOS.ARL.ARMY.MIL (root) nameserver = C.NYSER.NET (root) nameserver = TERP.UMD.EDU (root) nameserver = NS.NASA.GOV (root) nameserver = NIC.NORDU.NET
100
(root)
Pour avoir une liste complete des commandes disponibles, dans nslookup, tapez la commande help.
101
Chapitre 7
7.1 Generalites
Pour utiliser SLIP ou PPP, vous devez con gurer un minimum de reseau comme nous l'avons decrit auparavant dans cet ouvrage. Vous devez au moins posseder l'interface loopback et o rir une methode quelconque de resolution de noms. Si vous comptez vous connecter a l'Internet, vous devrez bien entendu employer le DNS. L'option la plus simple et neanmoins e cace est de mettre l'adresse d'un serveur de noms accessible dans votre chier resolv.conf, puis d'ajouter l'option bind dans /etc/host.conf si elle n'y est pas deja. Le serveur speci e sera alors interroge des que le lien SLIP sera actif. Plus ce serveur de noms sera proche du lieu ou vous ^tes connecte, plus rapide sera e la reponse. Cette solution n'est toutefois pas optimale, car toutes les resolutions de noms passeront par votre liaison SLIP/PPP. Si le debit demande vous inquiete, vous pouvez aussi installer un serveur de noms cache seulement. Il ne gere pas vraiment un domaine, mais fonctionne comme un relais pour toutes les requ^tes DNS generees par e votre machine. Son avantage sera le cache, gr^ce auquel les requ^tes n'auront a passer a e
1 C'est encore loin d'^tre vrai en France. e
:
102
qu'une seule fois par la liaison serie. Un chier named.boot de serveur cache seulement ressemble a ceci :
Fichier named.boot pour serveur de noms cache seulement directory /var/named primary cache 0.0.127.in-addr.arpa . db.127.0.0 db.cache reseau loopback serveurs racine
En plus de ce chier, il vous faudra initialiser db.cache par une liste valide de serveurs de noms racine consultez la n du chapitre 6 pour cela.
La discipline de ligne de cua3 basculera en SLIPDISC et le port sera attache a l'une des interfaces reseau SLIP. S'il s'agit de votre premiere liaison, la ligne sera atta2 La compression d'en-t^tes Van Jacobson est decrite dans le RFC 1144. e
:
103
chee a l'interface sl0 la seconde serait sur sl1, et ainsi de suite. Les noyaux actuels supportent 4, 8 ou 16 liaisons SLIP simultanees. L'encapsulation choisie par defaut par slattach est CSLIP. Vous pouvez choisir un autre mode gr^ce a l'option -p pour le mode SLIP normal (sans compression) ce a serait :
# slattach -p slip /dev/cua3 &
D'autres modes sont disponibles : cslip, slip6, cslip6 (pour la version 6 bits), et adaptive. Ce dernier mode laisse le noyau detecter automatiquement quel type d'encapsulation SLIP est employe par le site distant. Vous devez utiliser la m^me encapsulation a chaque bout. Par exemple, si votre core respondant emploie CSLIP, vous devez le faire aussi, sinon la liaison sera incorrecte. Les sympt^mes sont en general qu'un ping ne revient pas, et l'autre c^te de la liaison o o peut a cher le message d'erreur (( Can't build ICMP header )) sur la console. Il est possible d'eviter cela en utilisant le mode adaptatif (option adaptive). Pour tous renseignements, consultez la page de manuel de slattach(8). Apres avoir passe la ligne en SLIP, vous devez con gurer l'interface reseau. La encore, il faut utiliser les commandes standards ifcon g et route. Supposons que nous ayons, a partir de la machine kro, appele un serveur nomme gogoslip. Nous devons taper les commandes suivantes :
# ifconfig sl0 kro-slip pointopoint gogoslip # route add gogoslip # route add default gw gogoslip
La premiere commande con gure l'interface en tant que liaison point-a-point avec gogoslip, les deux autres ajoutent une route vers cette machine et positionne celle par defaut a gogoslip tout en l'utilisant comme passerelle. Il faut noter deux choses a propos de la commande ifcon g montree dans cet exemple. La premiere, c'est l'option pointopoint qui speci e l'adresse de la machine distante, la seconde etant l'utilisation de kro-slip comme adresse de l'interface SLIP locale. Nous avons dit auparavant que l'on pouvait utiliser la m^me adresse qui est assignee a e l'interface Ethernet de kro pour SLIP. Dans le cas present, kro-slip pourrait tres bien n'^tre qu'un alias de 172.16.1.1. Toutefois, il peut arriver que l'on soit oblige d'utiliser e une adresse completement di erente pour la liaison SLIP c'est le cas par exemple lorsque le reseau utilise une adresse IP de reseau non enregistree o ciellement, comme cela se passe a (( La biere virtuelle )). Nous reviendrons sur ce sujet en detail dans la section suivante. Jusqu'a la n de ce chapitre, nous utiliserons toujours kro-slip pour designer l'adresse de l'interface SLIP locale.
104
A la n de la session, vous devez d'abord supprimer toutes les routes vers gogoslip par l'option del de la commande route, puis mettre l'interface hors service, et envoyer le signal HUP a slattach (hangup, deconnexion de ligne). Ensuite, vous couperez la liaison modem.
# # # # route del default route del gogoslip ifconfig sl0 down kill -HUP 516
105
tout se fasse tout seul. C'est le r^le du programme dip. 3 . La version actuelle, a l'heure o ou nous ecrivons ces lignes, est 3.3.7. Il a ete enormement modi e par un grand nombre de personnes, aussi il n'est plus possible de parler d'un unique programme dip. Ces di erentes variantes de developpement aboutiront heureusement un jour a une seule version de nitive. Le programme dip o re un petit langage script permettant de dialoguer avec le modem et le serveur, passer en mode SLIP et con gurer les interfaces. Il est tres primitif et limite, mais su sant dans la plupart des cas. Ce langage changera peut-^tre dans une e future version, plus elaboree. Pour pouvoir con gurer l'interface SLIP, dip a besoin des privileges root. Il serait tentant de l'installer setuid a root, pour que tout utilisateur ordinaire puisse appeler un service SLIP sans qu'il soit necessaire de lui donner l'acces superutilisateur. C'est pourtant une methode extr^mement dangereuse, car con gurer de mauvaises intere faces ou routes par defaut avec dip peut paralyser completement votre reseau. Pis, cela autoriserait n'importe quel utilisateur a telephoner n'importe ou, entre autres choses. Aussi, si vous avez vraiment besoin d'autoriser un utilisateur a initialiser lui-m^me e des liaisons SLIP, la meilleure solution est d'ecrire un petit programme frontal pour chaque serveur a connecter, qui lui seul realisera l'appel a dip en tant que root avec les scripts adaptes a chaque cas, en toute securite. 4
Le script correspondant est presente dans la gure 7.1. Apres s'^tre connecte a gogoslip et avoir mis SLIP en service, dip va se detacher e du terminal et se mettre en arriere-plan. Vous pouvez alors commencer a utiliser les services reseaux habituels par la liaison SLIP. Pour terminer la session, invoquez simplement dip avec l'option -k. Cela enverra simplement un signal HUP au processus indique dans /etc/dip.pid, que dip a cree au demarrage.
# dip -k
3 dip signi e Dialup IP, son auteur est Fred van Kempen. 4 Le programme diplogin peut (et doit) ^tre setuid root, egalement. Voyez la n de ce chapitre. e
: :
106
# Exemple de script dip pour appeler gogoslip # Set local and remote name and address # Initialise les adresses locale et distante get $local kro-slip get $remote gogoslip port cua3 speed 38400 modem HAYES reset flush # # # # # choix du port serie choix de la vitesse type de modem remise a zero du modem et du tty nettoie le tampon de reception modem
# Preparation de l'appel send ATQ0V1E1X1\r wait OK 2 if $errlvl != 0 goto error dial 41988 if $errlvl != 0 goto error wait CONNECT 60 if $errlvl != 0 goto error # Voila, nous sommes sleep 3 send \r\n\r\n wait ogin: 10 if $errlvl != 0 goto send Skro\n wait ssword: 5 if $errlvl != 0 goto send salut\n wait running 30 if $errlvl != 0 goto connectes
error
error
error
# Nous sommes sur le systeme distant, qui lance SLIP. print Connecte a $remote avec l'adresse $rmtip default # Positionne ce lien comme route par defaut mode SLIP # Et nous passons aussi en mode SLIP. # Les erreurs arrivent ici: error: print La connexion SLIP avec $remote a echoue.
107
Dans le langage de script de dip, les mots cles pre xes par le symbole dollar ($) denotent les noms de variables. Le programme conna^t un certain nombre de variables prede nies, que nous allons detailler plus loin $remote et $local, par exemple, contiennent les noms des deux machines, respectivement distante et locale, de la liaison point-a-point. Les deux premieres instructions du script sont des commandes get, qui est la methode par laquelle dip initialise une variable. Ici, la machine locale est kro-slip et la machine distante gogoslip. Les cinq instructions suivantes initialisent le terminal et le modem : reset envoie une commande de remise a zero du modem pour les modems compatibles Hayes, il s'agit de ATZ. La ligne suivante elimine le cas echeant tous les caracteres deja recus par le modem a n que le dialogue avec le serveur puisse s'etablir proprement. Cette sequence de dialogue est tres simple : elle appelle le numero 41988, le numero de telephone de gogoslip, et se connecte sous le compte utilisateur Skro avec le mot de passe salut. La commande wait indique a dip d'attendre la cha^ne de caracteres donnee comme premier argument pendant le nombre de secondes indique dans le second. La condition if imbriquee dans la procedure teste qu'aucune erreur ne s'est produite pendant l'execution de la commande. Les dernieres commandes executees sont default, qui assigne la route par defaut a la liaison SLIP, et mode, qui valide le mode SLIP sur la ligne serie et con gure l'interface et la table de routage pour vous.
108
Tout au long de la section suivante, les exemples qui a chent l'invite DIP montrent comment entrer une commande en mode test et ce qu'elle a che a l'ecran. Les exemples depourvus de cette invite doivent ^tre consideres comme des extraits de e scripts.
echo et term
La commande echo est une aide au deboguage. Dans ce mode, dip a che sur la console tout ce qu'il envoie au port serie. L'e et peut ^tre annule par echo o . e Vous pouvez aussi quitter momentanement le mode script et passer en mode terminal. Dans ce mode, vous pouvez utiliser dip comme n'importe quel autre programme de terminal. Pour le quitter, entrez Ctrl-] (combinaison de touches peu pratique sur un clavier francais).
109
C'est par elle qu'on initialise les variables. La forme la plus simple est l'assignation d'une constante, comme nous l'avons fait dans gogoslip.dip. Vous pouvez egalement demander a l'utilisateur de saisir la donnee, en speci ant le mot cle ask au lieu d'une valeur :
DIP> get $local ask Enter the value for $local: _
Une troisieme methode consiste a obtenir la valeur depuis la machine distante. Aussi bizarre que cela puisse para^tre, c'est tres utile dans certains cas. Beaucoup de serveurs SLIP ne vous autoriseront pas a utiliser votre propre adresse IP sur cette liaison, mais vous en assigneront une dynamiquement lorsque vous appellerez, en a chant un message vous informant de la valeur a prendre. Si ce message est de la forme (( Your address: 192.168.5.74 ) , ce qui est courant, alors le bout de code dip suivant saura ) la recuperer tout seul :
# fin du dialogue login wait address: 10 get $locip remote
La commande print
Elle est destinee a a cher du texte sur le terminal ou dip a ete lance. N'importe quelle variable peut ^tre utilisee dans le texte, comme ceci : e
DIP> print Utilisation du port $port a la vitesse de $speed Utilisation du port cua3 a la vitesse de 38400
Noms de variables
Le programme dip ne comprend qu'un ensemble prede ni de variables. Leur nom commence toujours par le signe dollar ($) et doit ^tre en lettres minuscules. e Les variables $local et $locip contiennent le nom de la machine locale et son adresse IP. Si l'on initialise le nom d'h^te, dip stockera le nom canonique dans $local, et mettra o l'adresse correspondante dans $locip. La m^me chose se passe pour $locip. e Les variables $remote et $rmtip ont la m^me fonction, pour le nom de la machine e distante et son adresse et $mtu contient la valeur du MTU pour la connexion. Ces cinq variables sont les seules qui peuvent se voir assigner des valeurs directement par la commande get. Un h^te, ou toute autre variable, ne peut ^tre initialise que par o e les commandes correspondantes, mais peut ^tre utilise dans les instructions print ce e sont $modem, $port et $speed.
110
Le resultat des commandes executees se trouve dans la variable $errlvl. Une valeur de 0 indique que tout s'est bien passe, une valeur non nulle denote une erreur.
L'expression doit ^tre une simple comparaison entre l'une des variables $errlvl, $locip e et $rmtip variable doit ^tre un nombre entier l'operateur peut ^tre ==, !=, <, >, e e <=, et >=. La commande goto branche l'execution du script a la ligne suivant l'etiquette indiquee. Une etiquette doit ^tre le premier mot sur la ligne et doit ^tre suivie immediatement e e par le caractere deux-points (:).
mode et default
Ces commandes servent a basculer la ligne serie en mode SLIP et a con gurer l'interface. La commande mode est la derniere que dip doit executer avant de passer en arriereplan. A moins qu'une erreur ne se produise, on ne revient pas de cette commande. La commande mode prend un protocole en argument pour l'instant dip ne reconna^t que SLIP et CSLIP. La version courante de dip ne conna^t pas le mode SLIP adaptatif. Apres avoir passe la discipline de ligne en SLIP, dip execute ifcon g a n de con gurer
111
l'interface pour une liaison point-a-point, et appelle route pour positionner la route vers la machine distante. Si, de plus, le script execute la commande default avant mode, dip fera aussi pointer la route par defaut sur cette liaison.
Ensuite, il reste bien s^r a positionner le mot de passe avec la commande passwd. u Maintenant, lorsque dugenou entre sur le systeme, dip se lance en tant que serveur. Pour veri er si l'utilisateur est autorise a utiliser SLIP, il regardera dans le chier /etc/diphosts. Ce chier detaille les droits d'acces et les parametres de connexion pour chaque utilisateur SLIP. L'entree de dugenou pourrait ressembler a ceci :
dugenou::dugenou.beta.org:Marcel Dugenou:SLIP,296
Le premier champ est le nom de l'utilisateur. Le second peut contenir un mot de passe supplementaire (voir plus bas). Le troisieme est le nom ou l'adresse IP de la machine appelante. Ensuite vient le champ d'informations, sans aucune signi cation pour le programme (pas encore, du moins). Le dernier champ decrit les parametres de connexion. C'est une liste dont le separateur est la virgule, speci ant le protocole (pour l'instant donc, soit SLIP ou CSLIP), suivi par le MTU. Lorsque dugenou arrive, diplogin extrait les informations le concernant du chier diphosts, et si le champ du mot de passe n'est pas vide, il le lui demande. La cha^ne entree par l'utilisateur est comparee avec celle (en clair, non cryptee) contenue dans diphosts. Si elles ne correspondent pas, l'utilisateur est refuse.
112
Sinon, diplogin passe alors la ligne serie en mode CSLIP ou SLIP et initialise l'interface et la route. Cette connexion reste etablie jusqu'a ce que l'utilisateur se deconnecte et que le modem coupe la ligne diplogin remettra alors la discipline de ligne normale et s'arr^tera. e Attention, diplogin necessite les privileges du superutilisateur. Si vous n'utilisez pas dip avec les permissions setuid root, diplogin devra ^tre une copie separee (et non un e simple lien) a n de pouvoir en toute securite le positionner setuid, sans a ecter dip.
113
Chapitre 8
114
serveurs accessibles sur appel telephonique. Generalement, la machine appelee (le serveur) demande au client de s'identi er en prouvant qu'il conna^t une cle secrete. Si l'appelant echoue, la connexion se termine immediatement. Sous PPP, l'identi cation est bidirectionnelle : l'appelant peut aussi demander au serveur de s'identi er. Ces procedures sont totalement independantes les unes des autres il existe deux protocoles permettant deux types distincts d'authenti cation, que nous decrirons plus loin. Ils s'appellent PAP (Password Authentication Protocol) et CHAP (Challenge Handshake Authentication Protocol). Chaque protocole reseau route par la liaison serie, comme IP, Appletalk, etc., est con gure dynamiquement par un protocole de contr^le reseau, (( Network Control o Protocol )), ou NCP. Par exemple, pour envoyer des datagrammes IP, les deux c^tes o de PPP doivent d'abord negocier quelle adresse IP chacun d'eux utilisera. Le protocole de contr^le utilise a cet e et est IPCP, le protocole de contr^le de protocoles Internet, o o ( Internet Protocol Control Protocol ) . ( ) En plus du transfert de datagrammes IP standard, PPP supporte aussi la compression Van Jacobson de ces trames IP. Il s'agit d'une technique de reduction des en-t^tes e TCP jusqu'a une taille de 3 octets, egalement utilisee dans CSLIP et que l'on appelle en principe la compression d'en-t^tes Van Jacobson, ou compression VJ en abrege. e Son emploi peut ^tre negocie au depart par IPCP. e
115
supportes, avec la compression VJ en option. Si Linux supporte un jour IPX, le pilote PPP sera mis a jour pour savoir les gerer aussi. Le pilote inclus dans le noyau est assiste par pppd, le demon PPP, qui e ectue les phases d'initialisation et d'authenti cation necessaires avant que tout tra c soit possible sur la liaison. Le comportement de ce programme peut ^tre ajuste par un certain e nombre d'options. Comme PPP est plut^t complexe, il est impossible de les expliquer o toutes dans un seul chapitre par consequent ce livre ne pourra pas traiter tous les aspects de pppd, ce sera juste une introduction. Pour obtenir plus d'informations, consultez les pages de manuel et la documentation fournie avec la distribution source de pppd, ou vous trouverez l'essentiel de ce qui n'est pas traite dans cet ouvrage. Si vous avez toujours des problemes, tournez-vous vers le forum Usenet comp.protocols.ppp, ou vous pourrez dialoguer avec la plupart des gens impliques dans le developpement de pppd.
Cette commande va basculer la ligne serie cua3 en mode PPP et etablir une liaison IP avec l'h^te pabo. La vitesse de transfert utilisee sur le port serie sera 38 400 bps. o L'option crtscts valide le contr^le de ux RTS/CTS, ce qui est indispensable avec des o vitesses superieures a 9 600 bps. La premiere chose que fait pppd est de negocier plusieurs caracteristiques de la liaison par le protocole LCP. Generalement, les options par defaut fonctionneront, nous n'entrerons donc pas dans les details. Pour l'instant, nous allons egalement considerer que pabo ne demande aucune identi cation, et que par consequent la phase de con guration est terminee. Le programme pppd va alors negocier les adresses IP a utiliser en employant IPCP, le protocole de contr^le IP. Puisque nous n'avons speci e aucune adresse particuliere en o appelant pppd dans l'exemple ci-dessus, il va essayer de prendre les adresses obtenues par le resolver sur les noms de chaque h^te. Chacun annoncera alors son adresse a o l'autre.
116
Generalement, ce comportement par defaut est parfait. M^me si votre machine est e sur un reseau Ethernet, vous pouvez employer la m^me adresse IP pour les deux e interfaces. Neanmoins, pppd permet d'utiliser une adresse di erente, ou m^me de e demander a l'autre c^te de vous en assigner une. Ces options sont decrites dans la o section (( Options de con guration IP )). Apres la phase de con guration IPCP, pppd va preparer la couche reseau de votre systeme a l'utilisation d'une liaison PPP. Tout d'abord, il con gure l'interface PPP comme un lien point-a-point, en prenant ppp0 pour la premiere interface active, ppp1 pour la seconde, et ainsi de suite. Ensuite, il va initialiser une entree dans la table de routage qui pointe vers l'h^te connecte a l'autre bout de la liaison. Dans l'exemple o ci-dessus, pppd mettra aussi la route par defaut sur pabo, car nous lui avons passe l'option defaultroute 4 . Par consequent, tous les datagrammes a destination de machines hors de votre reseau local seront envoyes a pabo. Il existe di erents autres schemas de routage rendus possibles par pppd, nous les verrons en detail un peu plus loin.
4 La route par defaut ne sera mise que s'il n'en existe pas deja une.
:
117
Les deux premieres options concernent l'identi cation et seront decrites plus bas. Le mot cle lock rend pppd compatible avec la methode UUCP pour le verrouillage des peripheriques. Dans cette convention, chaque processus accedant a un port serie, disons /dev/cua3, cree un chier nomme LCK..cua3 dans le repertoire spool/uucp pour signaler que le peripherique est en cours d'utilisation. Cela permet d'eviter que certains autres programmes tentent d'acceder au port serie au m^me moment. e L'inter^t de mettre ces options dans le chier de con guration global, c'est qu'elles e ne pourront plus ^tre forcees par quiconque par la suite, o rant ainsi un niveau de e securite raisonnable. Notez que quelques-unes n'obeissent pas a cette regle, la cha^ne connect par exemple.
Ici, chat attendra que le systeme distant nous envoie l'invite de login, et nous lui repondrons par le nom de l'utilisateur dugenou. Nous n'attendons que la cha^ne ogin:. Ainsi, que la premiere lettre soit majuscule ou minuscule, ou remplacee par un malheureux parasite, sera sans importance. Ensuite, nous attendons que l'on nous demande le mot de passe (ssword:), et nous envoyons la reponse. Un script de dialogue n'est pas autre chose. Bien s^r, pour etablir la communication, u il faut egalement y inclure les commandes necessaires au modem. Supposons que vous disposez d'un modem Hayes (le contraire serait etonnant), et que le numero de telephone du serveur est 318714. Pour appeler pabo, la commande chat complete est alors :
$ chat -v '' ATZ OK ATDT318714 CONNECT '' ogin: ppp word: GaGariN
118
Par de nition, la premiere cha^ne doit ^tre une attente, mais comme le modem ne e dira jamais rien tant que nous ne lui avons pas adresse la parole, nous indiquons une cha^ne vide pour que chat n'attende pas inde niment. Nous envoyons ensuite ATZ, la commande de remise a zero des modems compatibles Hayes, et attendons sa reponse (OK). La cha^ne suivante envoie la commande de numerotation et le numero de telephone, et attend le message CONNECT en reponse. La encore, cette attente est suivie d'une cha^ne vide car nous ne voulons rien envoyer pour l'instant, il nous faut attendre l'invite du serveur. La suite de ce script fonctionne exactement comme nous l'avons decrit plus haut. L'option -v indique a chat d'enregistrer toutes les activites dans les chiers trace du systeme, par le demon syslog c'est le niveau local2 qui est utilise 5. Speci er le script de dialogue sur la ligne de commandes presente un certain risque, car tout utilisateur peut se servir de ps et visualiser cette ligne de commandes. Vous pouvez eviter ce probleme en mettant ce script dans un chier, disons par exemple appel-pabo. Il su ra d'indiquer a chat, par l'option -f suivie du nom de chier, d'aller lire le script dedans. Maintenant, l'appel a pppd se passe donc comme ceci :
# pppd connect "chat -f appel-pabo" /dev/cua3 38400 -detach \ crtscts modem defaultroute
En plus de l'option connect qui speci e le script de dialogue, nous avons ajoute deux autres options a la commande : -detach, qui demande a pppd de ne pas se detacher de la console et passer en arriere-plan, et le mot cle modem, qui lui permet de gerer la ligne serie dans le cas particulier d'un modem, par exemple en deconnectant la ligne apres l'appel. Si vous n'utilisez pas ce mot cle, pppd ne testera pas la ligne DCD (detection de porteuse) et ne detectera jamais la deconnexion eventuelle de la machine distante. Tous ces exemples sont plut^t simples chat permet de faire des scripts bien plus o complexes. Il o re par exemple l'interessante possibilite de pouvoir abandonner la session en retournant une erreur, en fonction des reponses obtenues. Les messages sur lesquels on utilisera typiquement cette fonction sont BUSY ou NO CARRIER, que votre modem indiquera si le numero appele est occupe ou ne repond pas. Pour que chat reconnaisse immediatement ces messages, vous pouvez les indiquer au debut du script par le mot cle ABORT :
$ chat -v ABORT BUSY ABORT 'NO CARRIER' '' ATZ OK ...
De m^me, vous pouvez changer le temps d'attente maximal de toute partie du dialogue e en inserant l'option TIMEOUT. Consultez la page de manuel de chat(8) pour les details. Quelquefois, vous aurez aussi besoin de conditions d'execution de certaines parties du script. Par exemple, lorsque vous ne recevez pas l'invite de la machine appelee,
5 Si vous modi ez syslog.conf pour rediriger ces traces dans un chier, assurez-vous qu'il ne soit pas lisible par tout le monde, car chat enregistre tout le dialogue, tel quel, y compris les mots de passe.
:
119
vous pouvez vouloir lui envoyer un BREAK, ou un retour-chariot. C'est realisable en ajoutant un script secondaire a une attente de cha^ne : il consiste en une serie de sequences attente/envoi, comme le script principal, mais qui sont separees par des tirets. Le script secondaire est execute lorsque la cha^ne attendue a laquelle il est rattache n'est pas recue dans le temps imparti. Nous pourrions modi er l'exemple precedent de cette facon :
ogin:-BREAK-ogin: ppp ssword: GaGariN
Maintenant, lorsque chat ne recoit pas l'invite login dans le temps prevu, le script secondaire est execute et envoie un BREAK, puis attend a nouveau. Si l'invite appara^t, le script continue a se derouler normalement, sinon chat se termine en retournant une erreur au systeme ou au programme qui l'a appele.
Si votre con guration PPP ne marche pas du premier coup, vous pourrez consulter ce chier de trace pour avoir une idee de ce qui ne va pas. Si vous ne trouvez rien, il faudra utiliser l'option debug de pppd, pour qu'il ajoute plus d'informations. Cette option lui fera enregistrer le contenu de tous les paquets de contr^le envoyes ou recus. o Tous les messages passent par syslog, au niveau daemon. En n, il est possible de valider le deboguage au niveau du noyau en invoquant pppd avec l'option kdebug. Celle-ci doit ^tre suivie d'un argument numerique qui est un OU e avec les valeurs suivantes : 1 pour les messages generaux, 2 pour l'enregistrement du contenu de toutes les trames HDLC entrantes, 4 pour celles sortantes. Pour capturer les messages de deboguage du noyau, vous devez soit employer une version de syslogd qui lit aussi le chier /proc/kmsg, soit le demon klogd. Tous deux dirigent les messages de deboguage du noyau vers la (( facilite )) kernel de syslog.
120
Avec pppd, vous disposez d'un contr^le presque total des options IPCP qu'il tentera de o negocier. Vous pouvez les ajuster par di erentes commandes que nous allons presenter ci-dessous.
Vous pouvez utiliser pour adresse locale et adresse distante, aussi bien des noms de machines que des adresses IP en notation sur 4 octets 6 . Avec cette option, pppd tentera d'utiliser la premiere adresse comme sa propre adresse IP, et la seconde pour la machine distante. Si cette derniere rejette l'une ou l'autre pendant la negociation IPCP, aucune liaison IP ne sera etablie 7. Si vous ne desirez assigner que l'adresse locale et accepter toute adresse distante que l'autre c^te annoncera, il vous su t de ne rien mettre a l'emplacement de la variable o adresse distante. Par exemple, pour que kro utilise l'adresse 130.83.4.27 au lieu de la sienne, vous passeriez l'option 130.83.4.27: sur la ligne de commandes. De m^me, pour n'assigner que l'adresse distante, vous laisseriez le champ adresse locale e en blanc. Par defaut, pppd utilisera alors l'adresse associee au nom de la machine. Certains serveurs PPP gerant beaucoup de connexions assignent les adresses de maniere dynamique : elles sont choisies lorsqu'un systeme se connecte, et liberees a la deconnexion. Lors de l'appel de tels services, vous devez vous assurer que pppd ne demande aucune adresse IP particuliere au serveur, mais qu'au contraire il est pr^t a e accepter celles qui lui seront imposees. Cela signi e que vous ne devez pas speci er d'argument adresse locale, pour le moins. De plus, vous devrez utiliser l'option noipdefault, qui indique au programme d'attendre que l'autre c^te lui indique son o adresse IP au lieu de prendre celle de la machine locale.
6 L'utilisation de noms de machines avec cette option a certaines consequences sur l'authenti cation CHAP. Consultez la section correspondante dans ce chapitre. 7 Vous pouvez autoriser la machine distante a vous imposer une adresse IP malgre tout par l'option ipcp-accept-local, et vous pouvez accepter l'adresse qu'elle desire pour elle par ipcp-accept-remote. Consultez la page de manuel pour plus de details.
: :
121
Le parametre interface indique l'interface reseau utilisee, peripherique est le chemin d'acces au port serie (/dev/tty s'il s'agit de stdin/stdout), et vitesse correspond a la vitesse d'utilisation de ce port serie. Bien entendu, adresse locale et adresse distante correspondent aux adresses IP de chaque c^te de la liaison et sont o
122
exprimees en notation sur 4 octets. Dans notre cas, le script ip-up pourrait contenir, entre autres lignes de code, celles-ci :
#!/bin/sh case $5 in 172.16.3.1) # La machine province route add -net 172.16.3.0 gw 172.16.3.1 ... esac exit 0
De la m^me facon, /etc/ppp/ip-down est appele pour annuler toutes les actions de e ip-up lorsque la liaison est interrompue. Toutefois, ce schema de routage n'est pas encore complet. Nous avons positionne des entrees dans la table de routage de chaque h^te PPP, mais, pour l'instant, aucune o autre machine de l'un ou l'autre des reseaux n'est au courant de cette liaison PPP. Ce n'est pas un gros probleme si tous les h^tes de la succursale ont leur route par o defaut pointant vers province, et si tous les h^tes du reseau des brasseurs passent o par defaut par kro. Mais si ce n'est pas le cas, la seule solution sera d'employer un demon de routage comme gated. Apres avoir cree la route reseau sur kro, le demon de routage di usera cette nouvelle route a toutes les machines connectees aux reseaux concernes.
123
que le caractere correspondant doit ^tre encode avant d'^tre envoye sur la ligne. Par e e defaut, l'async map vaut 0xffffffff, c'est-a-dire que tous les caracteres de contr^le o seront encodes. Pour indiquer a votre correspondant qu'il n'a besoin d'encoder que quelques caracteres de contr^le, vous pouvez speci er une nouvelle async map a pppd gr^ce a l'option o a asyncmap. Par exemple, si seulement ^S et ^Q (ASCII 17 et 19, couramment utilises pour XON et XOFF) doivent ^tre traites, utilisez l'option suivante : e
asyncmap 0x000A0000
Le Maximum Receive Unit, ou MRU, signale au correspondant la taille maximale des trames HDLC que nous voulons recevoir. Bien que cela puisse vous rappeler la valeur MTU (Maximum Transfer Unit), il n'y a pas grand rapport. Le MTU est un parametre de l'interface, au niveau noyau, et indique la taille maximale d'une trame IP que cette interface peut gerer. Le MRU est tout au plus un avertissement a la machine correspondante de ne pas generer de trames plus grandes que la valeur speci ee l'interface peut neanmoins ^tre tout a fait capable de recevoir des paquets e allant jusqu'a 1 500 octets. Choisir un MRU n'est par consequent pas tellement une question de capacite de transfert, c'est surtout un moyen d'obtenir le meilleur resultat. Si vous comptez utiliser des applications interactives sur la liaison, baisser le MRU jusqu'a une valeur de 296 est une bonne idee, ainsi un eventuel paquet plus large (provenant d'une session FTP par exemple) ne (( gelera )) pas momentanement le curseur sur votre ecran. Pour dire a pppd de demander un MRU de 296, il su t de lui passer l'option mru 296. Etonnant, non ? Toutefois, de petites valeurs n'ont d'inter^t que si vous n'avez pas supprime la e compression d'en-t^tes VJ (elle est validee par defaut). e Le programme pppd conna^t aussi quelques options permettant de con gurer le comportement general de la procedure de negociation, comme le nombre maximal de requ^tes de con guration qui peuvent ^tre echangees avant d'abandonner tout espoir. e e Sauf si vous savez exactement ce que vous faites, ne touchez a rien. En n, il y a deux options concernant les messages d'echo LCP. Le protocole PPP de nit deux messages, Echo Request et Echo Response (demande et reponse d'echo). Le demon pppd utilise cette possibilite pour tester si une liaison est toujours operationnelle. Vous pouvez la valider par l'option lcp-echo-interval suivie d'une duree exprimee en secondes. Si aucune trame n'est recue de la machine distante pendant cet intervalle, pppd va generer une demande d'echo et attendre une reponse. Si rien n'arrive, la liaison se terminera apres un certain nombre de tentatives, dont le nombre peut ^tre positionne par l'option lcp-echo-failure. Par defaut, cette possibilite e n'est pas en service.
124
125
CHAP n'a pas ces inconvenients. Avec lui, le serveur desirant l'authenti cation envoie un (( de )) au client, sous forme d'une cha^ne de caracteres generee aleatoirement, en m^me temps que son nom de machine. Le client doit alors utiliser le nom pour trouver e le secret correspondant, le combiner avec la cha^ne, et encrypter la cha^ne par une fonction de hachage. Le resultat est retourne au serveur avec le nom de machine du client. Celui-ci e ectue alors les m^mes calculs, et autorise l'acces au client s'il obtient e le m^me resultat. e Un autre avantage de CHAP est qu'il ne demande pas seulement au client de s'identi er au debut de la connexion, mais il envoie des de s a intervalles reguliers pendant la communication pour s'assurer que la machine n'a pas ete remplacee discretement par un intrus, par exemple en commutant la ligne telephonique. Le programme pppd conserve les cles secretes pour CHAP et PAP dans deux chiers distincts, nommes respectivement /etc/ppp/chap-secrets et pap-secrets. En ajoutant un nom de machine dans l'un ou l'autre de ces chiers, vous pouvez facilement choisir quels systemes authenti er avec quel protocole. Par defaut, pppd ne demande aucune authenti cation de la machine distante, mais sera d'accord pour s'identi er lui-m^me sur demande. Comme CHAP est plus puissant e que PAP, pppd tentera d'utiliser le premier chaque fois que possible. Si l'autre bout ne le supporte pas, ou que pppd ne trouve pas de secret CHAP pour le systeme distant dans son chier chap-secrets, il passera a PAP. S'il ne possede pas de secret PAP pour son correspondant non plus, il refusera toute authenti cation. En consequence, la connexion se terminera la. Ce comportement peut ^tre modi e de di erentes facons. Par exemple, avec le mot e cle auth, pppd demandera a son correspondant de s'authenti er. Il acceptera aussi bien CHAP que PAP, tant qu'il possede des informations concernant la machine en question dans ses bases CHAP ou PAP. Il y a d'autres options permettant de supprimer l'un ou l'autre protocole, mais nous ne les decrirons pas ici consultez la page de manuel de pppd(8) si vous en avez besoin. Si tous les systemes avec lesquels vous faites du PPP sont d'accord pour s'authenti er aupres de vous, vous devez mettre l'option auth dans le chier global /etc/ppp/options et de nir des mots de passe pour chaque systeme dans le chier chap-secrets. Si l'un d'eux ne supporte pas CHAP, ajoutez son entree dans le chier pap-secrets. Ainsi, vous serez assure qu'aucun systeme inconnu ne pourra realiser de connexion PPP chez vous. Les deux sections suivantes vont traiter des deux chiers secrets, pap-secrets et chapsecrets. Ils resident dans le repertoire /etc/ppp et contiennent des triplets de clients, serveurs, et mots de passe, suivis facultativement par une liste d'adresses IP. L'interpretation des champs client et serveur est di erente selon qu'il s'agit de CHAP ou de PAP, et depend egalement de quel c^te provient la demande d'authenti cation. o
126
Lors de l'etablissement d'une connexion PPP avec la machine pabo, celle-ci demande a kro de s'authenti er en envoyant un de CHAP. Alors, pppd cherche une entree dont le champ client est kro.bibine.com et le champ serveur pabo.bibine.com 9, dans le chier chap-secrets. Il trouve la premiere ligne du chier, comme nous le voyons dans l'exemple il genere alors la reponse CHAP a partir de la cha^ne de de et du secret correspondant (Un Linux Sinon Rien), et l'envoie a pabo. Dans le m^me temps, pppd compose un de CHAP pour pabo contenant une cha^ne e unique et son nom pleinement quali e kro.bibine.com. La machine pabo construit alors la reponse comme nous venons de l'expliquer, et l'envoie a kro. Alors, pppd en extrait le nom du client (pabo.moche.com) et cherche dans le chier chap-secrets une ligne dans laquelle pabo est client et kro est serveur. La second ligne correspond, aussi pppd combine-t-il le de CHAP et le secret (horreur, Boudinus), encrypte la chose, et compare le resultat a la reponse CHAP de pabo. Les 4 champs optionnels listent les adresses IP qui sont acceptables pour les clients indiques dans le premier champ. Les adresses peuvent ^tre donnees en notation sur 4 e octets, ou sous forme de noms qui seront resolus par le resolver. Par exemple, si pabo demande, pendant la negociation IPCP, une adresse IP qui n'est pas dans cette liste, la requ^te sera rejetee. Dans l'exemple ci-dessus, pabo est par consequent limite a e l'emploi de sa propre adresse IP. Si le champ adresse est vide, n'importe laquelle sera autorisee et la valeur (( - )) interdit toute liaison IP avec ce client. La troisieme ligne de notre exemple de chier chap-secrets autorise n'importe quelle machine a etablir une liaison PPP avec kro, car un champ client ou serveur contenant * correspond a n'importe quel nom, il s'agit d'un caractere generique. La seule
8 Les double quotes (" ") ne font pas partie du mot de passe ces caracteres sont la pour preserver l'espace contenu dans le mot de passe. 9 Ce nom est recupere dans le de CHAP.
: :
127
condition est que le correspondant connaisse le secret, et utilise l'adresse de la machine pub.bibine.com. Les entrees contenant des caracteres generiques dans le nom de machine peuvent appara^tre n'importe ou dans le chier, puisque pppd utilisera toujours la ligne la plus speci que s'appliquant a un couple client/serveur. Le demon pppd peut avoir besoin d'un peu d'aide pour les noms d'h^tes. Comme nous o l'avons deja explique, le nom de la machine distante est toujours fourni par celle-ci dans le de CHAP ou le paquet de reponse. Le nom local sera trouve en appelant la fonction gethostname(2). Si vous avez initialise le nom du systeme sans le domaine, donc non quali e, il vous faudra indiquer le domaine a pppd par l'option domain :
# pppd
: : : domain
bibine.com
Cela lui permettra d'ajouter ce domaine au nom kro, pour toutes les operations d'identi cation. D'autres options permettent de changer l'idee que se fait pppd du nom local de la machine : usehostname et name. Lorsque vous donnez l'adresse IP locale sur la ligne de commande par adresse locale:adresse distante, et que adresse locale est un nom au lieu d'une adresse IP, pppd l'utilisera comme nom local. Pour plus de details, consultez la page de manuel de pppd(8).
La premiere ligne est utilisee pour nous identi er lorsque nous communiquons avec pabo. La seconde decrit comment un utilisateur nomme pabo doit s'identi er aupres de nous. Le nom kro-pap, dans la premiere colonne, est le nom d'utilisateur que nous envoyons a pabo. Par defaut, pppd prendra le nom de machine local comme nom d'utilisateur, mais vous pouvez aussi indiquer un nom di erent en le passant par l'option user.
128
Lorsqu'il prend une entree dans le chier pap-secrets pour authenti cation avec le correspondant, pppd a besoin de conna^tre le nom de la machine distante. Comme il n'a aucun moyen de le deviner, vous devez lui speci er sur la ligne de commandes par l'option remotename. Par exemple, pour utiliser l'entree ci-dessus pour une authentication avec pabo, nous devons rajouter l'option suivante lors de l'appel a pppd :
# pppd ... remotename pabo user kro-pap
Dans le quatrieme champ (et tous les suivants), vous pouvez indiquer quelles adresses IP sont autorisees pour cette machine particuliere, exactement comme dans le chier de secrets CHAP. Le correspondant ne pourra alors demander que des adresses faisant partie de cette liste. Dans notre exemple, nous exigeons que pabo utilise sa propre adresse IP. Notez que PAP est une methode d'identi cation plut^t legere, et il est fortement o conseille d'employer CHAP chaque fois que possible. Par consequent, nous n'entrerons pas plus dans les details de PAP ici si vous en avez besoin vous pourrez trouver les renseignements qui vous manquent dans le manuel de pppd(8).
Bien entendu, vous aurez des valeurs UID et GID di erentes de celles montrees ici (500 et 200), et il vous faudra positionner le mot de passe avec la commande passwd. Le script ppplogin pourrait ressembler a celui-ci :
#!/bin/sh # ppplogin - script pour lancer pppd en serveur mesg n stty -echo exec pppd -detach silent modem crtscts
La commande mesg interdit aux autres utilisateurs d'ecrire sur le tty par la commande write, par exemple. La commande stty, elle, supprime l'echo des caracteres, a n que ce qu'envoie l'appelant ne lui soit pas retourne en echo. L'option la plus importante est -detach, car elle emp^che pppd de se detacher du terminal de contr^le. e o Si nous ne mettions pas cette option, il se placerait en arriere-plan, et le script se
129
terminerait, ce qui aurait pour consequence de faire raccrocher la ligne. L'option silent indique au programme d'attendre jusqu'a ce qu'il recoive un paquet du systeme appelant avant d'en envoyer lui-m^me. Cela permet d'eviter des problemes avec cere tains systemes assez lents a lancer leur client PPP. L'option modem indique qu'il faut prendre en compte les lignes de contr^le du modem sur le port serie. Il faut toujours o mettre cette option quand on utilise pppd avec un modem. En n, crtscts valide le contr^le de ux materiel. o Parallelement a ces options, il est conseille de forcer une authenti cation quelconque, par exemple en speci ant auth sur la ligne de commandes ou dans le chier global. La page de manuel indique aussi des options speci ques permettant de valider ou de supprimer individuellement chaque protocole d'authenti cation.
130
131
Chapitre 9
132
Par consequent, pratiquement toutes les installations UNIX emploient un (( super serveur )) qui cree des sockets pour un certain nombre de services et les ecoute toutes en m^me temps par l'appel systeme select(2). Lorsqu'un h^te distant demande l'un e o de ces services, ce super serveur s'en apercoit et execute le demon speci e pour ce port. Le super serveur communement utilise s'appelle inetd, Internet Daemon. Il est lance lors du demarrage du systeme et prend la liste des services qu'il doit gerer dans un chier nomme /etc/inetd.conf. En plus de ceux-ci, inetd lui-m^me o re un certain e nombre de services tres simples, ce sont les services internes. Ils comprennent chargen, qui genere une simple cha^ne de caracteres a des ns de test et daytime, qui retourne la date systeme sous forme ASCII. Une entree de ce chier consiste en une simple ligne composee des champs suivants :
service type protocole wait utilisateur serveur ligne-de-commandes
type
protocol
wait
utilisateur
Donne le nom du service. Il doit ^tre traduit en numero de port, en e le recherchant dans le chier /etc/services, qui sera decrit dans la section (( Les chiers services et protocols )). Speci e un type de socket, soit stream (pour les protocoles orientes connexion) ou dgram (pour les protocoles sans connexion). Les services bases sur TCP doivent par consequent toujours utiliser le mot cle stream, alors que ce sera dgram pour ceux bases sur UDP. Donne le protocole de transport employe par ce service. Ce doit ^tre e un protocole valide, declare dans le chier protocols, decrit un peu plus loin. Cette option ne s'applique qu'aux sockets dgram. Ce peut ^tre soit e wait, soit nowait. Dans le cas de wait, inetd n'execute qu'un seul serveur a la fois pour le port en question. Sinon, il continuera immediatement l'ecoute apres avoir lance le service. Cette possibilite est tres utile pour les serveurs qui lisent tous les datagrammes qui arrivent, puis se terminent. La plupart des serveurs RPC sont de ce type et doivent par consequent ^tre utilises avec le e mot cle wait. Les sockets stream doivent toujours employer nowait. Il s'agit de l'identi cation utilisateur sous lequel le processus doit ^tre e execute. Ce sera souvent root, le superutilisateur, mais quelques services peuvent necessiter di erents comptes. Ici, c'est toujours une bonne idee d'appliquer le principe des privileges mimimaux, qui declare que vous ne devez pas executer une commande sous un compte
133
serveur
privilegie si ce n'est pas necessaire pour qu'elle fonctionne correctement. Par exemple, les serveurs NNTP de News Usenet fonctionneront sous l'utilisateur news, et les services pouvant poser des problemes de securite (comme tftp ou nger) sont souvent sous l'utilisateur nobody. Donne le chemin d'acces complet au programme serveur qui doit ^tre e execute. Les services internes sont reperes par le mot cle internal. Il s'agit de la ligne de commandes a passer au serveur. Elle inclut l'argument 0, c'est-a-dire le nom de la commande. Generalement, ce sera le nom du programme, sauf s'il a un comportement di erent selon le nom sous lequel il est invoque. Pour les services internes, ce champ est vide.
ligne-de-commandes
# # services inetd ftp stream tcp nowait root /usr/sbin/ftpd in.ftpd -l telnet stream tcp nowait root /usr/sbin/telnetd in.telnetd -b/etc/issue #finger stream tcp nowait bin /usr/sbin/fingerd in.fingerd #tftp dgram udp wait nobody /usr/sbin/tftpd in.tftpd #tftp dgram udp wait nobody /usr/sbin/tftpd in.tftpd /boot/diskless login stream tcp nowait root /usr/sbin/rlogind in.rlogind shell stream tcp nowait root /usr/sbin/rshd in.rshd exec stream tcp nowait root /usr/sbin/rexecd in.rexecd # # services internes a inetd # daytime stream tcp nowait root internal daytime dgram udp nowait root internal time stream tcp nowait root internal time dgram udp nowait root internal echo stream tcp nowait root internal echo dgram udp nowait root internal discard stream tcp nowait root internal discard dgram udp nowait root internal chargen stream tcp nowait root internal chargen dgram udp nowait root internal
Un exemple de chier inetd.conf est donne dans la gure 9.1. Les services nger et tftp sont commentes de maniere a les rendre indisponibles. On agit souvent ainsi pour des raisons de securite, nger peut par exemple ^tre utilise pour obtenir les noms des e utilisateurs de votre systeme. Le programme tftp implemente le Trivial File Transfer Protocol, qui permet a n'importe qui de transferer n'importe quel chier lisible par tous depuis votre systeme,
134
sans aucun test de mot de passe. C'est particulierement dangereux pour le chier /etc/passwd, surtout si vous n'utilisez pas le systeme shadow. TFTP est utilise par les clients diskless et les terminaux X pour telecharger leur code depuis un serveur. Si vous devez vraiment utiliser tftpd pour cela, assurez-vous de limiter sa vision de votre systeme aux repertoires dans lesquels se trouvent les chiers a prendre, en ajoutant leur nom sur la ligne de commandes de tftpd. Vous pouvez voir un exemple de cette methode dans la seconde ligne tftp de la gure 9.1.
Si l'on ne rajoute aucun contr^le d'acces, rien ne para^tra change sur la machine, o tout fonctionnera comme d'habitude, sauf que toutes les requ^tes seront tracees via e la facilite auth de syslog. Ce contr^le d'acces est implemente au moyen de deux chiers appeles /etc/hosts.allow o et /etc/hosts.deny. Ils contiennent des entrees autorisant ou refusant l'acces, respectivement, a certains services et h^tes. Lorsque tcpd gere une requ^te d'un service comme o e nger en provenance d'un client nomme, par exemple, geneur.penible.com, il regarde dans hosts.allow et hosts.deny (dans cet ordre) si une entree correspond a la fois a ce nom et au service demande. S'il la trouve dans hosts.deny, la requ^te est rejetee e et la connexion immediatement fermee. Si rien n'est trouve, la requ^te est acceptee. e 2 Ecrit par Wietse Venema, wietse@wzv.win.tue.nl.
3 Le terme semble consacre, inutile donc de fournir un equivalent francais.
: :
135
services est une liste de noms valides dans /etc/services, ou encore le mot cle ALL (tout). Pour designer tous les services sauf nger et tftp, vous pouvez mettre (( ALL EXCEPT nger, tftp )). hotes est une liste de noms de machines ou d'adresses IP, ou encore les mots-cles ALL, LOCAL ou UNKNOWN (inconnu). ALL indique n'importe quelle machine alors que LOCAL designe uniquement celles dont le nom ne contient pas de point 4 . UNKNOWN designe tous les h^tes dont la recherche de nom ou d'adresse a echoue. Un nom o commencant par un point correspond a tous les h^tes dont le domaine est identique a o cette cha^ne. Par exemple, .penible.com designera aussi bien geneur.penible.com que lourd.penible.com. Il est possible aussi de traiter les adresses IP reseau et sous-reseau consultez la page de manuel hosts access(5) pour en savoir plus. Pour interdire l'acces a nger et tftp a tout le monde sauf aux machines locales, mettez ce qui suit dans /etc/hosts.deny, et laissez vide le chier /etc/hosts.allow :
in.tftpd, in.fingerd: ALL EXCEPT LOCAL, .votre.domaine
Le champ facultatif commande peut contenir une commande shell a appeler lorsque l'entree correspond. C'est tres utile pour poser des pieges permettant de mettre en evidence les eventuels intrus :
in.ftpd: ALL EXCEPT LOCAL, .bibine.com : \ echo "Requete de %d@%h" >> /var/log/finger.log if %h != "kro.bibine.com" ] then \ finger -l @%h >> /var/log/finger.log \ fi \
Les arguments %h %d sont traduits par tcpd sous forme du nom de machine e ectuant la requ^te et de celui du service, respectivement. La encore, consultez la page de e manuel hosts access(5) pour plus de details.
136
# # # # # # # # # # # #
Echo Discard Date systeme Generateur de caracteres File Transfer Protocol Virtual Terminal Protocol Simple Mail Transfer Protocol Network News Transfer Protocol
# # # # # # # #
BSD rexecd notification du courrier login distant who and uptime distants commande distante, sans mot de passe syslog par reseau spouleur d'imprimante protocole RIP
est maintenue sur chaque machine elle se trouve dans un chier dont le nom est /etc/services. Il comporte des entrees composees ainsi :
service port/protocole alias]
Ici, service et port de nissent respectivement le nom du service et le port correspondant, et protocole indique quel protocole de transport est utilise. En principe, c'est soit udp, soit tcp. Il est possible qu'un service soit disponible par plus d'un protocole, ou bien qu'un m^me port soit utilise pour plusieurs services, tant que ces protocoles e sont di erents. Le champ alias permet de speci er plusieurs noms pour un m^me e service. Generalement, il n'est pas necessaire de modi er le chier services fourni avec la partie reseau de votre systeme Linux. Neanmoins, vous trouverez un petit extrait de ce chier dans la gure 9.2. Par exemple, notez que le service echo est o ert sur le port 7 a la fois pour TCP et UDP, et que le port 512 sert a deux services di erents : execution distante (rexec(1)) utilisant TCP, et le demon COMSAT, qui indique aux utilisateurs que du nouveau courrier est arrive, par UDP (voir xbi (1x)).
137
# # # # # #
internet protocol, pseudo protocol number internet control message protocol internet group multicast protocol transmission control protocol user datagram protocol RAW IP interface
Comme pour les services, les fonctions reseau ont besoin d'un moyen de traduire les noms de protocoles | par exemple, ceux indiques dans le chier services | en numeros de protocoles compris par la couche IP de toute autre machine. Il existe un chier pour cela, /etc/protocols. Il contient une entree par ligne, composee du nom du protocole, et de son numero associe. Vous n'aurez probablement jamais a modi er ce chier, dont un exemple est donne gure 9.3.
138
La communication reseau entre serveurs et clients RPC est un peu particuliere. Un serveur RPC o re un ou plusieurs ensembles de procedures chacun etant appele un programme et identi e de maniere unique par un numero de programme. Une liste contenant la correspondance entre les noms de services et les numeros de programmes est en principe disponible dans le chier /etc/rpc, dont un extrait est reproduit dans la gure 9.4.
# # /etc/rpc - divers services RPC # portmapper 100000 portmap sunrpc rstatd 100001 rstat rstat_svc rup perfmeter rusersd 100002 rusers nfs 100003 nfsprog ypserv 100004 ypprog mountd 100005 mount showmount ypbind 100007 walld 100008 rwall shutdown yppasswdd 100009 yppasswd bootparam 100026 ypupdated 100028 ypupdate
Sur les reseaux TCP/IP, les auteurs de RPC furent confrontes au probleme de faire correspondre un service reseau generique aux numeros de programmes. Ils deciderent que chaque serveur proposerait a la fois un port TCP et UDP pour chaque programme et chaque version. Generalement, les applications RPC utiliseront UDP pour envoyer des donnees, et ne prendront TCP que si les donnees a transferer ne tiennent pas dans un seul datagramme UDP. Bien s^r, les clients doivent avoir un moyen de trouver a quel port correspond un u numero de programme donne. Un chier de con guration serait inadapte comme les applications RPC n'utilisent pas de ports reserves, il n'y aurait aucune garantie qu'un port utilise a l'origine pour notre application de base de donnees n'ait pas ete pris par quelque autre processus. Par consequent, les applications RPC prennent n'importe quel port possible et l'enregistrent par le biais du demon portmapper. Il agit comme un concierge pour tous les serveurs RPC en fonctionnement sur sa machine. Un client desirant contacter un service avec un numero de programme donne demandera d'abord au portmapper de la machine serveur, qui lui indiquera les ports TCP et UDP par lesquels le service peut ^tre atteint. e Cette methode a l'inconvenient d'introduire un point faible, un peu comme le fait le demon inetd pour les services Berkeley standard. Mais ici, c'est encore pire car lorsque le portmapper s'arr^te pour une raison quelconque, toutes les informations e sont perdues ce qui signi e que vous devez relancer manuellement chaque serveur, ou reamorcer completement la machine.
139
Sous Linux, le portmapper s'appelle rpc.portmap et se trouve dans /usr/sbin. Il ne demande aucune con guration particuliere, il su t de s'assurer qu'il est bien lance au demarrage du systeme, par exemple depuis le chier rc.inet2.
140
machine euler. Tout au long de cet exemple, nous considererons Janet comme l'utilisateur client, et Joe comme l'utilisateur local. Janet tape sa commande sur gauss :
$ rlogin -l joe euler
Le serveur commence par tester hosts.equiv 6 pour voir si Janet a droit a un acces libre, et si la reponse est negative, il essaiera de le trouver dans le chier .rhosts du repertoire personnel de joe. Le chier hosts.equiv sur euler contient ceci :
gauss euler -public quark.physique.groucho.edu
andres
Une entree consiste en un nom de machine, suivi facultativement par un nom d'utilisateur. Si un h^te appara^t seul, tous ses utilisateurs seront admis sous leurs comptes o locaux sans aucun test d'identi cation. Dans l'exemple ci-dessus, Janet aurait le droit de se connecter sous son compte janet en arrivant de gauss, et ce serait vrai pour tout autre utilisateur a l'exception de root. Toutefois, si Janet voulait entrer sous le nom joe, il lui serait demande le mot de passe correspondant. Si un nom d'h^te est suivi par un utilisateur, comme dans la derniere ligne de o l'exemple, ce dernier possede alors un acces libre, sans mot de passe, a tous les comptes excepte celui de root. Le nom de machine peut aussi ^tre precede du signe moins, comme dans l'entree e public. Cela a pour e et de demander l'authenti cation pour tous les comptes de -public, quels que soient les droits que les utilisateurs pourraient s'octroyer via leur chier .rhosts. Le format de .rhosts est identique a celui de hosts.equiv, mais sa signi cation est un peu di erente. Considerons le chier .rhosts de Joe, sur la machine euler :
chomp.cs.groucho.edu gauss janet
La premiere entree autorise un acces libre a l'utilisateur joe lorsqu'il arrive de la machine chomp.cs.groucho.edu, mais ne change rien aux droits de tout autre compte sur euler ou chomp. La seconde entree est une variante, en ce sens qu'elle donne un acces libre du compte de Joe a janet, s'il arrive de gauss. Notez que le nom de machine du client est obtenu par la recherche inverse sur son adresse IP, et donc que cette possibilite ne fonctionnera pas avec des h^tes inconnus o 6 Notez que le chier hosts.equiv n'est pas utilise si quelqu'un tente de se connecter sous root.
:
141
du resolver. Ce nom d'h^te est considere correspondre au nom contenu dans le chier o hosts dans l'un des cas suivants : { Le nom canonique du client (et non pas un alias) est identique a celui contenu dans le chier. { Si le nom de la machine cliente est un nom pleinement quali e (comme le retournera le resolver si vous utilisez le DNS), et qu'il n'est pas identique a celui trouve dans le chier, il sera compare a ce dernier, augmente du nom de domaine local.
142
143
Chapitre 10
144
que tres recemment portes sous Linux, par Swen Thummler 1 . Il manque un serveur NIS dans l'implementation de reference. Tobias Reber a realise un autre paquetage NIS comprenant tous les outils et un serveur il s'appelle yps 2 . Actuellement, une reecriture complete du code NIS, appelee NYS est en cours, ce travail est e ectue par Peter Eriksson 3 elle supportera aussi bien le NIS standard que la nouvelle version tres amelioree de Sun, NIS+. NYS o re non seulement un ensemble d'outils et un serveur, mais ajoute de toutes nouvelles bibliotheques de fonctions qui l'ameneront sans doute a faire partie de la libc standard un jour. Cela comprend une nouvelle methode de con guration pour la resolution de noms qui remplace l'actuelle, avec host.conf. Nous decrirons les caracteristiques de ces fonctions. Ce chapitre est oriente sur NYS plut^t que les deux autres paquetages, que nous o appellerons le code NIS (( traditionnel )). Si vous avez l'intention d'utiliser l'une ou l'autre implementation, les instructions contenues dans ce guide pourront peut-^tre e ne pas su re. Pour toute information supplementaire, consultez un ouvrage specialise sur le sujet, comme NFS and NIS, par Hal Stern ( NFS and NIS]). Pour l'instant, NYS est encore en cours de developpement, et par consequent les utilitaires standard de Linux comme les programmes reseau ou login n'ont pas encore ete adaptes. Toutefois, NYS est integre a la bibliotheque C libc depuis sa version 4.6, vous pouvez par consequent facilement construire votre propre bibliotheque supportant NYS au lieu du code NIS traditionnel 4 . Les responsables du projet GNU semblent aussi avoir l'intention d'integrer NYS dans leur implementation o cielle de la bibliotheque GNU libc, dont celle de Linux est derivee.
principaux sites di usant Linux, bien entendu. 2 La version courante (a l'heure ou nous ecrivons ces lignes) est yps-0.21 et peut ^tre telechargee e sur ftp.lysator.liu.se dans le repertoire /pub/NYS. 3 L'adresse de Peter est pen@lysator.liu.se. 4 Toutes les instructions necessaires pour creer une bibliotheque C contenant le support de NYS se trouvent dans le chier README.nys, dans le code source de cette bibliotheque. 5 DBM est une librairie de gestion de base de donnees simple qui utilise des techniques de hachage pour accelerer les operations de recherche. Il existe une implementation libre de cette bibliotheque appelee gdbm, du projet GNU. Elle fait partie de toute distribution serieuse de Linux.
:
145
cherche dans le chier hosts pour un nom de machine, ou pour une adresse IP. Par consequent, on va donc deriver de ce chier deux cartes NIS, nommees hosts.byname et hosts.byaddr. Le tableau 10.1 enumere les cartes courantes et les chiers a partir desquels elles sont generees. Fichier de reference /etc/hosts /etc/networks /etc/passwd /etc/group /etc/services /etc/rpc /etc/protocols /usr/lib/aliases Carte(s) correspondante(s) hosts.byname networks.byname passwd.byname group.byname services.byname rpc.byname protocols.byname mail.aliases
hosts.byaddr networks.byaddr passwd.byuid group.bygid services.bynumber rpc.bynumber protocols.bynumber
Vous pourrez trouver le support d'autres chiers et cartes dans certains paquetages NIS. Ils seront souvent relatifs aux informations d'applications que nous ne decrivons pas dans ce livre, comme la carte bootparams qui est utilisee par le serveur bootparamd de Sun. Il est courant d'attribuer des surnoms a certaines cartes, plus courts et plus simples a taper. Ces surnoms ne sont compris que de ypcat et ypmatch, deux outils destines a tester la con guration NIS. Pour en obtenir la liste, tapez la commande suivante :
$ ypcat -x NIS map nickname translation table: "passwd" -> "passwd.byname" "group" -> "group.byname" "networks" -> "networks.byaddr" "hosts" -> "hosts.byname" "protocols" -> "protocols.bynumber" "services" -> "services.byname" "aliases" -> "mail.aliases" "ethers" -> "ethers.byname" "rpc" -> "rpc.bynumber" "netmasks" -> "netmasks.byaddr" "publickey" -> "publickey.byname" "netid" -> "netid.byname" "passwd.adjunct" -> "passwd.adjunct.byname" "group.adjunct" -> "group.adjunct.byname" "timezone" -> "timezone.byname"
Le programme serveur NIS s'appelle traditionnellement ypserv. Pour un reseau de moyenne importance, un seul su t de plus grands reseaux peuvent avoir plusieurs de ces serveurs sur di erentes machines et di erents segments du reseau a n de limiter
146
la charge des h^tes serveurs et des routeurs. Ils sont synchronises en rendant un serveur o ma^tre, alors que les autres sont serveurs esclaves. Les cartes sont creees uniquement sur la machine du serveur ma^tre, et distribuees aux esclaves. Vous aurez remarque que, jusqu'a present, nous avons toujours parle de (( reseaux )) de maniere vague. NIS considere comme reseau l'ensemble des h^tes qui partagent une o partie des donnees de leur con guration systeme par son intermediaire et comprend un concept un peu particulier : le domaine NIS. Malheureusement, les domaines NIS n'ont absolument rien en commun avec les domaines que nous avons rencontres dans le DNS. Pour eviter toute ambigu te, nous devrons donc dans les pages qui suivent toujours indiquer de quel type de domaine nous parlons. Les domaines NIS n'ont qu'une fonction purement administrative. Ils sont pratiquement invisibles des utilisateurs, sauf pour le partage des mots de passe entre machines du domaine. Par consequent, le nom donne a un domaine NIS ne concerne que les administrateurs. Generalement, n'importe quel nom fera l'a aire, tant qu'il est different de tous les autres noms de domaines NIS eventuellement presents sur votre reseau local. Par exemple les administrateurs de (( La biere virtuelle )) peuvent choisir de creer deux domaines NIS, un pour eux-m^mes et un autre pour (( Les caves vire tuelles )), qu'ils appelleront respectivement canette et bouteille, par exemple. Une autre methode courante est d'employer tout simplement le nom du domaine DNS comme domaine NIS. Pour positionner et a cher le domaine NIS de votre h^te, vous o disposez de la commande domainname. Invoquee sans arguments, elle a che le domaine NIS courant pour le changer, vous devez passer superutilisateur et taper :
# domainname canette
Les domaines NIS determinent quel serveur interroger. Par exemple, le programme login d'une machine de nos viticulteurs ne doit, bien entendu, employer que le serveur de leur domaine NIS (ou l'un d'eux s'il y en a plusieurs) pour demander le mot de passe d'un utilisateur, et il en va de m^me pour les brasseurs a chaque domaine NIS e son serveur. Il nous reste un mystere a resoudre: comment un client peut-il trouver sur quel serveur se connecter ? L'approche la plus simpliste serait d'avoir un chier de con guration indiquant le nom de la machine a contacter. Ce n'est toutefois pas satisfaisant car il serait impossible de contacter plusieurs serveurs (du m^me domaine NIS, cela va e sans dire), selon leur disponibilite. Par consequent, les implementations traditionnelles de NIS emploient un demon special appele ypbind pour detecter un serveur dans leur domaine NIS. Avant de pouvoir e ectuer des requ^tes NIS, une application doit e trouver, gr^ce a ypbind, le serveur a contacter. a Ce demon ypbind sonde les serveurs en emettant sur le reseau IP local un message de di usion (broadcast) le premier qui repond est considere comme le plus rapide et sera utilise pour toutes les requ^tes NIS qui suivront. Apres un certain temps, ou si e le serveur devient indisponible, ypbind recherche a nouveau les serveurs actifs.
147
Cette methode est discutable sur un point vous n'en avez que rarement besoin, et elle introduit un probleme de securite: ypbind croit aveuglement la premiere machine qui repond, qui peut aussi bien ^tre un humble serveur NIS tout a fait correct, qu'un e malicieux intrus. Il n'est pas besoin de dire que c'est particulierement g^nant lorsque e vous gerez vos mots de passe par NIS. Pour se proteger, la bibliotheque NIS de Linux n'utilise pas ypbind par defaut, mais recupere le nom du serveur depuis un chier de con guration.
148
En ce qui concerne les implementations traditionnelles de NIS, certaines conventions ont emerge qui permettent de determiner quelles cartes sont ajoutees ou lesquelles remplacent l'information originale. Quelques-unes, comme les cartes passwd, demandent des modi cations du chier passwd qui, incorrectement e ectuees, creent des failles dans la securite du systeme. Pour eviter ces pieges, NYS emploie un systeme de con guration generale qui determine si un ensemble de fonctions particulier doit utiliser les chiers originaux, NIS ou NIS+, et dans quel ordre. Nous decrirons cela un peu plus loin.
Si vous comptez juste faire quelques experiences avec le serveur, assurezvous de ne pas le con gurer pour un domaine NIS deja existant sur votre reseau. Cela pourrait interrompre tout le service et vous rendre tres impopulaire aupres de beaucoup de gens... Il existe actuellement deux serveurs NIS disponibles sous Linux l'un se trouve dans le paquetage yps de Tobias Reber, et l'autre dans l'ensemble ypserv de Peter Eriksson. Celui que vous utiliserez n'a aucune importance, que vous preniez NYS ou le code NIS standard qui est actuellement dans la bibliotheque libc. A l'heure ou nous redigeons ce chapitre, le code gerant les serveurs esclaves NIS semble plus complet dans yps. D'un autre c^te, ypserv corrige un probleme de securite courant sous NIS (qui sera decrit o plus loin), ce que ne fait pas yps. Le choix depend donc entierement de vos besoins. Apres avoir installe le programme serveur (ypserv) dans /usr/sbin, vous devrez creer le repertoire destine a recevoir les cartes qui seront distribuees. Pour con gurer le domaine NIS canette, les cartes devront se trouver dans /var/yp/canette. Le serveur determine s'il gere un domaine NIS particulier en testant l'existence de ce repertoire. Si vous supprimez le service d'un domaine NIS, assurez-vous de supprimer egalement ce repertoire. A n d'accelerer les recherches, les cartes sont souvent stockees au format DBM. Elles sont creees a partir des chiers de reference a l'aide d'un programme appele makedbm (pour le serveur de Tobias) ou dbmload (pour celui de Peter). Attention, ces commandes peuvent ne pas ^tre interchangeables. Transformer un chier en une forme e comprehensible par dbmload necessite generalement un peu de magie awk ou sed, par consequent le paquetage ypserv de Peter Eriksson contient un Make le (nomme ypMake le) qui e ectue tout le travail pour vous. Vous devrez l'installer sous le nom
149
Make le dans le repertoire ou se trouvent vos cartes et l'editer pour qu'il re ete celles que vous desirez distribuer. Vers le debut de ce chier, vous trouverez la cible all qui indique les services que ypserv devra o rir. Par defaut, la ligne ressemble a celle-ci :
all: ethers hosts networks protocols rpc services passwd group netid
Si par exemple vous ne voulez pas produire les cartes ethers.byname et ethers.byaddr, il su t de supprimer le mot ethers de cette ligne. Pour tester votre con guration, vous pouvez commencer avec juste une ou deux cartes, comme services.*. Apres avoir edite ce Make le, restez dans le repertoire et tapez make. Les cartes seront alors automatiquement generees et installees. Il ne faudra pas oublier de mettre a jour ces cartes chaque fois que vous modi erez les chiers de reference, faute de quoi les modi cations resteraient invisibles sur le reseau. La section suivante detaille la con guration de la partie client de NIS. Si rien ne marche, essayez de voir si les requ^tes arrivent a votre serveur. En indiquant l'option e -debug sur la ligne de commandes de ypserv, vous obtiendrez des messages de deboguage sur la console, indiquant toutes les requ^tes NIS recues et le resultat qui est e envoye aux clients cela devrait vous permettre de localiser le probleme. Le serveur de Tobias ne possede pas cette option.
6 Pour valider cette option, il peut ^tre necessaire de recompiler le serveur. Lisez les instructions e contenues dans le chier README fourni dans la distribution.
:
150
Tous les h^tes du reseau IP 172.16.2.0 auraient acces au serveur NIS. Pour interdire o tous les autres, l'entree correspondante dans hosts.deny serait :
ypserv: ALL
Les numeros IP ne sont pas la seule facon de speci er h^tes ou reseaux dans hosts.allow o et hosts.deny. Consultez la page de manuel hosts access(5) sur votre systeme pour avoir plus de details. Toutefois, vous devez savoir qu'il est impossible d'utiliser des noms d'h^tes ou de domaines dans l'entree ypserv : si vous y mettez un nom, le o serveur essaie de le resoudre, mais le resolver appelle a son tour ypserv, et vous entrez dans une boucle in nie. Vous pouvez aussi utiliser le portmapper securise a la place de l'option securenets de ypserv. Cette version (portmap-3.0) 7 emploie aussi la methode par hosts.allow, mais o re cette securite pour tous les serveurs RPC, et non pas uniquement pour ypserv. Mais n'essayez pas d'utiliser a la fois securenets et le portmapper securise, ce serait inutile et la charge serait trop importante.
La premiere ligne indique a tous les clients NIS que cet h^te appartient au domaine o NIS bouteille. Si vous omettez cette declaration, NYS utilisera le nom de domaine que vous avez assigne au systeme par la commande domainname. La seconde ligne indique le nom du serveur NIS a utiliser. Bien entendu, l'adresse IP correspondant a gamay doit se trouver dans le chier hosts l'alternative etant de mettre directement cette adresse IP au lieu du nom. Dans la forme ci-dessus, la commande server indique a NYS d'utiliser le serveur speci e, quel que soit le domaine NIS courant. Si, toutefois, vous deplacez votre machine frequemment d'un domaine NIS a un autre, vous pouvez indiquer ces domaines dans le chier yp.conf : il su t d'indiquer plusieurs serveurs, suivi du domaine NIS correspondant. Par exemple :
7 Disponible par FTP anonyme sur sunsite.unc.edu dans le repertoire Linux/systems/Network.
:
151
Ce pourrait ^tre la con guration d'une machine portable, appelee a ^tre utilisee tour a e e tour dans ces deux domaines NIS. Il su ra d'initialiser le domaine desire au moment du demarrage du systeme, par la commande domainname. Apres avoir cree ce chier de con guration de base et avoir veri e qu'il est lisible par tout le monde, vous devez faire votre premier test pour voir si vous pouvez bien vous connecter a votre serveur. Choisissez une carte que celui-ci distribue, comme hosts.byname, et essayez de la recuperer avec l'utilitaire ypcat. Ce programme, comme tous les autres outils d'administration NIS, doit se trouver dans le repertoire /usr/sbin.
# ypcat hosts.byname 172.16.2.2 brouilly.bibine.com 172.16.2.3 gamay.bibine.com 172.16.1.1 kro.bibine.com 172.16.2.1 kro.bibine.com 172.16.1.2 gueuze.bibine.com 172.16.1.3 trappiste.bibine.com 172.16.2.4 cahors.bibine.com brouilly gamay kro kro gueuze trappiste cahors
Vous devriez obtenir une sortie ressemblant a celle ci-dessus. Si vous avez un message d'erreur disant (( Can't bind to server which serves domain )), c'est que soit le domaine NIS que vous avez initialise n'a pas de serveur correspondant de ni dans le chier yp.conf, soit que le serveur est inaccessible pour une raison quelconque. Dans ce dernier cas, veri ez qu'un ping vers cette machine fonctionne bien, et qu'il y existe bien un serveur NIS. Vous pouvez veri er si un serveur NIS est present par la commande rpcinfo, qui devrait vous a cher :
# rpcinfo -u nom-de-machine ypserv program 100004 version 2 ready and waiting
152
D'autres cartes, comme services.byname, rendent un service moins impressionnant, mais peuvent neanmoins vous epargner un peu de travail d'edition de chiers de con guration. La carte services.byname est interessante si vous installez des applications reseaux qui emploient des services absents du chier services standard (ce qui est un cas assez courant). En general, il sera bon de pouvoir choisir quand une fonction de recherche devra utiliser les chiers locaux ou le serveur NIS. NYS permet de con gurer l'ordre dans lequel ces recherches sont faites, par l'intermediaire du chier /etc/nsswitch.conf, (Name Service Switch). Ce chier contient une ligne pour chacune des fonctions de recherche supportees par NYS. L'ordre correct depend du type des donnees. Il y a peu de chances que la carte services.byname contienne des entrees di erentes de celles du chier local /etc/services tout au plus pourra-t-elle contenir des entrees supplementaires. Par consequent, il para^t raisonnable d'e ectuer les recherches d'abord dans le chier local, et ne tester NIS que si le nom de service recherche ne s'y trouve pas. En revanche, les informations sur les noms de machines peuvent changer frequemment, donc DNS ou NIS sont toujours plus a jour que le chier /etc/hosts qui ne contient qu'une sauvegarde en cas de probleme. Dans ce cas, il ne faudra e ectuer les recherches dans ce chier qu'en dernier recours. L'exemple suivant montre comment forcer les fonctions gethostbyname(2), gethostbyaddr(2) et getservbyname(2) a interroger NIS et DNS avant de scruter le chier hosts. Elle essaieront chaque service cite dans l'ordre ou ils apparaissent sur la ligne. Si une recherche aboutit, le resultat est immediatement retourne, sinon le service suivant est interroge.
# petit exemple de fichier /etc/nsswitch.conf # hosts: nis dns files services: files nis
Voici la liste complete des services susceptibles d'^tre utilises dans une entree de nsse witch.conf. Les cartes, chiers, serveurs et objets utilises pour les recherches dependent bien entendu du nom de l'entree.
nisplus ou nis+ nis
dns
Utilise le serveur NIS+ du domaine. Son adresse sera obtenue par le chier /etc/nis.conf. Interroge le serveur NIS du domaine. La machine a contacter est con guree dans le chier yp.conf comme decrit dans la section precedente. Pour les entrees hosts, ce sont les cartes hosts.byname et hosts.byaddr qui seront demandees. Utilise le serveur de noms DNS. Ce type de service n'est utile qu'avec
153
les dbm
l'entree hosts. Les serveurs de noms interroges sont toujours determines par le chier resolv.conf standard. E ectue la recherche dans les chiers locaux, comme par exemple /etc/hosts dans le cas de l'entree hosts. Recherche l'information dans les chiers DBM, qui sont situes dans le repertoire /var/dbm. Le nom du chier est celui de la carte NIS correspondante.
Pour l'instant, NYS supporte les entrees nsswitch.conf suivantes : hosts, networks, passwd, group, shadow, gshadow, services, protocols, rpc et ethers. D'autres entrees seront probablement ajoutees dans les versions ulterieures. La gure 10.1 montre un exemple plus complet, qui introduit un autre aspect de nsswitch.conf. Le mot cle NOTFOUND=return] dans l'entree hosts indique a NYS d'arr^ter la recherche si les donnees recherchees n'ont pu ^tre trouvees dans les bases e e de donnees NIS ou DNS. C'est-a-dire que NYS continuera la recherche dans les chiers locaux uniquement si les appels aux serveurs NIS et DNS echouent pour une raison quelconque. Les chiers locaux ne seront alors utilises qu'au moment du demarrage du systeme et comme sauvegarde lorsque le serveur NIS est inaccessible.
# /etc/nsswitch.conf # hosts: nis dns NOTFOUND=return] files networks: nis NOTFOUND=return] files services: protocols: rpc: files nis files nis files nis
154
bien d'autres choses, comme les montages NFS de partitions d'autres machines de votre reseau sur la v^tre. o Si l'une des valeurs de /etc/passwd ou /etc/group di ere de celle enregistree dans les cartes, vous devrez ajuster les proprietaires de tous les chiers qui appartiennent a cet utilisateur. Tout d'abord, il faudra changer tous les numeros d'utilisateurs et de groupes dans ces deux chiers pour les mettre a jour, puis trouver tous les chiers appartenant aux utilisateurs concernes, et en n changer leur proprietaire. Supposons que news avait un numero d'utilisateur de 9, et marcel de 103, et qu'ils ont ete changes pour de nouvelles valeurs. Il faudra alors executer les commandes suivantes :
# # # # find / -uid 9 -print >/tmp/uid.9 find / -uid 103 -print >/tmp/uid.103 cat /tmp/uid.9 | xargs chown news cat /tmp/uid.103 | xargs chown marcel
Il est tres important d'executer ces commandes une fois le nouveau chier passwd installe, et que tous les chiers ont ete trouves. La mise a jour des groupes se fait de la m^me maniere. e Apres cela, les numeros d'utilisateurs et de groupes sur votre systeme correspondront a ceux des autres machines de votre domaine NIS. L'etape suivante sera d'ajouter les lignes de con guration dans nsswitch.conf qui valideront les recherches NIS pour les informations utilisateur et groupe :
# /etc/nsswitch.conf - traitement de passw et group passwd: nis files group: nis files
Cela changera la maniere dont la commande login et toute sa famille rechercheront les informations utilisateur. Lorsque quelqu'un tente de se connecter, login demande d'abord la carte NIS, et si la recherche echoue, il se tournera vers les chiers locaux. En principe, on supprime pratiquement tous les utilisateurs des chiers locaux, pour ne laisser que les entrees reellement indispensables comme root, mail ou autres, car certaines applications ont besoin de trouver la correspondance entre ces noms d'utilisateurs et leur numero, et vice versa. Par exemple, les travaux administratifs de cron peuvent executer la commande su pour devenir provisoirement news, ou bien le systeme UUCP peut avoir a poster un courrier de statistiques. Si news et uucp n'ont pas d'entrees dans le chier local passwd, ces travaux echoueront lamentablement pendant les pannes NIS. Il y a deux gros pieges avec ce systeme. D'une part, la con guration decrite jusqu'ici ne fonctionne que pour la famille login qui n'utilise pas les mots de passe shadow, comme ceux inclus dans le paquetage util-linux. Nous verrons le cas des mots de passe shadow un peu plus loin. D'autre part, il y a d'autres commandes qui ont besoin des informations contenues dans le chier passwd regardons par exemple la commande ls, que tout le monde utilise presque constamment. Lorsqu'on lui demande une sortie
155
longue )), ls a che les noms des groupes et des utilisateurs proprietaires de chaque chier. Pour chaque numero rencontre, elle devra donc interroger le serveur NIS. Cela ralentira enormement les choses, surtout si votre reseau local est charge ne parlons m^me pas de la situation ou le serveur NIS n'est pas sur le m^me reseau physique et e e que les datagrammes doivent traverser un routeur. Mais ce n'est pas tout ! Imaginez ce qui arrive si un utilisateur desire changer son mot de passe. Il appellera la commande passwd le plus naturellement du monde, qui mettra a jour le chier passwd local. Or c'est impossible avec NIS, puisque ce chier n'est plus disponible localement, et il n'y a aucune option pour que les utilisateurs puissent se connecter au serveur NIS pour changer leurs mots de passe. Par consequent, NIS o re une commande de remplacement appelee yppasswd, qui est equivalente a passwd lorsque NIS est disponible. Elle contacte le serveur NIS par RPC, et lui donne le nouveau mot de passe. En general, on installe yppasswd a la place de la commande passwd originale, en faisant quelque chose comme ceci :
# cd /bin # mv passwd passwd.old # ln yppasswd passwd
Vous devrez en m^me temps installer rpc.yppasswdd sur le serveur et le lancer depuis e rc.inet2. Ainsi, toutes les complications induites par NIS seront totalement cachees aux utilisateurs.
156
Elle marque l'endroit ou les fonctions de recherche (( inserent )) les cartes NIS. Une ligne similaire dans le chier /etc/group a le m^me e et pour les cartes group.*. e Pour utiliser les cartes hosts.* distribuees par votre serveur YP, changez la ligne order du chier host.conf. Par exemple, pour utiliser NIS, DNS et /etc/hosts (dans cet ordre), cette ligne doit appara^tre ainsi :
order yp bind hosts
Contrairement a NYS, le code traditionnel necessite un demon ypbind pour trouver les serveurs actifs, qui doit ^tre invoque au demarrage du systeme apres que le domaine e NIS a ete initialise et que le portmapper RPC a ete lance. Jusqu'a il y a peu, ypbind cherchait les serveurs par di usion RPC. Comme nous l'avons dit au debut, c'est une solution peu s^re. C'est pourquoi la derniere version u des outils YP (de la distribution yp-linux) possede maintenant un demon ypbind qui supporte le chier de con guration /etc/yp.conf. Si ce chier existe, le programme y recherchera une ou plusieurs lignes de la forme :
# yp.conf - name YP server for ypbind. ypserver gamay
Le demon ypbind recherche alors les serveurs actifs parmi ceux indiques 8. S'il ne trouve pas de chier yp.conf, ou si aucun des serveurs ne repond, il reprendra l'ancienne methode de di usion RPC, a la recherche d'un serveur qui veuille bien repondre. Il y a eu recemment de nombreux rapports de bogue signalant que NIS echouait avec les messages d'erreur :
clntudp create: RPC: portmapper failure - RPC: unable to receive
8 Notez que le mot cle est di erent de celui utilise par NYS pour le nom du serveur.
:
157
Ils sont dus a une modi cation malencontreuse de la facon dont ypbind communique avec les fonctions de la bibliotheque. Pour y remedier, il faut se procurer les dernieres versions des sources des utilitaires NIS et les recompiler 9.
9: Le code source de yp-linux peut ^tre obtenu sur le site ftp.uni-paderborn.de dans le repertoire e /pub/Linux/LOCAL.
158
159
Chapitre 11
160
space NFS server), realise a l'origine par Mark Shand, et de hnfs (Harris NFS server), ecrit par Donald Becker. Voyons le fonctionnement de NFS. Un client essaie de monter un repertoire d'une machine distante sur un repertoire local, exactement de la m^me maniere qu'il le fait e pour un peripherique physique. Mais la syntaxe a employer pour designer le repertoire distant est di erente. Par exemple, pour monter le /home de kro sur le repertoire users de trappiste, l'administrateur tape la commande suivante sur trappiste 2 :
# mount -t nfs kro:/home /users
La commande mount essaiera de se connecter au demon mountd de kro via RPC. Le serveur testera si trappiste a l'autorisation de monter le repertoire en question, et si c'est le cas, retournera un descripteur de chier. Il sera utilise pour toutes les requ^tes e suivantes concernant les chiers de /users. Lorsque quelqu'un accede a un chier par NFS, le noyau envoie un appel RPC a nfsd (le demon NFS) sur la machine serveur. Cet appel prend comme parametres le descripteur de chier, le nom du chier auquel il faut acceder, et l'identi cation (numero et groupe) de l'utilisateur. Ces derniers sont utilises pour determiner les droits d'acces au chier en question. A n d'eviter que des utilisateurs non autorises puissent lire ou modi er des donnees, les numeros d'utilisateurs et de groupes doivent ^tre les m^mes sur les deux machines. e e Dans la plupart des implementations d'UNIX, le client comme le serveur NFS sont implementes comme des demons de niveau noyau qui sont lances depuis l'espace utilisateur au moment du demarrage du systeme. Ce sont nfsd, le demon NFS sur le serveur, et biod (Block I/O Daemon) sur la machine cliente. Pour ameliorer la vitesse, biod e ectue des entrees/sorties asynchrones et plusieurs exemplaires fonctionnent simultanement. Sous Linux, l'implementation de NFS est un peu di erente, en ce sens que le code client est integre a la couche VFS du noyau (Virtual File System, systeme de chiers virtuel) et ne necessite aucun autre contr^le additionnel par biod. De l'autre c^te, le code o o serveur fonctionne entierement dans l'espace utilisateur, aussi est-il impossible d'avoir plusieurs copies de ce serveur fonctionnant simultanement, en raison des problemes de synchronisation que cela poserait. Il n'y a pas non plus de cache, mais cela fait partie des projets de Rick Sladkey. Dans la version 1.0 de Linux, le plus gros probleme avec NFS est que le noyau n'est pas capable d'allouer de la memoire par blocs de plus de 4 Ko. En consequence, le code reseau ne peut pas gerer de datagrammes superieurs a environ 3 500 octets apres soustraction des en-t^tes et autres donnees internes. Cela signi e que les transferts e NFS avec des machines utilisant de grands datagrammes UDP par defaut (8 Ko sur SunOS par exemple) doivent ^tre arti ciellement reduits. Les performances en sont e
2 Vous pouvez omettre l'option -t caractere (( : )).
:
nfs
161
sensiblement a ectees en certaines circonstances 3. Cette limite est franchie les versions Linux-1.1 recentes, et le code client a ete modi e en consequence, bien entendu.
Si vous ne voyez pas nfs dans la liste, vous devez recompiler votre noyau en validant le support de NFS. Consultez la section (( Con guration du noyau )) du chapitre 3. Dans le cas d'une ancienne version, anterieure a Linux 1.1, le meilleur moyen de savoir si NFS est valide est d'essayer de monter un volume NFS. Pour cela, vous pouvez creer un repertoire de test dans /tmp, et essayer de monter un repertoire local dessus :
# mkdir /tmp/test # mount localhost:/etc /tmp/test
Si cette operation echoue avec un message d'erreur indiquant (( fs type nfs not supported by kernel ) , vous devrez vous compiler un nouveau noyau en validant ) NFS. Tout autre message d'erreur est sans importance, puisque rien n'est encore con gure.
3 Comme l'a explique Alan Cox : Les speci cations de NFS necessitent que le serveur termine toute ecriture disque avant de renvoyer un acquittement. Comme les noyaux BSD ne sont capables d'ecrire que des pages (4 Ko), ecrire quatre fragments de 1 Ko chacun sur un serveur NFS BSD resulte en quatre operations d'ecriture de 4 Ko chacune.
:
162
Avec volume nfs indique comme h^te distant:repertoire distant. Puisque cette o notation est unique aux systemes de chiers NFS, vous pouvez omettre l'option -t nfs. Il y a un certain nombre d'options additionnelles possibles que vous pouvez indiquer a la commande mount. Elles peuvent ^tre donnees soit apres le commutateur -o sur e la ligne de commandes, soit dans le champ prevu a cet e et dans l'entree du chier /etc/fstab correspondant a ce volume. Dans les deux cas, ces options sont separees entre elles par des virgules. Celles speci ees en ligne de commandes ont toujours priorite sur celles du chier fstab. Voici un exemple d'entree de /etc/fstab :
# volume news:/usr/spool/news point de montage /usr/spool/news type nfs options timeo=14,intr
En l'absence d'une entree fstab, la commande a passer est un peu moins lisible. Par exemple, supposons que vous montiez vos repertoires utilisateurs depuis une machine appelee labas, qui utilise par defaut des blocs de 4 Ko pour les operations de lecture/ecriture. Vous voulez reduire cette taille a 2 Ko parce que vous avez un ancien noyau Linux la commande est alors :
# mount labas:/home /home -o rsize=2048,wsize=2048
La liste de toutes les options valides est decrite en totalite dans la page de manuel de nfs(5) fournie avec la version de mount de Rick Sladkey (qui fait partie du paquetage util-linux). En voici un extrait :
rsize=n et wsize=n Speci ent la taille du datagramme utilisee par les clients NFS pour les requ^tes de lecture et d'ecriture, respectivement. Actuellement, e leur valeur par defaut est de 1 024 octets pour les raisons evoquees plus haut.
4 On ne dit pas systeme de chiers, car ce ne sont pas a proprement parler des systemes de chiers.
:
163
Indique le temps (en dixiemes de seconde) pendant lequel le client NFS attendra qu'une requ^te aboutisse. La valeur par defaut est 7 e (0,7 seconde). Marque explicitement le volume comme monte en dur. C'est l'option par defaut. Il s'agit de l'option inverse de hard. Autorise les signaux a interrompre un appel NFS. C'est utile lorsque le serveur ne repond pas.
Sauf pour rsize et wsize, toutes ces options concernent le comportement du client si le serveur devient momentanement inaccessible. Elles s'organisent de la facon suivante : Lorsque le client envoie une requ^te au serveur NFS, il attend pendant un certain e temps (de ni par l'option timeout) que l'operation soit terminee. Si aucune con rmation ne lui arrive pendant le temps imparti, un depassement de temps mineur est compte, et il recommence l'operation en doublant cet intervalle de temps. Lorsque cette valeur atteint 60 secondes, un depassement de temps majeur se produit. Par defaut, un depassement de temps majeur provoquera l'a chage d'un message sur la console, et l'operation recommencera, en doublant encore une fois le temps imparti. Le cycle peut durer eternellement. Les volumes montes ainsi, ou les operations seront tentees jusqu'a ce que le serveur reponde, sont dits montes en dur. Dans le cas inverse, le processus appelant recoit une erreur d'entree/sortie lorsqu'un depassement de temps majeur se produit. En raison du cache, cette condition d'erreur n'est pas propagee au processus avant son prochain appel a la fonction write(2), aussi dans ce cas de montage, un programme ne peut jamais ^tre certain qu'une operation d'ecriture a e reussi. Monter en dur ou non est une question de go^t, mais depend aussi des donnees auxu quelles vous comptez acceder par NFS. Par exemple, s'il s'agit de vos programmes X, vous ne souhaitez sans doute pas que votre session de travail se termine anormalement, uniquement parce que quelqu'un a momentanement surcharge le reseau en lancant sept copies de xv simultanement, ou parce que la prise s'est debranchee. Avec un montage en dur, vous serez s^r que votre machine attendra jusqu'a ce que le contact u soit retabli avec le serveur NFS. D'un autre c^te, les donnees non critiques, comme les o partitions de News Usenet ou les archives FTP, ne necessitent pas de montage en dur, de sorte que les sessions ne restent pas en attente inde niment en cas de panne reseau ou d'arr^t de la machine distante. Si votre reseau est souvent surcharge ou lent pour e des raisons diverses, vous pouvez augmenter le delai d'attente par l'option timeo, ou monter les volumes en dur, mais autorisez l'interruption des appels NFS (intr) pour ne pas rester bloque en cas de probleme. Generalement, le demon mountd conservera d'une maniere ou d'une autre une trace des repertoires qui ont ete montes, et par quels h^tes. Cette information peut ^tre o e a chee par la commande showmount, qui fait partie du paquetage serveur NFS. La
164
Les informations sur les proprietaires des chiers qu'un demon NFS fournit a ses clients ne contiennent en principe que les valeurs numeriques d'utilisateur et de groupe. Si le client et le serveur associent les m^mes valeurs aux m^mes personnes et e e groupes, on dit qu'ils partagent le m^me espace. C'est par exemple le cas lorsque vous e utilisez NIS pour distribuer les informations passwd a toutes les machines de votre reseau. Toutefois en certaines occasions ces valeurs ne correspondent pas. Plut^t que de moo di er la con guration de l'un ou l'autre systeme, vous pouvez employer le demon ugidd, qui s'occupera de parer au probleme. Gr^ce a l'option map daemon expliquee a plus loin, vous pouvez demander a nfsd de faire correspondre les valeurs utilisateur et groupe du serveur a celles du client, a condition que ugidd soit en fonctionnement sur ce dernier. Il s'agit d'un serveur RPC qui est lance depuis rc.inet2, exactement comme nfsd et mountd.
if fi -x /usr/sbin/rpc.ugidd ] then /usr/sbin/rpc.ugidd echo -n " ugidd"
165
un repertoire par NFS, ce repertoire doit ^tre exporte, c'est-a-dire indique dans le e chier exports. En voici un exemple :
# Fichier exports /home /usr/X11R6 /usr/TeX / /home/ftp de kro.bibine.com trappiste(rw) gueuze(rw) leffe(rw) trappiste(ro) gueuze(ro) leffe(ro) trappiste(ro) gueuze(ro) leffe(ro) trappiste(rw,no_root_squash) (ro)
Chaque ligne de nit un repertoire et les h^tes autorises a le monter. Les noms de o machines sont en general pleinement quali es, mais peuvent egalement contenir les caracteres generiques * et ?, qui ont la m^me signi cation que dans le shell Bourne. e Par exemple, lab*.foo.com correspondra aussi bien a lab01.toto.com qu'a labeur.toto.com. Si aucun nom de machine n'est precise, comme pour le repertoire /home/ftp dans l'exemple ci-dessus, n'importe quel h^te pourra monter ce volume. o Lorsqu'il veri e les permissions pour un client donne, mountd recherchera son nom par l'appel gethostbyaddr(2). Avec le DNS, cet appel retournera le nom canonique, aussi vous devez faire attention a ne pas utiliser d'alias dans le chier exports. Sans DNS, le nom retourne est le premier trouve dans le chier hosts, qui correspond a l'adresse du client. Le nom de machine est suivi par une liste facultative de drapeaux, separes par des virgules, entre parentheses. Ils peuvent prendre les valeurs suivantes : Autorise des acces non authenti es. unix-rpc Demande l'authenti cation RPC. Cela necessite simplement que la requ^te provienne d'un port reserve (un port dont le numero est e inferieur a 1024). C'est l'option par defaut. secure-rpc Demande l'authenti cation RPC securisee. Ce n'est pas encore implemente consultez la documentation de Sun pour plus de details. kerberos Demande l'authenti cation Kerberos. Cette option n'est pas encore implementee consultez la documentation du MIT pour plus de details sur le systeme Kerberos. Il s'agit d'une securite interdisant aux superutilisateurs des machines root squash speci ees tout acces special, en transformant les requ^tes de l'utilie sateur 0 sur le client en utilisateur 65534 (-2) sur le serveur, qui correspond en principe a l'utilisateur nobody. no root squash Ne change rien pour les requ^tes de superutilisateurs. C'est l'option e par defaut. ro Monte la hierarchie de chiers en lecture seule. C'est l'option par defaut.
insecure
166
rw link relative
Une erreur de syntaxe dans le chier exports sera rapportee via la (( facilite )) daemon de syslogd, au niveau notice, chaque fois que nfsd ou mountd sont lances. Notez que les noms de machines correspondant aux adresses IP des clients sont obtenus par recherche inverse, aussi le resolver doit ^tre con gure proprement. Si vous e employez BIND et ^tes tres concernes par la securite, vous devez employer l'option e nospoof dans votre chier host.conf.
167
L'automonteur couramment utilise sous Linux s'appelle amd. Il a ete ecrit par JanSimon Pendry et porte sous Linux par Mitch D'Souza. La version actuelle est amd-5.3. Le fonctionnement de amd depasse le cadre de ce guide. Pour un bon manuel, consultez les sources elles contiennent un chier Texinfo avec des informations tres detaillees.
168
169
Chapitre 12
170
Si vous ne disposez que de la version precedente (1.04), les di erences etant minimes vous devriez pouvoir utiliser les renseignements contenus dans ce chapitre pour le con gurer. Dans la plupart des distributions de Linux, Taylor UUCP est fourni precompile pour la compatibilite BNU, ou Taylor, ou les deux. La methode Taylor est bien plus exible et probablement plus facile a comprendre que les chiers de con guration BNU parfois assez obscurs, c'est donc celle-ci que nous allons decrire dans ce guide. Le but de ce chapitre n'est pas de vous donner une description exhaustive de tout ce que peut faire UUCP, mais plut^t de vous apporter de bonnes bases pour l'installation o d'un site UUCP qui fonctionne. La premiere section est une petite introduction sur la maniere dont UUCP implemente le transfert de chiers et l'execution de commandes a distance. Si tout cela n'est pas nouveau pour vous, vous pouvez aller directement a la section (( Fichiers de con guration )), qui detaille les di erents chiers utilises pour la con guration de UUCP. Nous considererons toutefois que vous connaissez les programmes utilisateurs mis en jeu dans UUCP. Ce sont principalement uucp et uux vous en trouverez la description dans le manuel en ligne. A c^te de ces deux commandes accessibles a tout le monde, UUCP en contient beauo coup d'autres qui ne sont destinees qu'aux t^ches administratives. Elles servent a a suivre le tra c UUCP, supprimer les vieux chiers de trace, ou calculer des statistiques. Aucun de ces programmes ne sera decrit ici car ils ne concernent pas directement le fonctionnement de UUCP. De plus, ils sont tres bien documentes et tres simples a utiliser. Il y a neanmoins une troisieme categorie de programmes, comprenant le c ur de UUCP : uucico (ou cico signi e copy-in copy-out, le programme de communications), et uuxqt, qui execute les commandes recues des systemes distants. Ils feront l'objet de ce chapitre. Ceux qui ne trouveront pas ici tous les renseignements dont ils ont besoin devront se reporter a la documentation fournie avec Taylor UUCP. Elle est composee d'un ensemble de chiers Texinfo qui decrivent la con guration selon le schema Taylor, et est extr^mement complete. e Si vous voulez utiliser la con guration BNU (ou m^me la Version 2), il existe un excele lent livre sur le sujet : Managing UUCP and Usenet ( ManagUUCP]). Vous trouverez egalement des informations tres utiles dans le document Linux UUCP-HOWTO de Vince Skahan, poste regulierement dans comp.os.linux.answers, et disponible en version francaise sur les sites di usant Linux en France. Usenet comprend egalement un forum dedie aux discussions sur UUCP, qui s'appelle comp.mail.uucp. Si vous avez des questions speci ques a Taylor UUCP, c'est l'endroit ideal pour les poser, plut^t que dans les groupes dedies a Linux. o
171
UUCP n'appelle generalement pas immediatement le systeme distant pour executer un job (sinon vous pourriez tres bien utiliser kermit). Il stocke la description du travail a e ectuer, ce qui s'appelle spouler. Le repertoire dans lequel ces jobs sont temporairement stockes s'appelle par consequent le repertoire de spoule, et est generalement /var/spool/uucp. Dans notre exemple, la description de job contiendrait des informations concernant la commande a e ectuer (lpr), l'utilisateur ayant demande cette execution, et quelques autres renseignements. En plus de cela, UUCP doit stocker le chier d'entree, netguide.ps. Le nom et l'emplacement exact de ces chiers spoules peuvent varier, en fonction des options de compilation. En mode compatible HDB, UUCP les met en general dans un sous-repertoire de /var/spool/uucp du nom du site distant. En mode Taylor, il creera des sous-repertoires sous le repertoire de spoule speci que au site pour les di erents types de chiers. A intervalles reguliers, UUCP appelle le systeme distant. Lorsqu'une connexion est etablie, il transfere les chiers decrits dans le job, plus tout chier d'entree. Les commandes ne seront pas executees immediatement, mais juste apres que la connexion est terminee. C'est le r^le de uuxqt, qui prend egalement soin de renvoyer tout job o destine a un autre site. Pour distinguer les jobs les plus importants des autres, UUCP associe un grade a chacun. Il s'agit d'une simple lettre, allant de 0 a 9, de A a Z et de a a z, par ordre de priorite decroissante. Le courrier est generalement spoule avec le grade B ou C, alors que les News Usenet le sont avec le grade N. Plus le grade est eleve, plus le job sera transfere avant les autres. Ces grades peuvent ^tre assignes par l'option -g lors e de l'appel de uucp ou uux. Vous pouvez aussi interdire le transfert en dessous d'un certain grade a certaines heures c'est le grade maximum de spoule autorise pendant une communication, dont la valeur par defaut est z. Notez que la terminologie est assez ambigue ici : un chier ne sera transfere que si le grade est egal ou superieur a cette valeur.
2 Le mot job est mis a toutes les sauces en informatique il serait vain de vouloir en imposer un autre, plus francais.
:
172
173
regulierement dans comp.mail.uucp sous le nom de uucp internals, decrivant chaque protocole supporte par Taylor UUCP.
-r0
Appelle systeme, sauf en cas de restriction horaire. Appel force de systeme, quelles que soient les conditions. Lance uucico en mode ma^tre. C'est le mode par defaut avec les options -s et -S. Utilisee seule, cette option provoque l'appel tour a tour de tous les systemes connus, sauf en cas de restriction. Lance uucico en mode esclave. C'est le mode par defaut lorsque aucune option -s ou -S n'est donnee. Dans ce mode, soit l'entree et la sortie standard sont considerees comme etant connectees a un port serie, soit le port TCP doit ^tre precise par l'option -p. e Met en route les traces de deboguage du type speci e. Plusieurs types peuvent ^tre donnes sous forme de liste separee par des virgules. e Les types suivants sont valides : abnormal, chat, handshake, uucpproto, proto, port, con g, spooldir, execute, incoming et outgoing. Le mot cle all les valide tous. Pour rester compatible avec les autres implementations de UUCP, on peut aussi speci er un nombre, ce qui valide alors le deboguage pour les n premiers items de cette liste. Ces traces sont enregistrees dans le chier Debug, situe dans le repertoire /var/spool/uucp.
-x type, -X type
174
Le suivant est le chier sys. Il contient toutes les informations speci ques aux sites auxquels vous ^tes relies par UUCP. Cela comprend le nom des machines et des infore mations sur le lien lui-m^me, comme le numero de telephone, par exemple. Une entree e typique pour un site connecte par modem que nous appellerons pablo ressemblerait a ceci :
# /usr/lib/uucp/sys - liste des voisins UUCP # systeme: pablo system pablo time Any phone 123-456 port serial1 speed 38400 chat ogin: gueuze ssword: lorca
3 Bien que la plupart des commandes UUCP doivent ^tre setuid uucp, vous devez faire tres e attention a ce que le programme uuchk ne le soit pas. Sinon, tous les utilisateurs auraient acces aux mots de passe m^me si les chiers ont un mode de 600. e
:
175
Le mot cle port designe le port a utiliser, et time les heures auxquelles il peut ^tre e appele. La ligne chat decrit le script de dialogue necessaire pour permettre a uucico d'entrer dans le systeme pablo nous reviendrons sur ces scripts un peu plus loin. La ligne port indique simplement le nom d'une entree dans le chier port. Vous pouvez y mettre le nom qui vous pla^t, tant que cette entree existe. Ce chier port contient les informations speci ques a la liaison. Pour les modems, il decrit le chier de peripherique a utiliser, la gamme des vitesses supportees, et le type de numeroteur connecte. L'entree ci-dessous decrit /dev/cua1 (COM 2), sur lequel est connecte un modem NakWell capable de supporter la vitesse de 38 400 bps. Le nom du port est choisi de maniere a correspondre a celui indique dans le chier sys.
# /usr/lib/uucp/port - ports UUCP # /dev/cua1 (COM2) port serial1 type modem device /dev/cua1 speed 38400 dialer nakwell
Les informations relatives au systeme numeroteur se trouvent dans un troisieme chier, dial. Pour chaque type, il contient la sequence de commandes necessaires pour appeler un site, avec un numero de telephone donne. La encore, il s'agit d'un script de dialogue. Par exemple, l'entree pour le numeroteur NakWell pourrait ^tre celle-ci : e
# /usr/lib/uucp/dial - numeroteurs # Modems NakWell dialer nakwell chat "" ATZ OK ATDT\T CONNECT
La ligne commencant par chat indique la sequence de commandes a envoyer au modem, avec les reponses a attendre, pour l'initialiser et le faire telephoner. Le programme uucico remplacera la sequence \T par le numero de telephone. Pour vous donner une idee de la maniere dont uucico traite ces chiers de con guration, considerons que vous avez tape la commande :
$ uucico -s pablo
La premiere chose que fait uucico est de chercher pablo dans le chier sys. Il voit alors dans l'entree correspondante qu'il doit utiliser le port serial1 pour etablir la connexion. Le chier port lui indique qu'il s'agit d'un port sur lequel est connecte un modem NakWell. Alors, uucico cherche dans le chier dial une entree decrivant ce modem NakWell, et lorsqu'il l'a trouvee, ouvre le port serie /dev/cua1 et execute le dialogue de numerotation : ici, il envoie ATZ, attend la reponse OK, etc. Lorsqu'il rencontre la cha^ne \T, il lui substitue le numero de telephone (123{456) extrait du chier sys.
176
Le chier sys
system port speed ... pablo serial1 38400
Le chier port
port type speed device dialer ... serial1 modem 38400 /dev/cua1 nakwell
Le chier dial
Fig. 12.1 - Interaction des chiers de con guration de Taylor UUCP.
177
Apres que le modem a retourne CONNECT, la connexion est etablie et le dialogue modem est termine uucico retourne alors au chier sys et execute le dialogue d'entree dans le systeme. Dans notre exemple, il attendra l'invite login: puis enverra son nom d'utilisateur (neruda), attendra password: et repondra par le mot de passe, lorca. Ensuite, la machine appelee lancera son propre uucico. Les deux programmes entreront dans la phase de handshake decrite dans la section precedente. La gure 12.1 symbolise les dependances entre les divers chiers de con guration.
178
Il vous faudra aussi savoir exactement comment entrer sur le systeme convoite. Devezvous presser la touche BREAK avant que l'invite n'apparaisse ? Est-ce qu'il a che login: ou bien user: ? Ces renseignements sont indispensables pour rediger le script de dialogue. Si vous ne savez pas, ou si le script que vous utilisez habituellement ailleurs ne marche pas, appelez le site avec un programme de terminal ordinaire comme kermit ou minicom et notez exactement ce que vous devez taper.
179
Il s'agit du chier de con guration principal. Vous pouvez y de nir votre nom de site UUCP. Ce chier decrit tous les sites connus de vous. Pour chacun, il speci e son nom, a quelles heures il est possible de l'appeler, quel numero de telephone composer (si necessaire), quel peripherique utiliser, et comment se connecter. Contient les entrees decrivant chaque port disponible, avec la vitesse supportee et le numeroteur a utiliser. Decrit les numeroteurs employes pour etablir une communication telephonique. Contient les expansions pour les codes de numerotation symboliques. Contient le nom d'utilisateur et le mot de passe a employer pour se connecter a un systeme. Rarement utilise. Contient les noms et mots de passe que les systemes doivent prendre pour se connecter chez vous. Ce chier n'est utilise que lorsque uucico s'occupe lui-m^me de cette operation. e
Ces chiers de con guration sont principalement composes de lignes contenant des paires de mots cles/valeurs. Un signe diese introduit un commentaire qui s'etend jusqu'a la n de la ligne. Pour utiliser ce caractere autrement que comme commentaire, il faut l'echapper par un backslash, c'est-a-dire le coder comme ceci : \# Vous pouvez encore ajuster un bon nombre d'options gr^ce a ces chiers. Nous ne a detaillerons pas tous les parametres possibles, mais uniquement les plus importants vous devriez ensuite ^tre capable de faire fonctionner une liaison UUCP par modem. e Quelques sections supplementaires decriront les modi cations a e ectuer pour utiliser UUCP sur reseau TCP/IP ou par une ligne serie directe. Les documents Texinfo qui accompagnent le code source de Taylor UUCP decrivent tout cela en detail. Votre con guration terminee, vous pouvez la tester a l'aide de l'utilitaire uuchk (situe dans /usr/lib/uucp). Il lit les chiers que vous avez redige avec soin et a che un rapport detaille des valeurs qui seront utilisees pour chaque systeme.
180
Il est possible de positionner un certain nombre de parametres divers dans ce chier, comme le nom du repertoire de spoule, ou les droits d'acces pour l'entree UUCP anonyme. Ce dernier cas sera traite dans une section ulterieure.
Systeme distant
Le mot cle system designe le systeme distant. Vous devez speci er le nom correct, et non pas un alias de votre imagination, car uucico le veri era par rapport a ce que cette machine lui indiquera lorsque vous serez connecte 7. Chaque nom de systeme ne doit appara^tre qu'une fois. Si vous desirez plusieurs con gurations pour une m^me machine (plusieurs numeros de telephone, par exemple), e vous pouvez employer le mot cle alternate, decrit plus loin.
Numero de telephone
Si le systeme distant doit ^tre atteint par une ligne telephonique, le champ phone e indique le numero que le modem doit appeler. Il peut contenir plusieurs codes symboliques qui seront interpretes par la procedure de numerotation de uucico un signe
7 Les anciennes versions de UUCP Version 2 n'annoncent pas leur nom lorsqu'elles sont appelees neanmoins les implementations recentes le font, ainsi que Taylor UUCP.
:
181
d'egalite (=) signi e d'attendre une seconde tonalite, et un tiret (-) genere une pause d'une seconde. Par exemple, certaines installations telephoniques necessitent une attente entre certains pre xes de numerotation speciaux et le numero a appeler 8 . Toute cha^ne alphabetique peut ^tre utilisee pour cacher des informations dependantes e du site, comme des pre xes d'appel. Ces cha^nes seront remplacees par le numero indique dans le chier dialcode. Supposons que vous avez un chier dialcode comme celui-ci :
# /usr/lib/uucp/dialcode - dialcode translation Sirius 024881 Pluton 035119
Avec ces translations, vous pouvez utiliser un numero de telephone comme Pluton4722 dans le chier sys, ce qui rend les choses un peu plus lisibles.
Port et vitesse
Les options port et speed servent respectivement a selectionner le peripherique a utiliser pour l'appel et la vitesse maximale a laquelle il doit ^tre initialise. Une entree system e peut utiliser soit l'une, soit l'autre, ou les deux options ensemble. Lors de la recherche d'un peripherique dans le chier port, seuls ceux qui ont un nom correspondant et/ou une vitesse sont selectionnes. Generalement, l'option speed est su sante. Si vous n'avez qu'un port serie de ni dans port, uucico prendra toujours celui-la de toute facon il su t donc d'indiquer a quelle vitesse l'utiliser. Si vous avez plusieurs modems, il n'est pas non plus necessaire d'indiquer un port particulier : si uucico trouve plusieurs possibilites, il essaiera tour a tour chaque peripherique jusqu'a ce qu'il en trouve un qui soit libre.
Le script de dialogue
Nous avons deja rencontre ce script de dialogue, qui indique a uucico comment entrer sur le systeme distant. Il consiste en une liste de cha^nes de caracteres attendues et envoyees par le processus uucico local. Les cha^nes a attendre et a envoyer sont inserees alternativement, et uucico rajoute automatiquement un retour-chariot (\r) a la n de chaque envoi. Ainsi, un script de dialogue simple pourrait ressembler a ceci :
ogin: gueuze ssword: grqt22
Vous noterez que les cha^nes a attendre ne sont pas indiquees entierement. Cela permet de s'assurer que, par exemple, Login: sera equivalent a login:, au cas ou.
8 La plupart des installations telephoniques privees necessitent que vous composiez le numero 0 ou 9 pour obtenir l'exterieur. On nous a indique que cela s'appelait un code d'acces secret. Sans rire...
:
182
Il est aussi possible d'obtenir une sorte d'execution conditionnelle avec uucico, dans le cas ou le getty de la machine distante a besoin d'^tre recycle ou reinitialise avant qu'il e n'a che une invite. Pour cela, vous pouvez attacher un script secondaire a une cha^ne d'attente, constitue de tirets. Ce script secondaire n'est execute que si l'attente echoue. Une utilisation possible consiste a envoyer un BREAK si le site distant n'a che aucune invite de login. L'exemple qui suit propose un script de dialogue general, qui devrait aussi fonctionner s'il faut envoyer un retour-chariot pour reveiller un peu la machine appelee. Le premier argument vide "" indique qu'il ne faut rien attendre et envoyer directement la prochaine cha^ne de caracteres.
"" \n\r\d\r\n\c ogin:-BREAK-ogin: gueuze ssword: grqt22
Certaines sequences speciales peuvent appara^tre dans le script de dialogue. La liste qui suit est un extrait des caracteres valides dans les cha^nes d'attente :
"" \t \r \s \n \\
La cha^ne vide. Elle indique a uucico de ne rien attendre, et de continuer avec la prochaine cha^ne a envoyer. Le caractere de tabulation. Le caractere retour-chariot. Le caractere espace. Vous en aurez besoin pour inserer des espaces dans une cha^ne de dialogue. Le caractere de saut de ligne. Le caractere backslash (\).
Sur les cha^nes a envoyer, les sequences d'echappement suivantes sont valides, en plus des precedentes:
EOT BREAK
\c \d \E
\e
Caractere de n de transmission (^D). ( Caractere ) Break. ( ) Suppression du rajout automatique du retour-chariot en n de cha^ne. Pause d'une seconde. Valide le test d'echo. Dans ce mode, uucico attend que l'echo de tout ce qu'il ecrit lui revienne avant de continuer le dialogue. C'est surtout utile pour les dialogues avec les modems (que nous rencontrerons plus loin). Par defaut, ce mode est hors service. Supprime le test d'echo.
183
Entrees alternatives
Il est parfois necessaire d'avoir plusieurs entrees pour un m^me systeme, par exemple e s'il peut ^tre joint par plusieurs lignes. Avec Taylor UUCP, vous pouvez realiser cela e en de nissant des entrees alternatives, par le mot cle alternate. Une entree alternative conserve tous les parametres de l'entree systeme principale et ne modi e que ceux qui y sont expressement indiques. Elles sont placees a l'interieur d'une entree systeme et reperees par le mot alternate. Pour utiliser deux numeros de telephone pour la machine pablo, il su t de modi er son entree dans le chier sys de la maniere suivante :
system pablo phone 123-456 ... entrees comme precedemment ... alternate phone 123-455
En appelant pablo, uucico telephonera d'abord au 123-456, et si l'appel echoue, il essaiera l'alternative. Ici, cette entree alternative ne modi e que le numero de telephone.
184
time
Cet exemple autorise les appels les lundis et mercredis de 3 heures a 7 heures 30, et les vendredis entre 18 heures 05 et 20 heures. Lorsqu'un champ horaire s'etend apres minuit, par exemple Mo1830-0600, cela signi e lundi, entre minuit et 6 heures du matin et entre 18 heures 30 et minuit. Les mots cles speciaux Any et Never signi ent respectivement que les appels pourront avoir lieu a toute heure, ou jamais. La commande time prend un second argument facultatif qui indique un delai entre plusieurs tentatives, en minutes. Lorsqu'un appel echoue, uucico n'autorisera aucun autre appel de cette machine pendant un certain temps. Par exemple, si vous speci ez un intervalle de 5 minutes, il refusera d'appeler le systeme distant pendant 5 minutes apres le dernier appel infructueux. Par defaut, ce temps est incremente chaque fois qu'un appel echoue. Le mot timegrade permet d'attacher un grade maximal a un horaire. Par exemple, supposons que vous avez une entree comme ceci dans l'entree system :
timegrade timegrade N Wk1900-0700,SaSu C Any
Elle autorise les jobs ayant un grade de C ou plus (generalement le courrier est spoule avec le grade B ou C) a ^tre transferes chaque fois qu'une connexion est etablie, alors e que les News (qui ont usuellement le grade N) ne seront echangees que pendant la nuit et les ns de semaine. Tout comme time, la commande timegrade peut prendre un intervalle entre les tentatives d'appel comme troisieme argument optionnel. Il y a toutefois un piege ici : tout d'abord, l'option timegrade ne s'applique qu'a ce que votre systeme envoie la machine distante peut toujours transferer ce qu'elle veut. Vous pouvez employer l'option call-timegrade pour lui demander de n'envoyer que les jobs dont le grade est d'un certain niveau mais il n'y a aucune garantie qu'elle obeisse a cette requ^te 9. e Il faut savoir aussi que le champ timegrade n'est pas teste lorsque c'est le systeme distant qui vous appelle, et les jobs en attente seront tous transferes. Mais il peut, bien s^r, demander a votre uucico de se limiter a un certain grade, s'il sait le faire. u
185
Il est constitue d'entrees separees commencant par le mot cle port suivi du nom qui le designe. Ce nom peut ^tre utilise dans le chier sys, pour la declaration port. Il e n'a pas besoin d'^tre unique s'il y en a plusieurs, uucico les essaiera tous un par un e jusqu'a trouver le premier qui est disponible. La commande port doit ^tre immediatement suivie par la declaration type, qui ine dique de quel genre de port il s'agit. Les valeurs valides sont modem, direct pour les connexions directes et tcp pour les sockets TCP. Si la commande port est absente, c'est un modem qui sera considere par defaut. Ici, nous ne decrirons que les ports modem les deux autres types feront l'objet de sections separees un peu plus loin. Pour les types modem et directs, vous devez speci er le peripherique a utiliser par la directive device. C'est generalement le nom d'un chier de peripherique du repertoire /dev, comme /dev/cua1 10 . Dans le cas d'un modem, l'entree determine aussi le type d'appareil connecte. Di erents types ou marques de modems peuvent demander une con guration particuliere m^me ceux declares compatibles Hayes ne le sont pas toujours vraiment. Par consee quent, vous devez indiquer a uucico comment initialiser le modem et appeler le numero de telephone desire. Taylor UUCP stocke les descriptions de tous les numeroteurs dans le chier dial. Pour utiliser l'un deux, il faut speci er son nom par la commande dialer. Quelquefois, vous aurez besoin d'utiliser un modem de di erentes facons, selon le service que vous appelez. Par exemple, certains modems archa ques ne comprennent rien lorsqu'un appareil recent tente de se connecter a 14 400 bps ou plus ils raccrochent la ligne au lieu d'etablir la connexion a 9 600 bps, ou moins. Lorsque vous appelez de tels sites, vous devez con gurer votre modem di eremment pour que la communication aboutisse. Pour cela, vous aurez besoin d'une entree additionnelle dans le chier port qui designera un numeroteur di erent. Vous pouvez donner a ce port un nom di erent, comme par exemple serial1-lent, et la directive port dans l'entree du systeme vieuxsite dans le chier sys. Une meilleure methode consiste a faire la distinction des ports en fonction des vitesses supportees. Par exemple, les deux entrees de la situation que nous venons d'evoquer pourraient ^tre indiquees comme ceci : e
# Modem NakWell connexions hautes vitesses port serial1 # nom du port type modem # port modem device /dev/cua1 # il s'agit de COM2 speed 38400 # vitesse supportee dialer nakwell # numeroteur normal # Modem NakWell connexions basses vitesses port serial1 # nom du name
10 Certains utilisent les peripheriques ttyS* a la place, qui sont concus specialement pour les appels uniquement entrants, ce qui n'est pas une bonne idee en raison des con its possibles et de la gestion fort di erente de ces peripheriques.
:
186
type device speed dialer modem /dev/cua1 9600 nakwell-lent # # # #
L'entree systeme pour ce site vieuxsite indiquerait maintenant serial1 comme nom de port, mais demanderait de ne l'utiliser qu'a 9 600 bps. Le programme uucico utilisera alors la seconde entree automatiquement. Tous les sites restants qui ont une vitesse de 38 400 bps dans l'entree systeme seront appeles par la premiere entree port.
Le script de dialogue commence par "", la cha^ne d'attente vide. Par consequent, uucico enverra directement la commande ATZ, qui est la commande Hayes de remise a zero. Il attend ensuite la reponse OK et envoie la commande suivante, qui supprime l'echo local et initialise certains registres. Apres que le modem a encore une fois repondu OK, uucico lui envoie la commande de numerotation ATDT. La sequence d'echappement \T sera remplacee par le numero de telephone pris dans le chier sys. Ensuite, uucico attend que le modem lui ait annonce que la connexion est etablie par la cha^ne CONNECT. Souvent, la communication ne peut pas s'etablir, si par exemple la ligne de l'autre systeme est occupee. Dans ce cas, le modem renvoie un message d'erreur indiquant la
187
situation. Les scripts de dialogue ne sont pas capables de detecter de tels messages uucico continuera l'attente jusqu'a ce que le temps imparti soit ecoule. Le chier de trace de UUCP indiquera alors le message (( timed out in chat script )) au lieu de la raison reelle de l'echec. Toutefois, Taylor UUCP vous permet d'informer uucico de ces messages d'erreur par la commande chat-fail que nous avons vue plus haut. Lorsqu'il detecte une telle situation, il arr^te aussit^t l'appel, et enregistre le message dans le chier de trace de UUCP. e o La derniere commande de l'exemple ci-dessus indique a UUCP de basculer l'etat de la ligne DTR avant de commencer le dialogue. Normalement, le pilote des ports serie monte le signal DTR (Data Terminal Ready) lorsqu'un processus ouvre le port, pour indiquer au modem qui y est connecte que quelqu'un veut lui parler. Avec le mot cle dtr-toggle, la DTR sera baissee, puis remontee apres un petit delai. Beaucoup de modems modernes peuvent ^tre con gures pour reconna^tre cette manipulation et e e ectuer di erentes actions, comme raccrocher la ligne, passer en mode commandes ou se remettre a zero 11.
La commande address donne l'adresse IP de l'h^te ou bien son nom pleinement quao li e. L'entree correspondante dans le chier port sera alors :
port type service
:
188
Cette entree indique qu'il faudra utiliser une connexion TCP lorsqu'une entree du chier sys reference tcp-conn, et que uucico devra demander le port 540 sur le systeme distant. Il s'agit du numero de port par defaut pour le service UUCP. Au lieu de ce numero, vous pouvez aussi donner le nom symbolique qui lui est associe dans le chier /etc/services, c'est en general uucpd.
Dans le chier port, vous devez decrire le port serie, mais une entree dialer n'est pas necessaire puisqu'il n'y a aucun numero de telephone a composer.
port type speed device direct1 direct 38400 /dev/ttyS1
189
^tre modi e par la declaration command-path. Vous pouvez par exemple autoriser la e machine pablo a executer la commande rsmtp en plus de rmail et rnews 12 :
system ... commands pablo rmail rnews rsmtp
La commande local-send autorise les utilisateurs de votre machine a envoyer n'importe quel chier a partir du repertoire /home et du repertoire UUCP public de pablo. La commande local-receive leur permet de recevoir des donnees soit dans le repertoire receive de uucppublic, soit dans n'importe quel repertoire a partir de /home. La directive remote-send autorise pablo a demander des chiers depuis /var/spool/uucppublic, sauf a partir de incoming et receive. C'est le point d'exclamation qui indique cette
12 Le programme rsmtp sert a delivrer le courrier electronique par lots SMTP. Nous decrirons cette technique dans les chapitres consacres au courrier.
:
190
negation a uucico. En n, la derniere ligne autorise pablo a envoyer n'importe quel chier dans le repertoire incoming. Le plus gros probleme des transferts UUCP est que les chiers ne peuvent ^tre recus e que si les repertoires de destination sont accessibles en ecriture par tout le monde. Cela peut inciter certains utilisateurs a tendre des pieges a d'autres, mais il n'y a aucun moyen d'eviter cela, a moins d'interdire purement et simplement tout transfert de chier par UUCP.
12.3.3 Relais
UUCP o re un mecanisme permettant de demander a d'autres machines de transferer des chiers pour vous. Cela permet par exemple de demander a la machine truc de recuperer un chier sur bidule pour vous et de vous l'envoyer. Voici la commande correspondante :
$ uucp -r truc!bidule!~/find-ls.gz ~/bidule.liste.gz
Cette technique faisant passer des jobs a travers plusieurs systemes s'appelle le relais, ou encore le forwarding. Dans l'exemple ci-dessus, elle est employee car truc a un acces UUCP sur machin, mais votre systeme n'en a pas. Mais en tant qu'administrateur, vous devrez limiter cette possibilite sur votre systeme a quelques sites dans lesquels vous avez une pleine con ance, pour eviter que certains ne passent par vous pour telecharger la derniere version de X11R6 et vous ruiner en notes de telephone. Par defaut, Taylor UUCP interdit tout relais. Pour l'autoriser a un systeme donne, vous disposez de la commande forward qui speci e une liste de sites qui auront le droit de vous demander de ramener des chiers pour eux. Par exemple, l'administrateur du systeme truc devra ajouter la ligne suivante dans son chier sys pour autoriser pablo a demander des chiers sur la machine bidule :
#################### # pablo system pablo ... forward bidule #################### # bidule system bidule ... forward-to pablo
L'entree forward-to pour bidule est necessaire de sorte que tout chier qu'il retourne soit passe a pablo, sinon UUCP le rejetterait. Cette entree utilise une variante de la commande forward qui permet a bidule d'envoyer des chiers a pablo par l'intermediaire de truc, et uniquement dans ce sens. Pour autoriser le relais vers n'importe quel systeme, il faut utiliser le mot cle special ANY (les majuscules sont obligatoires).
191
192
Sinon, il vous faudra probablement le faire manuellement, en editant /etc/passwd pour y rajouter une ligne comme dans l'exemple suivant, ou 5000 et 150 sont les numeros identi cateurs de l'utilisateur uupablo et du groupe uuguest, respectivement.
uupablo:x:5000:150:Compte UUCP:/var/spool/uucppublic:/usr/lib/uucp/uucico
Ensuite, vous devrez assigner un mot de passe a ce compte par la commande passwd. Dans le cas des machines se connectant par TCP, vous devrez con gurer inetd pour qu'il gere les connexions sur le port uucp. Pour cela, il faudra rajouter la ligne suivante dans le chier /etc/inetd.conf 13 :
uucp stream tcp nowait root /usr/sbin/tcpd /usr/lib/uucp/uucico -l
L'option -l demande a uucico de realiser sa propre sequence d'acces login/passwd. Il n'utilisera pas le chier /etc/passwd standard du systeme, mais une base de donnees de mots de passe qui lui est propre (/usr/lib/uucp/passwd) constituee de paires de noms d'utilisateurs et des mots de passe associes:
uupablo uulorca IslaNegra co'rdoba
Bien entendu, ce chier doit appartenir a l'utilisateur uucp et avoir le mode 600 pour que personne ne puisse en prendre connaissance. Si cette methode vous pla^t tellement que vous voudriez pouvoir l'utiliser aussi pour les acces ordinaires par port serie, vous devez savoir que c'est impossible actuellement, du moins sans un certain bricolage. Tout d'abord, vous devez passer l'option -u a uucico, suivi du nom d'utilisateur. Pour cela, vous devrez posseder ou (probablement) bricoler un programme getty capable de passer ce nom d'utilisateur, et qui appelle uucico a la place de la commande standard /bin/login. Pour proteger vos utilisateurs UUCP des intrus donnant un faux nom de systeme et piratant tout leur courrier, vous devrez ajouter la commande called-login dans chaque entree du chier sys. Cette operation est decrite dans la section suivante.
193
quelqu'un d'autre pour telecharger le courrier destine a cet autre site. C'est particulierement dangereux dans le cas ou vous o rez des acces UUCP anonymes, pour lesquels le mot de passe est public, ou absent. A moins que vous ne soyez absolument s^r de l'honn^tete de tous les sites qui vous u e appellent, vous devez vous proteger de ce type d'imposture. Le remede consiste a demander a chaque systeme d'utiliser un nom particulier pour la connexion, que vous speci ez par called-login dans le chier sys. Voici un exemple :
system pablo ... options habituelles ... called-login uupablo
Le resultat est que chaque fois qu'un systeme arrive et pretend ^tre pablo, uucico e veri era s'il est bien entre sous le compte uupablo. Si ce n'est pas le cas, la connexion sera immediatement coupee. Vous devez prendre l'habitude de con gurer cette veri cation chaque fois que vous ouvrez un nouveau compte UUCP il est tres important de le faire pour tous les systemes, qu'ils appellent votre site ou non. Pour ceux qui ne vous appellent jamais, vous pourrez initialiser called-login a n'importe quoi, par exemple yapadappel.
194
Pour mettre ce test en service, vous devez rajouter la commande suivante dans l'entree du systeme en question :
# Valide le test de sequence d'appels sequence true
Vous devez aussi creer le chier contenant le numero initial. Taylor UUCP le place dans un chier nomme .Sequence dans le repertoire de spoule du site distant. Il doit appartenir a l'utilisateur uucp et avoir le mode 600 (lecture et ecriture uniquement au proprietaire). Il vaut mieux initialiser ce nombre en se mettant d'accord avec l'autre site sur une valeur arbitraire sinon quelqu'un pourrait arriver a le deviner en essayant di erentes valeurs plausibles.
# # # # cd /var/spool/uucp/pablo echo 94316 > .Sequence chmod 600 .Sequence chown uucp.uucp .Sequence
Bien s^r, le site distant doit egalement valider ce test et commencer avec le m^me u e nombre que vous.
L'exemple ci-dessus restreint les systemes inconnus au telechargement depuis le repertoire pub, et a l'envoi de chiers dans le sous-repertoire incoming de l'espace public /var/spool/uucppublic. La troisieme ligne indique a uucico d'ignorer les requ^tes de e mise en route du deboguage local (sinon un malin pourrait remplir votre disque dur
195
de chiers de trace). Les deux dernieres lignes autorisent les systemes inconnus a executer la commande rmail mais le chemin de recherche est limite a un repertoire prive nomme anon-bin. Cela permet d'y installer une commande rmail speciale qui, par exemple, dirige tout courrier des sites anonymes vers la bo^te aux lettres du superutilisateur. Cela autorise les utilisateurs anonymes a laisser un message a l'administrateur (qui ne pourra pas leur repondre par ce m^me chemin, bien s^r), tout en e u interdisant aux personnes malintentionnees de passer par la pour distiller du courrier dans le monde entier. Pour valider l'UUCP anonyme, vous devez au moins avoir une directive unknown dans votre chier con g, sinon uucico rejettera tous les systemes inconnus.
196
dant la transmission, mais les performances sont malgre tout trop reduites comparees a celles de la premiere categorie de protocoles, ce qui les rend peu adaptes a une utilisation sur TCP. Les caracteristiques de la liaison ont aussi une importance : quelquefois, il est impossible d'envoyer des caracteres sur 8 bits par une liaison serie car un stupide serveur de terminaux supprime le huitieme bit. Dans ce cas, il faut encoder tous ces caracteres, ce qui double presque la taille des donnees a transmettre, bien que l'eventuelle compression realisee par le materiel de transmission puisse aider un peu. Parmi les lignes correctes, capables de passer des caracteres sur 8 bits, on compte les liaisons TCP et la plupart des connexions par modem. Taylor UUCP dispose au moins des protocoles suivants :
g
t e f
G a
C'est le protocole le plus courant et qui doit ^tre compris par tous e les programmes uucico. Il e ectue une correction d'erreurs et il est par consequent adapte aux lignes telephoniques de mauvaise qualite. Ce protocole necessite une transmission sur 8 bits, c'est un protocole oriente paquets avec une technique de fen^trage. e C'est un protocole bidirectionnel, qui peut envoyer et recevoir des chiers en m^me temps. Il necessite une liaison bidirectionnelle sur e 8 bits, il n'est compris pour l'instant que par Taylor UUCP. Il est extr^mement e cace. e Destine a l'usage sur les connexions TCP ou les liaisons sans aucune erreur. Il utilise des paquets de 1 024 octets et necessite une transmission 8 bits. Semblable au protocole t, mais oriente ux. Destine aux connexions X.25. C'est un protocole oriente ux, mais qui peut fonctionner sur une transmission 7 bits. Tous les caracteres ayant le huitieme bit positionne sont encodes, ce qui le rend particulierement ine cace. Il s'agit de la version System V Release 4 du protocole g. Il est aussi compris par quelques autres implementations de UUCP. Ce protocole ressemble a ZMODEM. Il necessite une transmission sur 8 bits, mais encode certains caracteres de contr^le comme XON o et XOFF.
197
correctement en des circonstances normales, mais il est des cas ou ils peuvent ^tre e inadaptes. Le protocole g, par exemple, emploie des fen^tres de 1 a 7, et des tailles e de paquet allant de 64 a 4 096 par puissances de 2 14 . Si votre ligne telephonique est si mauvaise que vous perdez plus de 5% des paquets, vous devrez probablement reduire leur taille ainsi que celle de la fen^tre. Toutefois, si votre liaison est excellente, e augmenter la taille de ces paquets a 512 voire 1 024 octets ameliorera l'e cacite du protocole dans de grandes proportions. Taylor UUCP o re la commande protocol-parameter du chier sys, qui permet d'ajuster ces parametres selon vos besoins. Par exemple, pour passer la taille des paquets du prococole g a 512 lors de communications avec pablo, vous rajouterez :
system pablo ... protocol-parameter g packet-size 512
Les di erents parametres accessibles varient d'un protocole a l'autre. Pour en avoir la liste complete, consultez la documentation fournie avec les sources de Taylor UUCP.
Cela aura pour e et de forcer l'utilisation des protocoles i, g ou G pour toute connexion e ectuee par ce port. Si le systeme distant ne conna^t aucun de ces protocoles, la communication echouera.
14 Beaucoup de binaires fournis avec les distributions Linux ont une fen^tre par defaut de 7 et des e paquets de 128 octets.
:
198
199
dialogue modem. S'il ne fait pas l'echo de vos commandes pendant ce dialogue, veri ez si la vitesse de votre ligne ne serait pas trop rapide ou trop lente pour ce modem. Si vous voyez l'echo, veri ez la validation des reponses du modem ou passez-les en mode numerique. Veri ez que le script de dialogue, lui-m^me, est correct. Souvenez-vous e qu'il faut ecrire deux caracteres backslash pour en envoyer un au modem. Mon modem essaie de numeroter mais cela n'aboutit pas : inserez une pause dans le numero de telephone, particulierement si vous appelez d'un central prive. Essayez les deux types de numerotation : vocale, puis decimale. Et veri ez le numero de telephone... Mon chier de trace indique que je perds beaucoup de paquets : ce peut ^tre e un probleme de vitesse. Si la liaison entre votre ordinateur et votre modem est plus lente que celle a laquelle la communication s'est etablie, remediez a cette situation. Il se peut que votre equipement soit trop lent pour suivre le nombre d'interruptions generees par les hautes vitesses. Dans ce cas, il faut employer un circuit NSC 16550A sur votre port serie. Vous devez egalement veri er que le contr^le de ux materiel est o en service, tant du c^te du systeme que sur le modem. o Taylor UUCP n'a rien de prevu pour valider ce contr^le de ux, vous devez donc o le faire explicitement depuis le chier rc.serial (par exemple) en utilisant cette commande :
$ stty crtscts < /dev/cua3
J'entre dans le systeme mais le handshake echoue : les causes peuvent ^tre e nombreuses. Le chier de trace vous sera d'un precieux secours. Regardez quels protocoles o re le site distant (il doit envoyer la cha^ne Pprotlist ). Il se peut que vous n'en ayez aucun en commun (avez-vous selectionne des protocoles speciaux dans les chiers sys ou port ?). Si le systeme distant envoie RLCK, c'est qu'il y a la-bas un chier de verrouillage vous concernant. Si ce n'est pas parce que vous y ^tes deja connecte par une autre ligne, e demandez a son administrateur qu'il corrige cette erreur. S'il envoie RBADSEQ, c'est que l'autre c^te a valide le test de sequence d'appels pour o votre site, mais que les valeurs ne correspondent pas. S'il envoie RLOGIN, c'est que vous n'^tes pas autorise a vous connecter sous ce nom d'utilisateur. e
200
Le chier suivant, par ordre d'importance, s'appelle Stats et indique les statistiques des transferts de donnees. La section de Stats correspondant au chier de trace cidessus ressemble a celle-ci (la encore, les lignes ont ete reformatees):
postmaster pablo (1994-05-28 17:15:44.78) received 1714 bytes in 1.802 seconds (951 bytes/sec) postmaster pablo (1994-05-28 17:15:46.66) received 57 bytes in 0.634 seconds (89 bytes/sec) postmaster pablo (1994-05-28 17:15:49.91) received 1898 bytes in 1.599 seconds (1186 bytes/sec) postmaster pablo (1994-05-28 17:15:51.67) received 65 bytes in 0.555 seconds (117 bytes/sec) postmaster pablo (1994-05-28 17:15:55.71) received 3217 bytes in 2.254 seconds (1427 bytes/sec) postmaster pablo (1994-05-28 17:15:57.31) received 65 bytes in 0.590 seconds (110 bytes/sec)
Le troisieme chier s'appelle Debug. C'est la que sont enregistrees les informations de deboguage lorsqu'il est mis en service. Vous devez vous assurer que ce chier a le mode 600, car en fonction du niveau de deboguage choisi, il peut contenir les mots de passe utilises pour toutes les connexions. Certains binaires fournis avec des distributions de Linux sont compiles avec le style de trace HDB. Ce mode utilise une grande quantite de chiers de trace stockes dans /var/spool/uucp/.Log. Ce repertoire contient trois autres sous-repertoires, nommes uucico, uuxqt et uux. Ils contiennent la trace generee par chacun des programmes correspondants, tries dans di erents chiers pour chaque site. Ainsi, la sortie de uucico lors de l'appel du site pablo se trouvera dans .Log/uucico/pablo, et les invocations de uuxqt qui resulteront de cet appel seront enregistrees dans .Log/uuxqt/pablo. Les lignes ont, en revanche, le m^me format que celles des traces du style Taylor. e
201
Lorsque vous validez le deboguage avec un style de trace HDB, l'enregistrement se fera dans .Admin/audit.local, alors que la sortie de uucico, lorsque c'est un site qui appelle, sera dans .Admin/audit.
202
203
Chapitre 13
Le courrier electronique
Depuis que les premiers reseaux furent imagines, le courrier electronique en fait un usage chaque jour plus important. Cela a commence par un simple service qui copiait un chier d'une machine a une autre en le mettant dans le chier bo^te aux lettres du correspondant. C'est d'ailleurs toujours le cas bien que par-dessus se soient gre ees beaucoup de choses rendues necessaires par la complexite du reseau et l'augmentation constante du ux de messages. Divers standards d'echange de courrier ont ete imagines. Les sites connectes a l'Internet adherent a celui de ni par le RFC 822, associe a d'autres documents RFC qui decrivent une methode de transmission de caracteres speciaux ou autres informations, independante des machines mises en jeu. On fait beaucoup de bruit depuis quelque temps autour du courrier (( multimedia )), qui permet de transferer egalement des images et du son avec le courrier. Il existe un autre standard, X.400, qui est de ni par le CCITT. Vous trouverez beaucoup de programmes destines au transport du courrier pour les systemes UNIX. L'un des plus connus et des plus utilises, toutes plates-formes confondues, s'appelle sendmail c'est l'implementation de l'universite de Berkeley, l'auteur est Eric Allman. Il y a actuellement deux portages de sendmail-5.56c sous Linux, dont l'un sera decrit dans le chapitre 15. La version de developpement actuelle porte le numero 8.6.9. L'agent de transport de courrier le plus employe sous Linux est smail-3.1.28, realise par Curt Landon Noll and Ronald S. Karr. Il est fourni dans la plupart des distributions binaires de Linux. Compare a sendmail, smail est plus recent et plus simple. Pour gerer le courrier d'un petit site sans routages tres compliques, ils sont quasi equivalents. Pour les grands sites, sendmail gagne a tous les coups, en raison de ses possibilites et de sa souplesse de con guration.
204
Tous deux supportent un ensemble de chiers de con guration qui doivent ^tre adaptes e a chaque cas. En dehors des informations necessaires pour que le sous-systeme de courrier fonctionne (comme le nom de la machine), il y a beaucoup d'autres parametres con gurables. Le chier de con guration principal de sendmail est tres di cile a comprendre au premier abord ceux de smail sont plus structures et beaucoup plus clairs, mais n'o rent pas autant de possibilites pour ajuster le comportement du programme. Quoi qu'il en soit, pour les petits sites UUCP ou Internet, le travail demande par la con guration est sensiblement le m^me pour tous les deux. e Ce chapitre va presenter le courrier electronique et les t^ches qui vous attendent en a tant qu'administrateur. Les chapitres 14 et 15 vous permettront ensuite d'e ectuer votre premiere con guration de l'un de ces agents de transfert de courrier. Vous devriez trouver toutes les informations necessaires pour le fonctionnement d'un petit site, mais il y a beaucoup plus d'options possibles, et vous pourrez plus tard occuper de longues soirees en essayant passionnement de mettre au point une con guration bien plus personnelle. Vers la n du chapitre, nous presenterons rapidement la con guration de elm, une interface utilisateur destinee au courrier electronique, tres courante sur de nombreux systemes UNIX, y compris Linux. Pour plus d'informations sur le courrier electronique sous Linux, consultez le document de Vince Skahan, (( Electronic Mail HOWTO )), poste regulierement sur Usenet. Les distributions originales de elm, smail et sendmail contiennent egalement beaucoup de documentations tres detaillees ou vous devriez trouver la reponse a la plupart de vos questions concernant leur con guration. Si vous voulez vous informer sur le courrier electronique d'une maniere plus generale, un certain nombre de RFC traitent de ce sujet, ils sont indiques dans la bibliographie fournie a la n de ce guide.
205
qui est appele l'en-t^te. Il est separe du corps du message par une ligne vide 1 . e La plupart des logiciels de transport de courrier du monde UNIX utilisent le format d'en-t^tes de ni dans le RFC 822. Son but etait a l'origine de de nir un standard e sur le reseau ARPANET, mais puisqu'il est prevu pour ^tre independant de tout e environnement, il a ete tres vite adapte a d'autres reseaux, y compris ceux bases sur UUCP. RFC 822 n'est toutefois que le plus petit denominateur commun d'autres formats ont recemment ete concus pour faire face aux besoins grandissants d'encryptage de donnees, de caracteres internationaux, et d'extensions multimedia (MIME). Dans tous ces standards, l'en-t^te est constitue de plusieurs lignes, separees par des e caracteres de saut de ligne. Chaque ligne est constituee d'un nom de champ, commencant sur la premiere colonne, et de la valeur de ce champ, separee par le caractere ( : ) suivi d'une espace. Le format et la semantique de chaque champ varient selon ( ) leur nom. Un champ peut s'etendre sur plusieurs lignes, si la suivante commence par le caractere de tabulation. Les champs peuvent appara^tre dans n'importe quel ordre. Voici un exemple d'en-t^te de courrier : e
From brewhq.swb.de!ora.com!andyo Wed Apr 13 00:17:03 1994 Return-Path: <brewhq.swb.de!ora.com!andyo> Received: from brewhq.swb.de by monad.swb.de with uucp (Smail3.1.28.1 #6) id m0pqqlT-00023aB Wed, 13 Apr 94 00:17 MET DST Received: from ora.com (ruby.ora.com) by brewhq.swb.de with smtp (Smail3.1.28.1 #28.6) id <m0pqoQr-0008qhC> Tue, 12 Apr 94 21:47 MEST Received: by ruby.ora.com (8.6.8/8.6.4) id RAA26438 Tue, 12 Apr 94 15:56 -0400 Date: Tue, 12 Apr 1994 15:56:49 -0400 Message-Id: <199404121956.PAA07787@ruby> From: andyo@ora.com (Andy Oram) To: okir@monad.swb.de Subject: Re: Your RPC section
Generalement, tous les champs necessaires sont generes par l'interface de courrier que vous utilisez, comme par exemple elm, pine, mush ou mailx. Toutefois, certains sont facultatifs et peuvent ^tre rajoutes par l'utilisateur. L'interface elm, par exemple, e permet d'editer une partie de l'en-t^te du message. D'autres sont places par l'agent de e transport de courrier. Voici une liste des champs les plus courants et leur signi cation :
From:
To: Subject:
:
1 Il est courant de rajouter une signature ou .sig aux courriers, contenant des informations sur l'auteur, souvent suivies d'un dicton ou d'une plaisanterie. Elle est separee du corps du message par une ligne contenant (( -- )) suivi d'une espace.
Contient l'adresse electronique de l'expediteur, ainsi que son (( vrai nom )) (facultatif). Il existe beaucoup de formats standards pour ce champ. Il s'agit de l'adresse du destinataire. Le sujet, qui decrit le contenu du courrier en quelques mots. Du moins, c'est ce qu'il devrait faire.
206
Date: Reply-To:
Organization:
Message-ID:
Received:
X-nom-quelconque:
La seule exception a cette structure concerne la toute premiere ligne. Celle-ci commence par le motcle From suivi d'une espace au lieu du caractere (( deux-points )). A n de la distinguer du champ ordinaire From:, on la reference souvent par From . Elle contient le chemin que le message a emprunte selon la syntaxe UUCP (expliquee plus loin), la date et l'heure a laquelle il a ete recu par la derniere machine qui l'a traite, et une partie optionnelle speci ant de quel h^te il est arrive. Puisque ce champ est o reecrit par chaque systeme voyant passer le message, il est parfois considere comme faisant partie de l'enveloppe. Le champ From est necessaire pour des raisons de compatibilite avec d'anciens agents de transport il n'est pratiquement plus utilise, sauf par certaines interfaces qui s'en servent pour marquer le debut d'un message dans la boite aux lettres de l'utilisateur. Pour eviter des ennuis potentiels dus a la confusion possible avec les lignes du corps du message pouvant aussi commencer par (( From )), il est de coutume de modi er chaque occurrence de ces lignes en la faisant preceder du caractere .
>
207
208
3 Traduisez (( at )) par (( chez )) et vous constaterez que cette notation n'est pas si compliquee a comprendre, cela donne utilisateur chez h^te.domaine. o
:
209
le seul) en un signe @. L'adresse devient alors pour ce site utilisateur@machineB, et le MTA passera le message le plus naturellement du monde a machineB qui le delivrera a utilisateur. Ce type d'adressage est souvent appele (( La vieille rustine de l'ARPANET )), et n'est pas encourage. Neanmoins, beaucoup de MTA savent gerer et parfois generent ce genre de chose. D'autres reseaux utilisent des methodes d'adressages encore di erentes. Les reseaux DECnet, par exemple, utilisent les deux caracteres (( :: )) comme separateur, ce qui donne le format h^te::utilisateur 4. En n, le standard X.400 emploie une notation o completement di erente, decrivant un destinataire par un ensemble de paires attributvaleur. Sur FidoNet, chaque utilisateur est identi e par un code du type 2:320/204.9, consistant en quatre nombres indiquant la zone (2 pour l'Europe), le reseau (320 pour Paris et sa banlieue), le n ud et le point (la machine personnelle de l'utilisateur). Les adresses Fidonet peuvent facilement ^tre transformees au format RFC 822, celle de e notre exemple peut s'ecrire Thomas.Quinot@p9.f204.n320.z2. donet.org. N'avions-nous pas dit que les noms de domaines sont faciles a retenir ? Nous verrons ce qu'implique l'utilisation de ces di erents types d'adresses dans les sections suivantes. Dans un environnement RFC 822, vous n'aurez toutefois que rarement besoin d'autre chose que des adresses absolues comme utilisateur.h^te.domaine. o
210
faire conna^tre ce service, le site publie dans le DNS un enregistrement de type MX pour leur domaine local. MX signi e mail exchanger (echangeur de courrier), et sert a annoncer que l'h^te indique s'occupera de repartir le courrier pour toutes les mao chines de son domaine. Les enregistrements MX peuvent aussi ^tre utilises pour gerer e le courrier de machines qui ne sont pas connectees directement a l'Internet, comme certains sites UUCP ou des reseaux transportant des informations con dentielles. Ces MX se voient aussi associer une preference, sous la forme d'un nombre entier. S'il existe plusieurs echangeurs de courrier pour un h^te, l'agent de transport essaiera de o passer le message a l'echangeur qui a la plus faible valeur de preference, et il n'essaiera les autres que si le premier est inaccessible. Si l'h^te local est lui-m^me un echangeur o e pour l'adresse de destination, il ne doit pas renvoyer de messages a des h^tes MX o ayant une preference superieure a la sienne cela permet d'eviter des bouclages. Supposons qu'une organisation, que nous appellerons toto, veuille que tout leur courrier soit gere par leur machine qui s'appelle laposte.toto.com. Ils auront alors dans la base de donnees du DNS, des enregistrements MX comme celui-ci :
jaune.toto.com. IN MX 5 laposte.toto.com.
Il annonce laposte.toto.com comme un echangeur de courrier pour delivrer un message a destination de, par exemple, marcel@jaune.toto.com, avec une preference de valeur 5. Un h^te desirant delivrer un message a cette adresse interrogera le DNS, o trouvera le MX pointant sur laposte. S'il n'y a pas d'autre MX ayant une preference inferieure a 5, le message sera envoye a laposte, qui saura alors le diriger sur la machine jaune. Bien s^r, cet exemple n'est qu'une ebauche du fonctionnement des enregistrements u MX. Consultez le document RFC 974 pour obtenir plus d'informations sur le routage du courrier sur l'Internet.
211
Ce routage a la source etait necessaire en raison de la presence de noms d'h^tes o ambigus. Par exemple, supposons qu'il existe deux sites appeles hopla l'un aux Etats-Unis, l'autre en France. Lorsque l'on ecrit hopla!alfred, de quel site s'agit-il ? Pour le preciser, il faut speci er quel est le chemin a utiliser pour joindre hopla. A n de parer aux noms ambigus, la premiere etape fut la fondation du UUCP Mapping Project, a Rutgers University. Son but est d'enregistrer tous les noms o ciels de machines UUCP, avec des informations concernant leurs voisins et leur position geographique et de s'assurer que chaque nom est unique au monde. Toutes les informations collectees sont publiees sous la forme de cartes UUCP, distribuees regulierement via Usenet 5 . Apres suppression des commentaires, l'entree d'un systeme dans une carte ressemble a ceci :
renux frmug(DAILY/2), keltia(WEEKLY)
Cette entree indique que la machine renux se connecte deux fois par jour a frmug, et sur keltia une fois par semaine. Nous reviendrons en detail sur ce format un peu plus loin. Gr^ce aux informations sur la connectivite contenues dans ces cartes, vous pouvez a generer automatiquement le chemin d'acces complet depuis votre machine vers n'importe quel site. Ces informations sont generalement stockees dans le chier paths, appele aussi la base de donnees pathalias. Supposons que les cartes indiquent que vous pouvez joindre keltia via imladris une entree pathalias pour renux creee a partir de l'extrait de carte montre plus haut pourrait ressembler a ceci :
renux imladris!keltia!renux!%s
d'autres organisations peuvent di user des cartes separees pour leurs reseaux.
Si maintenant, vous donnez l'adresse de destination sous la forme rene@renux.uucp, votre MTA utilisera la route ci-dessus et enverra le message a imladris, avec une adresse d'enveloppe de keltia!renux!rene. Creer un chier paths a partir de la totalite des cartes UUCP n'est toutefois pas une tres bonne idee. Les informations sont generalement distordues et parfois obsoletes. Par consequent, seul un petit nombre de sites importants utilise la totalite des cartes UUCP du monde entier pour construire leurs chiers paths. La plupart des autres se contentent de posseder les informations de routage concernant leurs voisins les plus proches, et d'envoyer tout le courrier pour les sites absents de leur base de donnees vers une machine mieux informee, qui s'appelle alors le smart-host. Les machines ne possedant qu'un seul lien UUCP ne font jamais aucun routage, et envoient tout leur courrier a leur smart-host qui s'en occupera a leur place. 5 Les cartes des sites enregistres dans ce projet sont distribuees dans le groupe comp.mail.maps
:
212
Un message adresse a claire@jones.sub.org sera envoye a swim avec une adresse d'enveloppe de schtroumpf!jones!claire. L'organisation hierarchisee de l'espace de noms permet aux serveurs de courrier de melanger des routes bien speci ques avec d'autres plus generales. Par exemple, un systeme situe en France peut avoir des routes particulieres pour certains sous-domaines de fr, mais router tout courrier a destination des machines du domaine us vers un systeme situe aux U.S.A. Ainsi, le routage par domaine reduit considerablement la taille des bases de donnees necessaires, aussi bien que les t^ches administratives. a Toutefois, le plus gros bene ce apporte par l'emploi de noms de domaines dans un environnement UUCP, c'est que la conformite au standard RFC 822 permet une interconnexion facile entre les reseaux UUCP et l'Internet. Beaucoup de domaines UUCP possedent de nos jours un lien avec une passerelle Internet qui joue le r^le o de smart host. L'envoi de messages par l'Internet est beaucoup plus rapide, et les informations de routage sont beaucoup plus ables puisque c'est le DNS qui entre en jeu, au lieu des cartes UUCP. Pour ^tre joignables depuis l'Internet, les domaines UUCP possedent generalement un e enregistrement MX dans le DNS. Par exemple, supposons que moria appartient au domaine orcnet.org. La machine gcc2.groucho.edu joue le r^le de leur passerelle o Internet. Par consequent, moria utiliserait gcc2 comme son smart host de sorte que tout le courrier a destination d'autres domaines soit delivre par l'Internet. D'un autre c^te, gcc2 annoncerait un MX pour *.orcnet.org et enverrait tout message o
213
arrivant pour les machines de orcnet a moria. L'asterisque dans *.orcnet.org est un caractere generique qui correspondra a tous les h^tes de ce domaine qui ne sont o associes a aucun autre enregistrement c'est generalement ce qui doit ^tre fait pour e les domaines uniquement UUCP. Il reste un probleme : les programmes de transport par UUCP ne savent pas gerer les noms pleinement quali es. La plupart des programmes furent prevus pour traiter des noms ne depassant pas huit caracteres, parfois moins, et l'utilisation de caracteres non alphanumeriques comme de simples points est hors de question avec la plupart d'entre eux. Par consequent, il est necessaire de pouvoir e ectuer la correspondance entre les noms RFC 822 et UUCP. La facon dont cela est realise depend entierement de l'implementation. Une methode courante consiste a utiliser le chier pathalias :
moria.orcnet.org ernie!bert!moria!%s
Cette entree produira un chemin purement UUCP avec la notation par bangs a partir d'une adresse speci ant un nom pleinement quali e. Certains MTA proposent un chier special destine a ces operations sendmail, par exemple, utilise un chier appele uucpxtable. La transformation inverse (qu'il est courant d'appeler (( domainisation ))), est parfois necessaire lors de l'envoi d'un courrier depuis un reseau UUCP vers l'Internet. Tant que l'expediteur utilise un nom pleinement quali e pour l'adresse de destination, ce probleme peut ^tre evite en ne supprimant pas le nom du domaine de l'adresse d'ene veloppe lors de l'envoi du message au smart host. Toutefois, il reste encore quelques sites UUCP qui ne font partie d'aucun domaine. Ils sont alors domainises en leur rajoutant le pseudo-domaine uucp.
Cette entree fera que tout message pour moria sera delivre en passant par ernie et bert. Il faut indiquer a la fois le nom pleinement quali e et le nom UUCP de moria si le MTA ne sait pas faire la correspondance de l'un a l'autre. Si vous voulez diriger tous les messages pour les h^tes d'un domaine particulier vers o son relais de courrier, vous pouvez aussi speci er un chemin dans la base de donnees pathalias, indiquant le domaine comme une cible, precede d'un point. Par exemple,
214
si toutes les machines de sub.org peuvent ^tre atteintes par swim!smurf, l'entree e pathalias s'ecrira comme ceci :
.sub.org swim!smurf!%s
La realisation manuelle d'un chier pathalias n'est acceptable que si votre site n'a pas trop de routages a e ectuer. Sinon, il vaut mieux utiliser la commande pathalias qui creera le chier a partir des cartes UUCP. Ces cartes peuvent ^tre maintenues bien e plus facilement, car il vous su t de rajouter ou de supprimer l'entree d'un systeme dans la carte et de relancer la commande pour recreer le nouveau chier. Bien que les cartes publiees sur Usenet ne soient pratiquement plus utilisees pour le routage, certains reseaux plus petits peuvent proposer leur propre jeu de cartes a cette n. Un chier de cartes consiste principalement en une liste de sites, contenant les machines avec lesquelles le systeme est regulierement connecte par UUCP, soit comme appelant, soit comme appele. Le nom du systeme commence en premiere colonne, et est suivi par une liste de liens, separes par des virgules. Cette liste peut s'etendre sur plusieurs lignes a condition que la suivante commence par une tabulation. Chaque lien est constitue du nom du site suivi du co^t imaginaire de la connexion, indique u entre parentheses. Il s'agit d'une expression arithmetique, faite de valeurs et de prix symboliques. Les lignes commencant par un diese sont ignorees. Par exemple, considerons moria, qui appelle swim.twobirds.com deux fois par jour et bert.sesame.com une fois par semaine. De plus, la liaison avec bert ne se fait qu'avec un vieux modem 2 400 bps, tres lent. La carte publiee par moria serait alors la suivante :
moria.orcnet.org bert.sesame.com(DAILY/2), swim.twobirds.com(WEEKLY+LOW) moria.orcnet.org = moria
La derniere ligne la ferait conna^tre aussi sous son nom UUCP. Notez que DAILY/2 correspond a deux appels par jour, alors que DAILY*2 signi erait un appel tous les deux jours. Avec ces informations, la commande pathalias est capable de determiner les routes optimales a destination de tout site cite dans le chier paths, et de produire une base de donnees pathalias qui pourra alors ^tre utilisee pour le routage vers ces sites. e Le programme pathalias o re plusieurs autres possibilites, consultez sa page de manuel, ainsi qu'une liste complete des prix symboliques. Dans la carte, les commentaires contiennent generalement des informations supplementaires sur les sites decrits. Il existe un format tres strict pour la speci cation de ces renseignements, de maniere a pouvoir les recuperer par programme. Par exemple, la commande uuwho utilise une base de donnees realisee a partir de ces cartes pour a cher toutes les informations selon un format agreable a lire.
215
Lorsque vous enregistrez votre site aupres d'un organisme qui distribue des cartes a ses membres, vous devrez en principe remplir une telle entree. Voici un exemple d'entree dans les cartes UUCP (en fait, il s'agit de celle du site de l'auteur) :
#N monad, monad.swb.de, monad.swb.sub.org #S AT 486DX50 Linux 0.99 #O private #C Olaf Kirch #E okir@monad.swb.de #P Kattreinstr. 38, D-64295 Darmstadt, FRG #L 49 52 03 N / 08 38 40 E #U brewhq #W okir@monad.swb.de (Olaf Kirch) Sun Jul 25 16:59:32 MET DST 1993 # monad brewhq(DAILY/2) # Domains monad = monad.swb.de monad = monad.swb.sub.org
Le blanc suivant les deux premiers caracteres doit ^tre une tabulation. La signi cation e des champs est evidente vous recevrez tout le detail lorsque vous vous enregistrerez. Le champ L est le plus di cile a remplir : il donne votre position geographique en latitude/longitude, et n'est plus utilise que pour dessiner la carte au format PostScript qui montre tous les sites de chaque pays 6.
216
Ces options determinent la notion qu'aura elm de votre systeme. Bien que ces informations ne soient que rarement utilisees, vous devez les indiquer par precaution. Notez qu'elles n'ont d'e et que lorsqu'elles se trouvent dans ce chier de con guration global. Il est impossible de modi er ces valeurs depuis le chier personnel, pour des raisons de securite evidentes.
Le systeme recepteur doit reconna^tre ce champ et prendre les mesures appropriees lors de l'a chage du message. Le defaut pour les messages text/plain est une valeur charset de us-ascii. A n de pouvoir a cher des messages avec d'autres caracteres que l'ASCII, elm doit savoir comment le faire. Par defaut, lorsqu'il recoit un courrier dont le champ charset est di erent de us-ascii (ou un champ Content-Type di erent de text/plain), il essaie de l'a cher en appelant une commande nommee metamail. Les messages necessitant
217
metamail sont indiques par un M dans la toute premiere colonne de la liste du courrier proposee par elm. Comme le jeu de caracteres natif de Linux est l'ISO-8859-1, il n'est pas necessaire d'appeler metamail pour a cher des messages utilisant ces caracteres. Si l'on indique a elm que l'a chage conna^t l'ISO-8859-1, il l'a chera instantanement, sans appeler de programme externe. Il su t pour cela de positionner l'option suivante dans le chier global elm.rc :
displaycharset = iso-8859-1
Notez que vous devez indiquer cette option m^me si vous n'allez jamais recevoir ou e emettre de messages comportant ces caracteres: les personnes qui postent de tels courriers con gurent leurs programmes pour qu'ils mettent le champ Content-Type par defaut, qu'ils utilisent ces caracteres ou ne postent que de l'ASCII. Toutefois, cette option n'est pas su sante. Le probleme est que lorsqu'il a che le message avec son visionneur interne, elm appelle une fonction de bibliotheque pour chaque caractere, pour determiner s'il est a chable ou pas. Par defaut, cette fonction ne reconna^t que les caracteres purement ASCII, et a che un point d'interrogation pour tous les autres. Vous pouvez modi er ce comportement en positionnant la variable d'environnement LC CTYPE a la valeur ISO-8859-1, ce qui indiquera a la bibliotheque que ces caracteres sont a chables. Sous Linux, le support pour l'internationalisation est present depuis la bibliotheque libc-4.5.8. Lorsque vous postez des messages contenant des caracteres speciaux du jeu ISO, vous devez vous assurer de positionner deux autres variables dans le chier global elm.rc :
charset = iso-8859-1 textencoding = 8bit
Ainsi, elm indiquera correctement dans les en-t^tes de tous les courriers di uses que e le jeu de caracteres est ISO-8859-1, et les enverra sur 8 bits (par defaut, le huitieme bit est mis a zero pour tout transformer en 7 bits). Bien s^r, toutes ces options peuvent aussi ^tre positionnees dans le chier de con u e guration personnel elmrc de chaque utilisateur.
218
219
Chapitre 14
220
En toute circonstance, vous devrez avoir au moins deux liens pointant sur le programme smail : /usr/bin/rmail et /usr/sbin/sendmail 1 . Lorsque vous redigez puis expediez un courrier avec une interface comme elm, le message sera passe a rmail pour ^tre delivre, avec la liste des destinataires sur la ligne de commandes. La m^me e e chose se passe avec le courrier arrivant par UUCP. Quelques versions de elm invoquent toutefois /usr/sbin/sendmail, au lieu de rmail, aussi est-il plus prudent de disposer des deux commandes. Par exemple, si votre binaire de smail se trouve dans /usr/local/bin, tapez ce qui suit pour creer les liens corrects :
# ln -s /usr/local/bin/smail /usr/bin/rmail # ln -s /usr/local/bin/smail /usr/sbin/sendmail
Si vous voulez entrer dans le detail de la con guration de smail, referez-vous aux pages de manuel smail(1) et smail(5). Si vous ne les possedez pas, vous les trouverez dans les sources du programme.
1 Il s'agit de l'emplacement standard de sendmail sous Linux, si l'on suit les recommandations du projet du (( Linux File System Standard )). Sur beaucoup d'autres systemes, sendmail se trouve traditionnellement dans /usr/lib.
:
221
La premiere instruction renseigne smail sur les domaines auxquels votre site appartient. Mettez leurs noms, separes par le caractere (( : )). Si le nom de votre site est enregistre dans les cartes UUCP, vous devez egalement ajouter le pseudo-domaine uucp. Lorsqu'il traite un message, smail determine le nom de votre machine par l'appel systeme hostname(2), et teste l'adresse du destinataire pour la comparer a ce nom, en y rajoutant tour a tour tous ces domaines. Si l'adresse correspond a l'un des cas (ou au nom non quali e), le courrier est considere comme local et sera delivre a l'utilisateur ou l'alias correspondant sur votre machine. Sinon, il est considere comme etant distant, et smail tentera de l'expedier a la machine de destination. La ligne visible name doit contenir un unique nom pleinement quali e, c'est celui que vous voulez voir appara^tre dans tout le courrier emis. Vous devez ^tre certain que e le nom utilise est reconnu par smail comme celui de l'h^te local (par exemple, l'une o des combinaisons donnees avec l'attribut visible domain). Sinon, les reponses a vos messages ne vous arriveraient jamais... La derniere ligne indique le chemin a utiliser pour atteindre le smart host (decrit dans le chapitre precedent). Avec cet exemple, smail enverra tout le courrier non local au smart host. Le nom de cette machine doit ^tre connu par UUCP, puisque c'est le e protocole utilise pour la liaison. Pour cela, consultez le chapitre 12. Il reste une option dont nous n'avons pas encore parle : uucp name. Par defaut, smail prend la valeur retournee par hostname(2) pour indiquer les informations speci ques a UUCP, comme le chemin de retour donne dans la ligne From de l'en-t^te. Si votre e nom de machine n'est pas enregistre dans les cartes UUCP, vous devez dire a smail d'y mettre votre nom pleinement quali e a la place 2 . Il su t pour cela de l'ajouter gr^ce a l'option uucp name du chier con g. a Vous trouverez aussi dans /usr/lib/smail un autre chier, paths.sample. Il s'agit d'un exemple de chier paths mais vous n'en aurez pas besoin, a moins que vous n'ayez des liaisons avec plusieurs sites pour la distribution du courrier. Si vous devez utiliser ce chier, il faudra de toute facon le rediger vous-m^me, ou le creer a partir des cartes e UUCP. Ce chier paths sera decrit plus loin.
222
Dans un environnement reseau, il vaut mieux placer toutes les bo^tes aux lettres des utilisateurs sur un unique systeme de chiers qui est monte par NFS sur toutes les autres machines. Cela permet d'utiliser n'importe quel h^te sans avoir a deplao cer son courrier (ou pis, tester cinq ou six bo^tes aux lettres di erentes chaque matin). Par consequent, il vous faudra aussi faire en sorte que les adresses des expediteurs soient independantes de la machine sur laquelle les messages sont rediges. La pratique courante est de ne mettre que le nom de domaine seul, sans faire appara^tre d'h^te particulier. Par exemple, ce sera marcel@bibine.com au lieu de o marcel@trappiste.bibine.com. Nous verrons comment faire pour que le nom de domaine soit reconnu par le serveur comme un nom valide pour votre site. Une autre methode permettant de conserver toutes les bo^tes aux lettres sur un h^te o central consiste a utiliser POP ou IMAP. POP signi e (( Post O ce Protocol )) et permet aux utilisateurs d'acceder a leur courrier par une simple connexion TCP/IP. IMAP est un protocole interactif d'acces au courrier ((( Interactive Mail Access Protocol ))) similaire a POP, mais plus general. Clients et serveurs POP et IMAP ont ete portes sous Linux et sont disponibles sur les sites di usant ce systeme.
Il est tres semblable a ce que nous avons utilise pour un site uniquement UUCP. La plus grosse di erence, c'est le transport utilise pour envoyer les messages vers le smart host, qui est ici SMTP. L'attribut visible domain indique a smail d'ecrire le nom de domaine speci e dans tout le courrier emis, au lieu du nom local de la machine depuis laquelle le message est poste. Sur la passerelle UUCP geuze, le chier con g est un petit peu di erent :
#
223
Ici, la methode pour indiquer a smail quel est notre nom local est di erente. Au lieu de lui donner une liste de domaines et de le laisser trouver le nom de machine par un appel systeme, nous lui indiquons explicitement ce qu'il en est. La liste contient a la fois le nom pleinement quali e et celui non quali e, et le nom du domaine lui-m^me. e Ainsi, smail reconna^tra marcel@bibine.com comme une adresse locale et delivrera le message a l'utilisateur marcel. La variable auth domains indique les domaines pour lesquels gueuze est considere comme ayant autorite. C'est-a-dire que si smail recoit un courrier adresse a machine.bibine.com, ou machine ne correspond a aucun h^te local, il refusera le o message et le renverra a son expediteur. Si cette entree n'est pas presente, tout message de ce type serait envoye au smart host, qui le renverrait a son tour a gueuze, cette partie de ping-pong pouvant durer inde niment. (Heureusement, il est possible de xer une limite maximale a ce genre de boucle et le message sera nalement perdu.)
Elle de nit le port TCP que smail devra utiliser pour les conversations SMTP. Le port 25 est le standard de ni par le RFC (( Assigned Numbers )).
224
En mode demon, smail se place en t^che de fond et attend les connexions sur le port a SMTP. Pour chacune, il cree un nouveau processus par l'appel systeme fork() pour le temps de la conversation. Le demon smail est generalement lance au demarrage du systeme depuis le script rc.inet2 a l'aide de la commande suivante :
/usr/local/bin/smail -bd -q15m
L'option -bd indique le mode demon, et -q15m lui demande de traiter tous les messages eventuellement accumules dans la queue de courrier toutes les 15 minutes. Si vous preferez qu'il soit gere par inetd, votre chier /etc/inetd.conf devra contenir une ligne comme celle-ci :
smtp stream tcp nowait root /usr/sbin/smtpd smtpd
Le programme smtpd devra ^tre un lien symbolique vers le binaire de smail. Souveneze vous que pour toute modi cation de ce chier, vous devez demander a inetd de le relire en lui envoyant un signal HUP, pour que les modi cations soient prises en compte. Le mode demon et le mode inetd sont mutuellement exclusifs. Si vous utilisez smail en demon, vous devez vous assurer de bien mettre en commentaire toute ligne relative au service smtp dans le chier inetd.conf. Inversement, si vous l'utilisez par inetd, veri ez que rc.inet2 ne lance pas le demon smail.
Nous y voyons qu'un message de l'utilisateur root ayant pour adresse de destination root@gueuze.bibine.com a ete correctement delivre a la machine gueuze par le protocole SMTP.
225
Les courriers que smail ne peut pas delivrer generent une entree similaire, mais avec un message d'erreur a la place de la partie delivered :
04/24/94 07:12:04: m0puwU8-00023UB] received | from: root | program: sendmail | size: 1468 bytes 04/24/94 07:12:04: m0puwU8-00023UB] root@gueuze.bibine.com ... deferred (ERR_148) transport smtp: connect: Connection refused
L'erreur ci-dessus est typique lorsque smail reconna^t correctement que le message doit ^tre delivre a gueuze, mais qu'il n'arrive pas a se connecter sur le service SMTP e de cette machine. Si cela se produit, vous devez avoir un probleme de con guration, ou le support de TCP est absent dans votre binaire de smail. Ce cas n'est pas si rare. Il a circule des versions precompilees de smail, y compris dans certaines distributions de Linux, sans support pour le reseau TCP/IP. Si vous ^tes en e possession de l'une d'elles, vous devrez recompiler correctement le programme. Pour veri er, vous pouvez tester si smail supporte TCP en connectant par telnet le port SMTP de votre machine. Voici a quoi ressemble une connection reussie :
$ telnet localhost smtp Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 renux.frmug.fr.net Smail3.1.28.1 #3 ready at Sun, 25 Dec 94 14:59 MET QUIT 221 renux.frmug.fr.net closing connection
Si ce test n'a che pas la banniere SMTP (la ligne commencant par le code 220), veri ez d'abord que votre con guration est vraiment correcte avant de vous lancer dans la compilation de smail, que nous allons maintenant decrire. Si vous rencontrez un probleme que vous n'arrivez pas a situer dans les messages d'erreurs generes par smail, vous pouvez mettre en route les messages de deboguage. Il su t d'employer l'option -d suivie d'une valeur facultative, speci ant le niveau de verbosite desire (ne mettez pas d'espace entre l'option et la valeur). Toutes les operations qu'e ectuera smail s'a cheront alors a l'ecran, ce qui pourra vous aider a situer a quel moment le probleme se produit. Si vraiment rien ne va plus, vous pouvez invoquer le mode Rogue de smail en lui passant l'option -bR sur la ligne de commandes. La page de manuel dit a peu pres ceci : (( Entrez dans le monde hostile des messages geants, ou de lent les standards RFC. Tente de descendre au niveau de protocole 26, et de revenir a la normale. )) Cette option ne reglera s^rement pas vos problemes, mais elle vous apportera peutu ^tre quelque consolation. :-) e
226
227
Elle montre ici qu'un seul message est en attente. La trace de transaction (qui ne sera a chee que si vous appelez mailq avec l'option -v) peut donner la raison pour laquelle il est toujours en attente d'^tre delivre. Si aucune tentative de distribution e n'a encore ete faite, aucune trace de transaction ne sera indiquee. M^me si vous n'employez pas de le d'attente, smail l'utilisera quand m^me en cere e taines occasions, lorsqu'il ne peut delivrer un message en raison d'un probleme momentane. Dans le cas de connexions SMTP, ce peut ^tre une machine injoignable, e mais le courrier sera aussi stocke si le systeme de chiers est plein. Il faut donc imperativement traiter la queue au moins toutes les heures, sinon les eventuels messages en attente y resteraient pour l'eternite.
L'adresse du postmaster. Si l'adresse Postmaster ne peut pas ^tre e resolue en une adresse locale valide, c'est celle-ci qui sera utilisee en dernier lieu. Sa valeur par defaut est root.
228
229
h^tes du domaine titi.com, alors qu'un autre a des informations sur toto.titi.com. o Dans ce cas, comme c'est le dernier qui est le plus speci que, c'est lui qui sera choisi. Si deux routeurs arrivent a egalite, c'est le premier rencontre dans le chier routers qui sera selectionne. Maintenant, ce routeur speci e un transport a utiliser, par exemple UUCP, et genere une nouvelle adresse de destination. La nouvelle adresse est passee au module de transport avec le nom de la machine a laquelle renvoyer le message. Dans notre exemple ci-dessus, smail pourra trouver que toto.titi.com peut ^tre atteint e par UUCP en utilisant le chemin ernie!bert. Il generera alors une nouvelle cible, bert!toto.titi.com!alfred, qui sera l'adresse d'enveloppe pour le transport UUCP qui sera passee a ernie. Avec la con guration par defaut, sont disponibles les modules routeurs suivants : { Si l'adresse de la machine de destination peut ^tre resolue par les fonctions e gethostbyname(3) ou gethostbyaddr(3), le message sera delivre par SMTP. La seule exception sera lorsque cette adresse correspondra a la machine locale il sera alors passe au module directeur. Les adresses IP sont egalement reconnues comme noms legaux, tant qu'elles peuvent ^tre resolues par la fonction gethostbyaddr(3). Par exemple, dugee nou@ 149.76.12.4] est une adresse valide, bien que peu habituelle elle correspond selon nos exemples a l'adresse de l'utilisateur dugenou sur la machine quark.physique.groucho.edu. Si votre machine est sur l'Internet, ces routeurs ne sont pas ceux qu'il vous faut car ils ne reconnaissent pas les enregistrements de type MX. Nous verrons plus loin ce qu'il faut faire dans ce cas. { Si /usr/lib/smail/paths, la base de donnees pathalias, existe, smail essaiera de trouver la machine destinataire (amputee de tout pseudo-domaine .uucp) dans ce chier. Le courrier a destination d'une adresse trouvee par ce routeur sera delivre par UUCP en utilisant le chemin indique dans la base de donnees. { L'adresse (amputee de tout pseudo-domaine .uucp) sera comparee a la sortie de la commande uuname pour tester si la cible est en fait un voisin UUCP. Si c'est le cas, le message sera delivre par UUCP. { Si l'adresse n'a pu ^tre geree par aucun des routeurs precedents, le message sera e delivre au smart host. Le chemin vers cette machine, et le transport a utiliser, sont con gures dans le chier con g. Ces valeurs par defaut fonctionnent pour beaucoup de petits sites, mais echouent des que le routage necessaire est un peu plus complique. Si vous ^tes confronte a e l'un des problemes que nous allons expliquer ci-dessous, vous devrez installer votre propre chier routers pour modi er ces comportements par defaut. Vous en trouverez un exemple dans l'annexe B, qui pourra vous servir de point de depart. Certaines
230
distributions de Linux sont fournies avec un ensemble de chiers de con guration etudies pour contourner ces di cultes. Le pire des cas est probablement lorsque votre machine est reliee a l'exterieur a la fois par des liaisons UUCP et des connexions IP temporaires, avec PPP ou SLIP. Vous aurez dans votre chier hosts, le nom de certains h^tes avec lesquels vous communiquez o de temps en temps en IP, et smail tentera de delivrer tout courrier pour ces machines par SMTP. Ce n'est s^rement pas ce que vous desirez, car m^me si la liaison SLIP est u e regulierement active, le transfert par SMTP est bien plus lent que par UUCP. Avec la con guration par defaut, il n'y a pas de solution. Pour eviter ce probleme, il va falloir que smail teste le chier paths avant d'interroger le resolver, et que vous mettiez tous les h^tes pour lesquels vous voulez forcer un o transport UUCP dans ce chier. Si vous ne voulez jamais utiliser SMTP, vous pouvez egalement mettre en commentaire tout ce qui concerne les routeurs bases sur le resolver. La con guration par defaut sou re d'un autre probleme : elle ne peut faire de reel routage Internet, car le routeur ne sait pas evaluer les MX. Pour remedier a cela, vous devez mettre entre commentaires le routeur par defaut et supprimer les commentaires de celui qui utilise BIND. Il existe cependant des distributions de Linux qui fournissent un binaire de smail dans lequel le support de BIND n'est pas compile. Si vous validez le bon routeur, mais que vous obtenez dans le chier paniclog un message disant : (( router inet hosts: driver bind not found )), vous devrez recompiler smail (voyez la section (( Con guration reseau )) plus haut). En n, l'utilisation du pilote uuname est en general une mauvaise idee. D'une part, il generera une erreur de con guration si vous n'avez pas installe UUCP, car il ne trouvera pas la commande uuname. D'autre part, vous pouvez avoir plus de sites indiques dans votre chier Systems de UUCP, que vous n'avez de liaisons pour le courrier. Il peut s'agir de machines avec lesquelles vous n'echangez que des chiers ou des News Usenet, par exemple. Pour contourner le premier probleme, il est facile de substituer un shell-script a la commande uuname, qui fera un simple exit 0. La solution la plus propre est toutefois d'editer le chier routers pour supprimer ce pilote.
231
tabulation. Les bases de donnees pathalias sont presentees avec un peu plus de details dans le chapitre 13. Si vous realisez ce chier a la main, vous devez faire bien attention d'y mettre tous les noms legaux d'un site. Par exemple, si une machine est connue a la fois par un nom purement UUCP et un nom pleinement quali e, il faudra une entree pour les deux cas. Le chier peut ^tre trie par la commande standard sort(1). e Si votre site est juste un petit site UUCP isole en bout de cha^ne, aucun chier paths ne sera necessaire il su t de con gurer le smart host dans le chier con g, et laisser cette machine s'occuper de router tous vos messages pour vous.
232
dans la premiere ligne de son chier de bo^te aux lettres. Tout son courrier sera alors envoye aux destinataires indiques. L'autre solution est de creer un chier .forward dans son repertoire personnel, contenant la liste des destinataires, separes par des virgules. Avec cette methode, toutes les lignes du chier sont lues et interpretees. N'importe quel type d'adresse peut ^tre utilise. Un exemple pratique de chier .fore ward pendant la periode des vacances pourrait ^tre : e
marcel, "|vacation"
La premiere adresse delivre le courrier a l'utilisateur marcel, et la seconde appelle la commande vacation, destinee a envoyer un petit mot a l'expediteur pour lui indiquer la situation.
233
Ou destinataires est une liste d'adresses, separees par des virgules, qui seront substituees a cet alias. La liste peut s'etendre sur plusieurs lignes si la ligne suivante commence par une tabulation. Une possibilite supplementaire o erte par smail consiste a pouvoir gerer des listes de di usion directement depuis le chier d'alias : si vous speci ez :include:fichier comme destinataire, smail lira le chier indique et son contenu sera considere comme une liste de destinataires. Le chier d'alias principal se nomme /usr/lib/aliases. Si vous choisissez de rendre ce chier modi able par tout le monde, smail ne delivrera aucun message aux commandes shell qu'il y rencontrera, par securite. Voici un exemple de chier /usr/lib/aliases :
# bibine.com fichier /usr/lib/aliases hostmaster: marcel postmaster: marcel usenet: alfred # La liste de diffusion des developpeurs. developpement: rene, remy, roberto, boudinus /var/mail/log/developpement owner-developpement: roberto # Les annonces d'inter^t general sont envoyees a tout e # le staff annonces: :include: /usr/lib/smail/staff, /var/mail/log/annonces owner-annonces: root # Envoie la liste de diffusion ppp vers un forum local. ppp-list: "|/usr/local/lib/monfiltre local.listes.ppp"
Si une erreur se produit sur une adresse generee depuis le chier aliases, smail tentera d'envoyer une copie du message d'erreur a l'alias (( owner )) (le proprietaire). Par exemple, si lors de la repartition de la liste de di usion de developpement, il est impossible de delivrer le courrier a boudinus, une copie du message d'erreur sera postee a l'expediteur, aussi bien qu'a postmaster et owner-developpement (roberto dans cet exemple). Si cette derniere adresse n'existe pas, aucun message d'erreur supplementaire ne sera genere. Lorsqu'il delivre du courrier dans des chiers ou lorsqu'il invoque des programmes indiques dans le chier aliases, smail devient l'utilisateur nobody le temps de l'operation, par securite. Ce peut ^tre tres g^nant, particulierement lorsque la destination e e est un chier. Dans l'exemple ci-dessus, les chiers du repertoire log doivent pouvoir ^tre ecrits par nobody et doivent lui appartenir, sinon rien n'y sera delivre. e
234
235
dernier utilise aussi smail, vous devrez creer un lien nomme rsmtp vers le programme smail. S'il s'agit de sendmail, vous devrez installer un shell-script que vous appellerez /usr/bin/bsmtp, qui fera tout simplement (( exec rsmtp )) (un lien symbolique ne marchera pas).
236
Le chier /usr/lib/smail/qualify indique a smail quels noms de domaines rajouter a quels noms d'h^tes. Les entrees de ce chier consistent en un nom de machine commeno cant sur la premiere colonne, suivi par un nom de domaine. Le signe diese introduit un commentaire. Ces entrees sont recherchees dans l'ordre ou elles apparaissent. Si ce chier n'existe pas, aucune quali cation de noms ne sera e ectuee. Le caractere * correspond a tout nom de machine, ce qui vous permet d'associer tout h^te non mentionne auparavant dans un domaine par defaut. Il ne doit ^tre utilise o e que pour la derniere entree, bien entendu. A (( La biere virtuelle )), toutes les machines ont ete con gurees pour utiliser des noms pleinement quali es dans les adresses des expediteurs. Les adresses recues non quali ees sont considerees ^tre toutes dans le domaine uucp, aussi il su t d'une e entree dans le chier qualify :
# /usr/lib/smail/qualify, derniere modification le 25 Dec. 94 par Noel # * uucp
237
Chapitre 15
Sendmail+IDA
15.1 Introduction a Sendmail+IDA
On dit souvent que celui qui n'a jamais edite un chier sendmail.cf n'est pas un veritable administrateur UNIX. La legende dit aussi qu'il ne faut jamais le faire deux fois, sous peine de devenir fou. Sendmail est un programme o rant des possibilites incroyables. Pour la plupart des gens, il est aussi incroyablement di cile a apprendre et a comprendre. Tout programme dont la reference absolue (sendmail, par Brian Costales, Eric Allman et Neil Rickert) fait 792 pages, a de quoi epouvanter les plus temeraires. Sendmail+IDA est di erent. Avec lui, plus besoin d'editer le redoutable chier sendmail.cf, il permet a l'administrateur de de nir le routage et la con guration speci ques au site par des chiers relativement simples a comprendre, appeles tables. Passer a Sendmail+IDA peut vous faire economiser beaucoup d'heures de travail et de stress. Compare aux principaux autres agents de transport de courrier, il n'y a probablement rien qui ne puisse ^tre fait plus rapidement et simplement qu'avec Sendmail+IDA. e Les t^ches classiques consistant a con gurer un site UUCP ou Internet deviennent a simples a accomplir. Les con gurations qui sont normalement longues et complexes sont faciles a creer eta maintenir. A l'heure ou nous ecrivons ces lignes, la version courante, sendmail5.67b+IDA1.5, est disponible par FTP anonyme sur le site vixen.cso.uiuc.edu. Elle se compile sous Linux sans aucune modi cation 1 .
1 La version courante, a l'heure ou ces lignes sont traduites, est sendmail 8.6.9, qui est fournie sous forme binaire dans les distributions de Linux et utilisee sur bien d'autres systemes. Elle est beaucoup plus simple et universelle, et sa con guration n'a plus rien a voir avec sendmail5.67b+IDA1.5 qui, bien que decrit dans ce livre, est obsolete.
:
238
Tous les chiers de con guration requis pour la compilation de Sendmail+IDA, son installation et son utilisation sous Linux sont inclus dans l'archive newspak-2.2.tar.gz, disponible par FTP anonyme sur le site d'archivage sunsite.unc.edu, dans le repertoire /pub/Linux/system/Mail.
De nit le comportement pour les domaines ou les h^tes distants. o Force le transfert du courrier par UUCP pour les h^tes qui sont au o format DNS. De nit les chemins UUCP vers les domaines ou h^tes distants. o Court-circuite le chemin pathalias pour les h^tes distants bien connus. o Convertit les adresses internes en adresses generiques visibles du reste du monde. Convertit les adresses generiques en adresses internes valides. Convertit les adresses RFC-822 en adresse DECnet.
239
Il contient quelques de nitions, et ne fait essentiellement que pointer vers les tables, ou le vrai travail se fait. En general, il su t de speci er les informations suivantes : { Les noms de chiers et chemins d'acces utilises sur le systeme local. { Le nom (ou les noms) par lequel le site est connu pour le courrier electronique. { Quel programme doit delivrer le courrier par defaut (et peut-^tre quel est le e smart-host). Toute une variete de parametres peuvent ^tre de nis pour etablir le comportement e du site local ou pour forcer la con guration compilee par defaut. Ces options sont identi ees dans le chier ida/cf/OPTIONS, dans le repertoire source. Un chier sendmail.m4 destine a une con guration minimale (UUCP ou SMTP avec tout le courrier non local envoye a un smart-host directement connecte) peut ne pas depasser 10 a 15 lignes, commentaires exclus.
LIBDIR de nit le repertoire dans lequel Sendmail+IDA ira chercher les chiers de con guration, les di erentes tables dbm, et les de nitions locales speciales. Dans une distribution binaire typique, ce parametre est compile dans le programme et n'a pas besoin d'^tre explicitement indique dans le chier sendmail.m4. e
240
dnl #---------------- EXEMPLE DE FICHIER SENDMAIL.M4 ------------------dnl # (La cha^ne 'dnl' est l'equivalent m4 d'un commentaire de ligne) dnl # Il est preferable de ne pas changer le LIBDIR compile dans le programme dnl #define(LIBDIR,/usr/local/lib/mail)dnl # ou vont les fichiers support define(LOCAL_MAILER_DEF, mailers.linux)dnl # prog. delivrant le courrier local define(POSTMASTERBOUNCE)dnl # postmaster recoit les rejets define(PSEUDODOMAINS, BITNET UUCP)dnl # ne pas essayer DNS sur ceux-la dnl #------------------------------------------------------------------dnl # define(PSEUDONYMS, gueuze.bibine.com gueuze.UUCP bibine.com) dnl # noms par lesquels nous sommes dnl # connus define(DEFAULT_HOST, gueuze.bibine.com)dnl # notre 'nom' primaire pour dnl # le courrier define(UUCPNAME, gueuze)dnl # notre nom uucp dnl # dnl #-----------------------------------------------------------------dnl # define(UUCPNODES, |uuname|sort|uniq)dnl # nos voisins uucp define(BANGIMPLIESUUCP)dnl # assurons-nous que le courrier define(BANGONLYUUCP)dnl # uucp sera traite correctement define(RELAY_HOST, moria)dnl # notre smart-host define(RELAY_MAILER, UUCP-A)dnl # nous joignons moria par uucp dnl # dnl #-------------------------------------------------------------------dnl # dnl # les differentes tables dbm de recherche dnl # define(ALIASES, LIBDIR/aliases)dnl # alias systeme define(DOMAINTABLE, LIBDIR/domaintable)dnl # domainisation des noms define(PATHTABLE, LIBDIR/pathtable)dnl # base de donnees chemins uucp define(GENERICFROM, LIBDIR/generics)dnl # adresses 'from' generiques define(MAILERTABLE, LIBDIR/mailertable)dnl # mailers par h^te ou par domaine o define(UUCPXTABLE, LIBDIR/uucpxtable)dnl # chemins vers les h^tes uucp o define(UUCPRELAYS, LIBDIR/uucprelays)dnl # court-circuite pathalias dnl # dnl #----------------------------------------------------------------------dnl # dnl # inclusion du 'vrai' code qui fait fonctionner le tout dnl # (fourni avec le code source) dnl # include(Sendmail.mc)dnl # ENTREE INDISPENSABLE !!! dnl # dnl #---------------- FIN DE L'EXEMPLE DE FICHIER SENDMAIL.M4 ---------------
241
La ligne de l'exemple commence par les trois lettres dnl, ce qui signi e qu'il s'agit d'un commentaire. Pour modi er l'endroit ou vous desirez placer les chiers de con guration, supprimez la cha^ne dnl, indiquez le chemin d'acces voulu, puis reconstruisez et reinstallez le chier sendmail.cf.
La plupart des systemes d'exploitation proposent un programme pour delivrer le courrier local. Sur beaucoup de versions d'UNIX, les noms de ces programmes sont deja inclus dans le binaire de sendmail. Sous Linux, il est necessaire d'indiquer quel sera le programme approprie car il n'est pas forcement present dans la distribution que vous avez installee. Il su t de speci er la valeur de LOCAL MAILER DEF dans le chier sendmail.m4. Par exemple, pour que ce soit le programme deliver, tres souvent utilise dans ce but 2 , vous positionnerez LOCAL MAILER DEF a mailers.linux. Le chier suivant devra alors ^tre installe sous le nom de mailers.linux dans le ree pertoire pointe par LIBDIR. Il de nit le programme deliver comme le mailer interne Mlocal avec les parametres corrects, a n que sendmail puisse correctement delivrer le courrier destine au systeme local. A moins que vous ne soyez un expert sendmail, vous n'aurez pas inter^t a modi er cet exemple. e
# -- /usr/local/lib/mail/mailers.linux -# (local mailers for use on Linux ) Mlocal, P=/usr/bin/deliver, F=SlsmFDMP, S=10, R=25/10, A=deliver $u Mprog, P=/bin/sh, F=lsDFMeuP, S=10, R=10, A=sh -c $u
Il existe aussi une valeur par defaut pour deliver dans le chier Sendmail.mc qui est inclus dans sendmail.cf. Pour le speci er, vous ne devez pas utiliser le chier mailers.linux mais de nir a la place, dans votre chier sendmail.m4, ce qui suit :
dnl --- (in sendmail.m4) --define(LOCAL_MAILER_DEF, DELIVER)dnl # prog. pour courrier local
de plusieurs distributions de Linux et peut ^tre trouve sur les archives FTP anonymes courantes. e
Malheureusement, Sendmail.mc considere que deliver est installe dans le repertoire /bin, ce qui n'est pas le cas dans les distributions de Linux comme Slackware, qui le placent dans /usr/bin. Dans ce cas, vous devrez soit le tromper avec un lien symbolique, soit recompiler a partir des sources pour qu'il fonctionne depuis /bin. 2 Le programme deliver est l' uvre de Chip Salzenberg (chip%tct@ateng.com). Il fait partie
:
242
Il existe plusieurs reseaux bien connus qui sont souvent references dans des adresses de courrier pour des raisons historiques, mais qui ne sont pas valides lors d'une recherche par le DNS. De nir PSEUDODOMAINS evite d'inutiles requ^tes aux serveurs de e noms, qui echoueront toujours.
Souvent, les systemes doivent cacher leur vraie identite, servir de passerelle de courrier, ou recevoir et traiter des messages adresses a d'anciens noms, sous lesquels ils etaient connus auparavant. PSEUDONYMS speci e la liste de tous les noms pour lesquels le systeme local acceptera du courrier.
243
DEFAULT HOST speci e le nom qui appara^tra dans les messages emis depuis le systeme local. Il faut absolument que ce parametre soit positionne a une valeur valide, sinon toutes les reponses aux courriers ne pourront ^tre delivrees. e
Tres souvent, les systemes sont connus sous un nom pour le DNS et sous un autre pour UUCP. UUCPNAME vous permet de de nir un nom d'h^te di erent, qui appara^tra o dans les en-t^tes du courrier emis par UUCP. e UUCPNODES de nit les commandes qui retournent une liste de machines avec lesquelles vous ^tes directement en liaison UUCP. e BANGIMPLIESUUCP et BANGONLYUUCP assurent que le courrier adresse avec la notation par bangs UUCP sera traite selon la methode UUCP plut^t que par celle o du DNS utilisee de nos jours sur l'Internet.
Beaucoup d'administrateurs systeme ne veulent pas passer tout leur temps a con gurer leur machine pour s'assurer qu'elle peut vraiment atteindre tous les h^tes de la o planete. Ils preferent envoyer tout le courrier dont la destination est inconnue vers une machine relais, qui saura prendre ce routage en charge, que l'on appelle le smart-host. RELAY HOST de nit le nom UUCP d'une telle machine. RELAY MAILER de nit l'agent de transport utilise pour relayer les messages. Il est important de noter que positionner ces parametres aura pour consequence d'envoyer tout votre courrier sortant vers ce systeme distant, ce qui a ectera la charge de cette machine. Assurez-vous auparavant d'avoir obtenu l'accord de son administrateur avant de lui envoyer tout ce travail.
244
define(UUCPXTABLE, LIBDIR/uucpxtable)dnl define(UUCPRELAYS, LIBDIR/uucprelays)dnl
Avec ces macros, vous pouvez changer l'endroit ou Sendmail+IDA recherche les diverses tables dbm qui de nissent le comportement (( reel )) du systeme. Il est raisonnable de les laisser dans LIBDIR.
Les auteurs de Sendmail+IDA fournissent le chier Sendmail.mc, qui est le c ur de ce qui deviendra le chier sendmail.cf. De nouvelles versions sont di usees periodiquement, pour corriger des bogues ou rajouter des fonctionnalites sans avoir besoin d'une distribution complete ou de recompiler sendmail. Par consequent, il est tres important de ne jamais editer ce chier.
245
Supposons maintenant que vous desirez que tout le courrier pour le gros domaine groucho.edu aille vers un h^te relais di erent (grostas) pour la resolution des o adresses et la distribution. La table mailertable deviendra alors comme ceci :
# (extrait de mailertable) # # renvoie tout le courrier pour le domaine .cs.groucho.edu # par UUCP sur la machine ada. UUCP-A,ada .cs.groucho.edu # # renvoie tout le courrier pour le domaine groucho.edu par UUCP # vers la machine grostas. UUCP-A,grostas .groucho.edu
246
Comme nous l'avons dit plus haut, l'ordre des entrees est important. Si les deux regles ci-dessus apparaissaient dans le sens inverse, tout le courrier vers .cs.groucho.edu serait dirige par la regle generale vers grostas au lieu d'^tre traite par la regle plus e speci que devant l'envoyer vers ada. Dans l'exemple de mailertable ci-dessus, UUCP-A indique a sendmail de delivrer le courrier par UUCP avec des en-t^tes domainises. e La virgule entre la methode et le nom du systeme lui indique d'envoyer le message a ada pour la resolution d'adresses et l'expedition (ce n'est pas qu'un caractere separateur, il peut avoir plusieurs valeurs, nous allons voir ca). Les entrees mailertable ont le format suivant :
methode delimiteur h^te-relais o h^te ou domaine o
Il y a plusieurs methodes possibles. Les di erences se trouvent generalement dans la maniere dont les adresses sont traitees. Les valeurs typiques sont TCP-A (TCP/IP avec des adresses de type Internet), TCP-U (TCP/IP avec des adresses de type UUCP), et UUCP-A (UUCP avec des adresses de type Internet). Le caractere qui separe la methode de la partie h^te sur la gauche d'une ligne maio lertable de nit comment l'adresse sera modi ee. ! , : Un point d'exclamation supprime le nom d'h^te destinataire avant o l'envoi. Vous l'utiliserez essentiellement lorsque vous voulez forcer le courrier vers un site distant mal con gure. Une virgule ne modi e jamais l'adresse. Le message est envoye par la methode indiquee vers la machine relais speci ee. Le caractere (( deux-points )) supprime le nom d'h^te destinataire o seulement s'il existe des machines intermediaires entre vous et la destination. Donc, dans toto!titi!marcel, toto sera supprime, alors que xyzzy!alfred restera inchange.
Ce qui est important, c'est que mailertable ne reecrit que l'enveloppe (pour que le systeme distant accepte le message). Reecrire autre chose que l'enveloppe est en general tres mal vu (et peut completement deregler la con guration du courrier).
247
Cette methode est utilisee lorsque vous ^tes une passerelle courrier pour un site, e ou lorsque vous voulez envoyer directement des messages vers une liaison UUCP directe plut^t que de passer par la liaison par defaut et plusieurs autres systemes o intermediaires. Les sites UUCP qui sont connectes a vos voisins UUCP utilisant des en-t^tes doe mainises utiliseront ce chier pour forcer l'envoi du courrier par la liaison UUCP directe entre les deux systemes, plut^t que d'utiliser la route moins directe par REo LAY MAILER et RELAY HOST ou via DEFAULT MAILER. Les sites Internet qui n'utilisent pas UUCP n'auront pas besoin de uucpxtable. Supposons que vous o rez le renvoi du courrier a un systeme appele sesame.com dans le DNS et sesame dans les cartes UUCP. Vous aurez besoin de l'entree suivante dans uucpxtable pour forcer le courrier pour cette machine a passer par votre connexion UUCP directe :
#============== /usr/local/lib/mail/uucpxtable ============ # Le courrier pour utilisateur@sesame.com est reecrit sous # la forme sesame!utilisateur et par consequent sera delivre # par UUCP # sesame sesame.com # #----------------------------------------------------------
248
249
Soyez toujours vigilant sur la securite lorsque vous de nissez des alias qui appelleront des programmes ou ecriront dans des chiers car sendmail fonctionne avec un setuid a root. Les modi cations e ectuees dans le chier aliases ne prennent e et qu'apres avoir execute la commande :
# /usr/lib/sendmail -bi
Cette commande reconstruit la table dbm necessaire. Vous pouvez egalement employer la commande newaliases, que l'on fait souvent executer a intervalles reguliers par cron. Tous les details concernant les alias peuvent se trouver dans la page de manuel aliases(5). Ci-dessus, gure 15.2, un exemple de chier aliases.
Le chier uucprelays est utilise pour (( court-circuiter )) le chemin UUCP vers des sites particulierement connus, plut^t que de laisser o le message partir par une route incertaine generee par le traitement des cartes UUCP avec pathalias.
250
genericfrom et xaliases Le chier genericfrom cache les noms d'utilisateurs locaux, ainsi que leurs adresses, en les convertissant en adresses generiques qui ne correspondent pas aux valeurs internes. L'utilitaire associe xalparse automatise la generation des chiers genericfrom et aliases de sorte que les traductions entrantes et sortantes soient faites a partir d'un chier de reference, xaliases. decnetxtable
Si vous avez une commande tar (( moderne )), vous pourrez probablement obtenir le m^me resultat par la simple commande tar -zxvf fichier.tgz. e Une fois ce traitement termine, vous aurez obtenu un repertoire portant le nom de sendmail5.65b+IDA1.5+mailx5.3b. Vous y trouverez une installation complete de Sendmail+IDA plus un binaire du programme utilisateur mailx. Toute l'arborescence
251
en dessous de ce repertoire re ete l'emplacement exact ou les chiers doivent ^tre e installes. Vous pouvez donc en toute securite les mettre en place ainsi :
# cd sendmail5.65b+IDA1.5+mailx5.3b # tar cf - . | (cd / tar xvvpoof -)
De nit tous les noms sous lesquels votre h^te local peut ^tre connu. o e DEFAULT HOST Mettez votre nom pleinement quali e ici. Ce nom appara^tra comme votre nom d'h^te dans tout le courrier emis. o UUCPNAME Mettez votre nom d'h^te non quali e ici. o RELAY HOST et RELAY MAILER Si vous vous connectez par UUCP a un smart-host, assignez le nom de cette machine a RELAY HOST. Si vous desirez des en-t^tes doe mainises, utilisez la methode UUCP-A. DEFAULT MAILER Si vous ^tes sur l'Internet et utilisez le DNS, vous devez mettre TCPe A. Cela indiquera a sendmail d'utiliser la methode TCP-A, qui delivre le courrier par SMTP avec un style RFC normal pour l'adresse d'enveloppe. Les sites Internet n'ont pas besoin de de nir RELAY HOST ou RELAY MAILER.
252
Le chier votre-h^te.m4 sera traite par m4 et un chier votre-h^te.cf sera realise. o o Ensuite, vous devez tester si le chier de con guration que vous venez de creer fait bien ce que vous attendez de lui : ce sera l'objet des deux sections suivantes. Lorsque vous en serez satisfait, mettez-le en place par la commande :
# cp votre-h^te .cf /etc/sendmail.cf o
A ce stade, votre systeme sendmail est pr^t a fonctionner. Mettez la ligne suivante e dans le script qui lance les demons sur votre machine (generalement /etc/rc.inet2) vous pouvez aussi l'executer a la main pour ne pas avoir a relancer Linux :
# /usr/lib/sendmail -bd -q1h
Les tests qui suivent veri ent que sendmail est capable de delivrer tout le courrier a vos utilisateurs. Dans tous les cas, le resultat du test doit ^tre le m^me et pointer vers e e le systeme local, avec le transport LOCAL. Tout d'abord, regardons comment un courrier pour un utilisateur local sera delivre:
# /usr/lib/sendmail -bt -Cgueuze.cf ADDRESS TEST MODE Enter <ruleset> <address> Note: No initial ruleset 3 call] > 3,0 moi rewrite: ruleset 3 input: moi rewrite: ruleset 7 input: moi rewrite: ruleset 9 input: moi
253
La sortie montre comment sendmail traite une adresse de maniere interne. Elle est passee a di erentes regles qui l'analysent, et en appellent d'autres tour a tour, et toutes ses composantes sont isolees. Dans notre exemple, nous avons donne l'adresse moi aux regles 3 et 0 (d'ou le nombre 3,0 entre avant l'adresse). La derniere ligne montre l'adresse analysee telle que retournee par la regle 0, contenant la methode par laquelle le message serait delivre ainsi que l'h^te et l'utilisateur qui lui seront passes. o Ensuite, veri ons ce que donne un message a un utilisateur du systeme, avec une syntaxe UUCP.
# /usr/lib/sendmail -bt -Cgueuze.cf ADDRESS TEST MODE Enter <ruleset> <address> Note: No initial ruleset 3 call] > 3,0 gueuze!moi rewrite: ruleset 3 input: gueuze ! moi ...] rewrite: ruleset 0 returns: $# LOCAL $@ gueuze . bibine . com >
$: moi
Maintenant, un courrier pour un utilisateur du systeme, mais avec la syntaxe Internet et le nom pleinement quali e de la machine :
# /usr/lib/sendmail -bt -Cgueuze.cf ADDRESS TEST MODE Enter <ruleset> <address> Note: No initial ruleset 3 call] > 3,0 moi@gueuze.bibine.com rewrite: ruleset 3 input: moi @ gueuze . bibine . com ...] rewrite: ruleset 0 returns: $# LOCAL $@ gueuze . bibine . com $: moi >
Vous devez recommencer les tests ci-dessus avec chacun des noms que vous avez
254
indique dans les parametres PSEUDONYMS et DEFAULT NAME de votre chier sendmail.m4. En n, veri ons que vous pouvez envoyer du courrier vers votre relais :
# /usr/lib/sendmail -bt -Cgueuze.cf ADDRESS TEST MODE Enter <ruleset> <address> Note: No initial ruleset 3 call] > 3,0 fred@moria.com rewrite: ruleset 3 input: fred @ moria . com rewrite: ruleset 7 input: fred @ moria . com rewrite: ruleset 9 input: fred @ moria . com rewrite: ruleset 9 returns: < fred > @ moria . com rewrite: ruleset 7 returns: < @ moria . com > , fred rewrite: ruleset 3 returns: < @ moria . com > , fred rewrite: ruleset 0 input: < @ moria . com > , fred rewrite: ruleset 8 input: < @ moria . com > , fred rewrite: ruleset 8 returns: < @ moria . com > , fred rewrite: ruleset 29 input: < @ moria . com > , fred rewrite: ruleset 29 returns: < @ moria . com > , fred rewrite: ruleset 26 input: < @ moria . com > , fred rewrite: ruleset 25 input: < @ moria . com > , fred rewrite: ruleset 25 returns: < @ moria . com > , fred rewrite: ruleset 4 input: < @ moria . com > , fred rewrite: ruleset 4 returns: fred @ moria . com rewrite: ruleset 26 returns: < @ moria . com > , fred rewrite: ruleset 0 returns: $# UUCP-A $@ moria $: < @ moria . com > , fred >
255
Si vous avez des voisins UUCP autres que votre RELAY HOST, vous devrez veri er que le courrier qui leur est destine est bien route comme vous l'avez prevu. Les messages adresses avec la syntaxe UUCP vers un h^te avec lequel vous ^tes directement o e connecte par UUCP doivent lui ^tre envoyes directement (sauf si vous l'emp^chez e e explicitement par une entree dans domaintable). Considerons que swim est un de vos voisins UUCP directs. Passer a sendmail un message adresse a swim!fred devrait produire le resultat suivant :
# /usr/lib/sendmail -bt -Cgueuze.cf ADDRESS TEST MODE Enter <ruleset> <address> Note: No initial ruleset 3 call] > 3,0 swim!fred rewrite: ruleset 3 input: swim ! fred ...lignes supprimees...] rewrite: ruleset 0 returns: $# UUCP $@ swim $: < > , fred >
Si vous avez des entrees uucpxtable destinees a forcer l'envoi UUCP vers certains voisins qui postent leur courrier avec le style Internet et des en-t^tes domainises, il e faudra aussi veri er ceci :
256
257
Ces problemes font souvent du tort a l'administrateur local, car les utilisateurs se moquent generalement que vous n'administriez pas personnellement tous les systemes du monde (ou ne puissiez pas joindre leurs responsables pour qu'ils corrigent leurs erreurs). Tout ce qu'ils voient, c'est que leurs messages n'aboutissent pas a leurs destinataires et que vous ^tes la personne ideale sur laquelle passer leur colere. e La con guration d'un site distant n'est pas votre probleme. Dans tous les cas, ne tentez pas de deregler votre systeme pour arriver a communiquer avec une machine mal con guree. Si vous ne pouvez pas joindre son responsable a n qu'il corrige ce qu'il faut en temps voulu, vous avez deux options : { Il est generalement possible de forcer le systeme distant a accepter du courrier, mais puisqu'il n'est pas correctement con gure, les reponses ne reviendront sans doute pas mais la, c'est le probleme de son administrateur. Vous pouvez corriger les mauvais en-t^tes de l'enveloppe de vos messages sore tants, uniquement en utilisant une entree domaintable pour leur h^te ou doo maine, qui fera que les informations non valides seront corrigees pour tout le courrier provenant de votre site :
malade.correct.domaine.com malade.incorrect.domaine.com
{ Souvent, les sites mal con gures rejettent le courrier en le renvoyant vers la machine expeditrice en disant sans honte (( ce courrier ne nous est pas destine )), simplement parce qu'ils n'ont pas leur PSEUDONYMNS ou equivalent con gure proprement. Il est alors possible de supprimer tout nom d'h^te et de domaine o de l'enveloppe des messages partant de votre site vers le leur. Le point d'exclamation ! dans le chier mailertable ci-dessous delivre les messages a leur site en les faisant appara^tre a leur sendmail comme s'ils arrivaient de leur systeme local. Notez que cela ne change que l'adresse d'enveloppe, l'adresse de retour correcte sera toujours presente dans le message.
TCP!malade.correct.domaine.com malade.incorrect.domaine.com
Neanmoins, m^me si vous arrivez a leur poster du courrier, il n'y a aucune garantie e qu'ils puissent vous repondre (ce sont des nuls, ne l'oubliez pas) mais au moins, leurs utilisateurs casseront les pieds a leur administrateur, et vous serez tranquille de votre c^te. o
258
Pour forcer le courrier par sesame.com, vous mettrez ce qui suit dans votre uucpxtable :
# supprime le domaine de sesame.com pour forcer UUCP sesame sesame.com
Le resultat sera que sendmail determinera (via UUCPNODES dans le chier sendmail.m4) que vous ^tes directement connecte au systeme distant, et mettra le courrier e en attente dans la queue UUCP, pour qu'il soit delivre a la prochaine connexion de ce type avec ce site.
Cela remplacera toute occurrence du nom UUCP par le nom pleinement quali e, et par consequent evitera qu'il soit trouve par la ligne UUCPNODES du chier sendmail.m4. Le resultat sera generalement que le courrier partira via le RELAY MAILER et RELAY HOST (ou DEFAULT MAILER).
259
{ La meilleure methode est probablement de mettre en route le deboguage par syslogd(8). Vous aurez des traces detaillees de qui fait quoi, en quelle quantite, pour ou, par ou, etc. Cela signi e que le demon /etc/syslogd est en service sur la machine (ce qui est sans doute, et heureusement, le cas sur un systeme bien administre) et que vous aurez ajoute dans sa con guration /etc/syslog.conf(5) une ligne comme celle-ci :
mail.debug /var/log/syslog.mail
Si vous utilisez mail.debug avec un tra c de courrier assez important, la trace peut devenir assez grande. Les chiers de trace de syslogd necessitent generalement une maintenance routiniere destinee a les classer ou les purger, par le truchement de crond(8). Vous trouverez bon nombre d'utilitaires qui e ectuent des statistiques a partir des chiers generes par syslogd. L'un des plus connus s'appelle syslog-stat.pl, il s'agit d'un programme en perl qui est fourni avec les sources de Sendmail+IDA.
260
quelques problemes que nous avons rencontre dans le passe avec certaines distributions binaires et sources de Linux parmi les plus courantes. { Certaines versions de la distribution NET-2 de TCP/IP ont un programme nomme umail de ni comme service, au lieu de sendmail. { Divers portages de elm et mailx recherchent, pour delivrer le courrier, l'agent /usr/bin/smail plut^t que sendmail. o { Sendmail+IDA conna^t en interne deliver, mais il pense le trouver dans /bin plut^t que dans /usr/bin, ou il est le plus souvent place sous Linux. o Plut^t que de perdre du temps a recompiler tous les programmes a partir des sources, o nous contournons en general le probleme par un lien symbolique approprie.
4 Ce document est disponible en version francaise sur les sites di usant Linux en France.
:
261
Chapitre 16
262
nir des transferts e caces sur des reseaux performants comme TCP/IP ou DECnet demandait une nouvelle orientation du projet. Aussi, en 1986, fut introduit NNTP, le Network News Transfer Protocol (protocole de transfert de News par reseau). Il est base sur des connexions reseau et speci e un certain nombre de commandes interactives permettant le transfert et la lecture des articles. Il existe beaucoup d'applications basees sur NNTP sur l'Internet. Le paquetage nntpd de Brian Barber et Phil Lapsley, que vous pouvez employer pour o rir un service de lecture des News a des h^tes d'un reseau local, est l'un des plus connus. Il est prevu o pour completer les ensembles de gestion de News comme Bnews ou C News, en leur apportant le support du protocole NNTP. INN, ou Internet News, en est un autre. Ce n'est pas qu'un simple frontal, mais un systeme a part entiere. Il comprend un demon tres sophistique qui peut supporter de multiples liaisons NNTP concurrentes, et est devenu le serveur de News ideal employe sur un nombre de plus en plus grand de sites Internet.
263
Les articles sont postes dans un ou plusieurs newsgroups. On peut considerer un newsgroup comme un forum destine a recevoir des articles concernant un sujet particulier. On utilise indi eremment les termes newsgroups, groupes, forums, voire conferences pour les designer a l'etranger seuls les deux premiers termes sont employes dans le cadre de Usenet. Tous les groupes sont organises en hierarchies, leur nom indiquant leur emplacement dans cette arborescence ce qui permet souvent de savoir facilement quel est le sujet traite, au vu du nom. Par exemple, tout le monde comprendra que le groupe appele comp.os.linux.announce sert aux annonces concernant un systeme d'exploitation (os) d'ordinateurs (computers) nomme Linux. Ces articles sont alors echanges entre tous les sites Usenet qui ont l'intention de transporter les messages de ce groupe. Lorsque deux sites se mettent d'accord pour echanger des News, ils sont libres de transporter les groupes qu'ils desirent, et peuvent m^me e creer de nouvelles hierarchies locales a leurs systemes. Par exemple, groucho.edu peut avoir un lien avec barnyard.edu, qui est un site Usenet important, et plusieurs liaisons avec des sites plus petits auxquels il fournit certains groupes (vous verrez souvent designer la fourniture de News par le terme anglais feed). Maintenant, barnyard.edu peut recevoir toute les hierarchies Usenet, alors que GMU n'en desire que quelques-unes comme sci, comp, rec, etc. Certains petits sites, disons par exemple une machine UUCP appelee brewhq, ne voudront prendre que quelques forums, pour des raisons de lenteur de liaison et de ressources limitees. De plus, brewhq peut vouloir recuperer une hierarchie locale fj, que GMU ne possede pas. Il sera par consequent oblige d'etablir une autre liaison avec gargleblaster.com, qui transporte ces groupes, et qui les fournira a brewhq. Le ux de News correspondant a cette situation est illustre dans la gure 16.1. Les reperes inscrits a c^te des eches en provenance de brewhq necessitent toutefois o une explication. Par defaut, ce site veut que tous les articles generes localement soient envoyes a groucho.edu. Mais comme groucho.edu ne transporte pas les groupes fj, il n'y a aucun inter^t a les leur envoyer, ils seront rejetes. Par consequent, le ux e allant de brewhq a GMU est repere all,!fj, signi ant que tous (all) les groupes sauf ceux de la hierarchie fj sont transmis.
264
Usenet
barnyard.edu
gargleblaster.com
fj
fj
groucho.edu
all,!fj
brewhq
comp.os, comp.periphs
265
but, il s'agissait de UUCP mais de nos jours le plus gros du tra c se fait par des sites Internet. L'algorithme de routage utilise est base sur la redondance : chaque site maintient un certain nombre de liens (les fameux feeds de News) avec d'autres. Tout article genere ou recu par le systeme local leur est expedie, sauf s'il est deja passe par eux. Il est possible de savoir par ou est passe un article gr^ce au champ Path de a l'en-t^te, qui contient la liste de tous les systemes qu'il a traverses, separes par un e point d'exclamation (bang-path). Pour distinguer les articles et reconna^tre les doublons, chacun d'eux doit comporter dans son en-t^te un identi cateur unique, appele le Message-ID, qui est realise a partir e du nom du site associe a un numero de serie unique sur cette machine, presente sous la forme numero@site . Le systeme de News enregistre chaque article traite par ce numero dans un chier appele history, qui est teste a chaque fois qu'un nouveau message se presente. Le ux entre deux sites quelconques peut ^tre limite selon deux criteres. D'une part, il e existe un champ indiquant l'etendue de sa distribution (Distribution dans l'en-t^te), e permettant eventuellement de ne le transmettre qu'a un nombre limite de sites acceptant cette distribution particuliere. D'autre part, le nombre de groupes echanges peut ^tre limite par l'un ou l'autre des systemes. L'ensemble des groupes et distributions e autorises a ^tre transmis est generalement con gure dans le chier sys. e La grande quantite d'articles a traiter necessite generalement quelques ameliorations de la methode precedente. Sur les reseaux UUCP, il est naturel de collecter les messages sur une certaine periode puis de les combiner ensemble en un seul gros chier, qui est compresse puis envoye sur le site distant. C'est la di usion par lots. Une autre technique fait appel au protocole ihave/sendme qui evite aux articles dupliques d'^tre transferes avant d'^tre nalement rejetes. Au lieu de mettre tous les e e articles dans des lots et de les expedier tels quels, ce ne sont que les message-ID qui sont utilises pour constituer un enorme message nomme (( ihave )) (je possede) expedie au site distant. Celui-ci en prend connaissance, le compare a son chier d'historique, et retourne la liste des articles pour lesquels il desire un message appele (( sendme )) (envoie-moi). Seuls ces articles seront alors transferes. Bien s^r, ce protocole ihave/sendme n'a d'inter^t que s'il met en jeu deux gros sites u e qui recoivent les News depuis plusieurs ux independants les uns des autres, et qui sont connectes su samment souvent pour obtenir des echanges e caces. Les sites connectes a l'Internet utilisent generalement des programmes bases sur TCP/IP faisant appel au protocole NNTP 4 . Il permet de transferer les articles et d'o rir des acces individuels a Usenet a tout utilisateur se trouvant sur une machine distante et possedant un programme de lecture adequat. NNTP permet le transfert de trois facons di erentes. La premiere est une version temps reel de ihave/sendme, aussi connue sous le nom de methode du pushing (on ( pousse ) les articles). Dans la deuxieme, le client demande une liste d'articles dans ( )
< >
266
une hierarchie ou un groupe donne, qui sont arrives sur le serveur apres une certaine date, et choisit ceux qu'il ne peut pas trouver dans son chier d'historique. C'est le pulling (on (( tire )) les articles). La troisieme methode est destinee a la lecture interactive et permet de recuperer des articles depuis les groupes speci es, aussi bien que d'en poster, le plus souvent a l'aide de programmes conviviaux appeles (( lecteurs )). Sur chaque site, les News sont stockees dans une arborescence de repertoires situee sous /var/spool/news, chaque article faisant l'objet d'un chier separe. Le nom du repertoire est constitue du nom du groupe, ses composants etant ceux du chemin d'acces. C'est-a-dire que, par exemple, les messages de comp.os.linux.misc se trouveront dans le repertoire /var/spool/news/comp/os/linux/misc. Ils se voient assigner un numero, dans l'ordre ou ils arrivent, qui sert de nom de chier. L'etendue de ces numeros est conservee dans un chier nomme active, qui sert en m^me temps de liste e des groupes connus sur le site en question. Puisque l'espace de stockage o ert par les disques durs est encore de nos jours une ressource nie 5 , il faut penser a eliminer regulierement les articles devenus trop vieux : c'est le processus d'expiration. En principe, il est possible de con gurer cela de maniere souple, les articles de certains groupes ou certaines hierarchies etant elimines un certain nombre de jours apres leur arrivee sur le systeme. L'expediteur peut lui-m^me e decider de la date a partir de laquelle son message pourra ^tre supprime, en speci ant e une date d'expiration dans le champ Expires de l'en-t^te. e
5 Certains a rment que Usenet est le fruit d'un complot ourdi par les constructeurs de modems et les fabricants de disques durs.
:
267
Chapitre 17
C News
C News est l'un des ensembles de logiciels de News les plus connus. Il est destine aux sites transportant les articles par UUCP. Ce chapitre traitera de son fonctionnement, decrira son installation et les t^ches de maintenance necessaires a son fonctionnement a correct. Les chiers de con guration de C News se trouvent dans /usr/lib/news, et l'essentiel de ses programmes executables se situent dans le repertoire /usr/lib/news/bin. Les articles sont stockes dans /var/spool/news. Vous devez veri er, car c'est tres important, que tous les chiers contenus dans ces repertoires appartiennent a l'utilisateur news et au groupe news. La plupart des problemes rencontres sont dus a des chiers inaccessibles a l'application. Vous devez prendre l'habitude de passer sous le compte utilisateur news (par la commande su) avant de toucher a quoi que ce soit dans la gestion des News. La seule exception a cette regle concerne le programme setnewsids, qui est utilise pour positionner le numero d'identi cation utilisateur de certains utilitaires : il doit appartenir a root et avoir le bit setuid positionne.
268
rejetes. Puis il regarde la ligne d'en-t^te Newsgroups pour veri er si le site demande e bien le ou les groupes indiques. Si c'est le cas, et que le chier active contient bien ce nom, relaynews essaie de placer le message dans le repertoire correspondant du spoule, qui sera cree s'il n'existait pas encore. En n, le Message-ID est enregistre dans le chier history. Sinon, l'article sera rejete. Si relaynews ne peut pas mettre en place un article parce qu'il a ete poste dans un groupe qui n'est pas dans le chier active, cet article sera rejete et deplace dans le groupe junk 1 . Le programme relaynews veri era aussi l'integrite de l'article, sa date, et rejettera ceux qu'il trouvera non conformes. Les lots qui sont declares defectueux pour une raison quelconque sont deplaces dans /var/spool/news/in.coming/bad, et un message d'erreur est enregistre dans les chiers de trace. Ensuite, l'article sera relaye vers tous les autres sites qui demandent des News de ce groupe, par le transport speci e pour chacun d'eux. Pour ^tre s^r qu'il n'est pas e u envoye vers un site qui l'aurait deja vu passer, le nom de chacun de ces sites est recherche dans la ligne Path de l'en-t^te : seuls ceux dont le nom n'appara^t pas dans e cette ligne recevront le message. C News est utilise couramment pour relayer Usenet entre des sites UUCP, bien qu'il soit possible de l'utiliser aussi dans un environnement NNTP. Pour fournir une machine distante par UUCP (soit par des articles isoles, soit par des lots de messages), il est fait appel a la commande uux, a n qu'elle execute rnews sur le site distant, le message lui etant passe sur son entree standard. Lorsque la creation de lots est validee pour un site, C News n'envoie aucun article immediatement, mais rajoute le nom du chier correspondant dans un chier generalement appele out.going/site/togo. Periodiquement, un programme de generation de lots est execute par une entree crontab 2 , ce qui rassemble tous les articles dans un ou plusieurs gros chiers compresses en option, et les envoie a la commande rnews du site distant. La gure 17.1 illustre le ux des News via relaynews : les articles peuvent ^tre relayes e depuis le site local (denote par convention par le mot cle ME), par courrier vers un site nomme ponderosa, et sous forme de lots vers la machine moria.
17.2 Installation
Pour installer C News, mettez en place les chiers contenus dans l'archive si ce n'est pas encore fait, et editez les chiers de con guration indiques ci-dessous. Ils se trouvent
1 Il peut y avoir une di erence entre les groupes qui existent sur votre site, et ceux qu'il desire recevoir. Par exemple, la liste de souscription peut speci er comp.all, ce qui signi e tous les groupes de la hierarchie comp, mais seule une partie de ces groupes peut ^tre indiquee dans votre chier e active. Les articles pour les groupes absents de ce chier seront places dans junk. 2 Il est tres important que ce soit le crontab de l'utilisateur news, a n de ne pas modi er les permissions des di erents chiers.
: :
17.2. Installation
article
269
relaynews history
ME
ponderosa
moria
tous dans /usr/lib/news, et leurs di erents formats vont ^tre decrits dans les sections e suivantes :
sys
Vous devrez sans doute modi er la ligne ME qui decrit votre systeme, bien que l'emploi de all/all soit une solution qui fonctionne toujours. Il faudra aussi ajouter une ligne pour chaque site a qui vous enverrez des articles. Si vous ^tes un site UUCP isole en bout de cha^ne, il vous su ra d'une e ligne qui renvoie tous les articles generes localement a votre fournisseur. En supposant que ce soit moria, votre chier sys ressemblera simplement a ceci :
ME:all/all:: moria/moria.orcnet.org:all/all,!local:f:
organization
newsgroups
Le nom de l'organisme auquel la machine appartient. Par exemple, SARL La biere virtuelle )). S'il s'agit de votre ordinateur domestique, mettez ce que vous voulez, sinon la plupart des gens ne considereront pas votre site comme correctement con gure. Une liste de groupes, un par ligne, suivi de leur description sommaire. Ces descriptions sont utilisees par les programmes lecteurs lorsqu'ils a chent la liste des forums accessibles.
( (
270
mailname whoami explist
Pour creer une hierarchie initiale, recuperez les chiers active et newsgroups d'un site qui vous fournit, et installez-les dans /usr/lib/news, en veri ant bien qu'ils appartiennent a news et ont le mode 644. Supprimez tous les groupes to.* du chier active, puis rajoutez to.mon-site et to.fournisseur, ainsi que junk et control. Les groupes to.* sont utilises pour l'echange de messages ihave/sendme, mais vous devez les creer m^me si vous ne comptez pas employer ce protocole. Ensuite, remplacez tous e les numeros d'articles contenus dans la deuxieme et la troisieme colonne du chier active en executant la commande suivante :
# cp active active.old # sed 's/ 0-9]* 0-9]* / 0000000000 00001 /' active.old > active # rm active.old
La deuxieme ligne appelle la commande sed(1), l'utilitaire favori des administrateurs. Ici, il s'agit de remplacer deux cha^nes de chi res par une cha^ne de zeros et la valeur 000001, respectivement. En n, creez le repertoire de spoule et les sous-repertoires utilises pour l'arrivee et le depart des articles :
# # # # cd /var/spool mkdir news news/in.coming news/out.going chown -R news.news news chmod -R 755 news
Si vous possedez une version recente de C News, il vous faudra aussi creer le repertoire news/out.master. Si vous utilisez des programmes lecteurs de provenances diverses, vous vous rendrez compte que certains recherchent le spoule dans /usr/spool/news au lieu de /var/spool/news, et dans ce cas, ils seront incapables de trouver les articles. Si c'est le cas, il vous su ra de creer un lien symbolique de /usr/spool/news vers /var/spool/news. Vous ^tes maintenant equipe pour recevoir des News. Notez que vous n'aurez pas e besoin de creer d'autres repertoires que ceux mentionnes ci-dessus, C News s'occupera de le faire automatiquement lorsque des articles arriveront. En particulier, cela se produit pour tous les groupes dans lesquels un article a ete crossposte. Aussi, au bout d'un moment, vous trouverez le spoule rempli de repertoires
271
correspondant a des groupes que vous n'avez jamais demande, comme alt.lang.teco. Il est possible d'eviter cela en supprimant chacun de ces groupes du chier active, ou en lancant periodiquement un shell-script qui supprime les repertoires vides a partir de /var/spool/news (sauf bien entendu out.going et in.coming). C News envoie les messages d'erreur et de service a un utilisateur particulier. Par defaut, il s'appelle usenet. Si vous utilisez ce nom (ce qui est conseille), vous devrez declarer un alias qui enverra tout le courrier a ce nom vers les bo^tes aux lettres des personnes responsables. (Les chapitres 14 et 15 vous expliqueront comment faire.) Vous pouvez aussi changer cette valeur par defaut en donnant a la variable d'environnement NEWSMASTER le nom approprie. Vous devrez le faire dans le chier crontab de l'utilisateur news, ainsi qu'a chaque fois que vous aurez a lancer un outil d'administration a la main. Il est donc preferable d'installer un alias pour ne pas se compliquer la vie. Il faudra aussi veri er que dans le chier /etc/passwd, le vrai nom de chaque utilisateur gure bien dans le champ pw gecos (c'est le quatrieme champ). Ce nom appara^tra dans la ligne From de l'article, et il ne faut pas qu'il y apparaisse n'importe quoi c'est une question de netiquette 3. Si vous utilisez deja le courrier electronique, tout cela est probablement deja proprement con gure.
Une entree peut s'etendre sur plusieurs lignes, en rajoutant un anti-slash au bout (\). Le signe diese (#) denote un commentaire.
site
Il s'agit du nom du site auquel cette entree s'applique, c'est generalement le nom UUCP qui est choisi. Il doit y avoir une entree pour votre propre site dans ce chier sys, sinon vous ne recevrez jamais aucun article.
3 La nettiquette est en quelque sorte le manuel de savoir-vivre sur Usenet. Un document humoristique poste tous les mois en rappelle les principaux traits, vous pouvez en consulter la version francaise dans la hierarchie francophone fr.*, ou la telecharger sur le serveur ftp.fdn.org.
:
272
liste-groupes
Il s'agit d'une liste de souscription de groupes et hierarchies (dont le caractere separateur est la virgule) pour le site en question. Une hierarchie peut ^tre speci ee en donnant son pre xe (comme comp.os e pour tous les groupes dont le nom commence par ces lettres), suivie facultativement par le mot cle all (par exemple, comp.os.all). Une hierarchie ou un groupe est exclus en le faisant preceder par un point d'exclamation, marquant la negation. Si un groupe est recherche dans cette liste, c'est le plus long qui gagne. Par exemple, si liste-groupes contient :
!comp,comp.os.linux,comp.folklore.computers
Cela signi era qu'aucun groupe appartenant a la hierarchie comp ne sera envoye a ce site, sauf comp.folklore.computers et tous ceux en dessous de comp.os.linux. Pour lui envoyer toutes les News que vous recevez vous-m^me, mettez e simplement all dans liste-groupes.
distributions
Ce champ, separe du precedent par un slash (/) contient une liste des distributions qui seront envoyees au site concerne. La encore, vous pouvez en exclure certaines en les faisant preceder d'un point d'exclamation, ou les designer toutes par le mot all. Si vous omettez ce champ distributions, cela denote implicitement all. Par exemple, vous pouvez mettre comme liste de distributions quelque chose comme all,!local, pour eviter d'envoyer les groupes a usage local aux sites distants. Il y a en principe au moins deux distributions : world, qui est souvent celle par defaut lorsque aucune n'est precisee, et local. Il peut y en avoir d'autres s'appliquant a certaines regions, etats, pays, departe-
273
ments, etc. En n, il en existe deux speci ques a C News : ce sont sendme et ihave, qu'il utilise pour le protocole sendme/ihave. L'utilisation des distributions fait l'objet de nombreuses polemiques 4. Pour certains, quelques lecteurs de News creent de (( fausses )) distributions en utilisant simplement le nom de la hierarchie (comp par exemple) en postant dans des groupes tel comp.os.linux.advocacy. Les distributions s'appliquant aux regions sont douteuses, car les articles peuvent prendre un chemin detourne et devoir sortir hors de cette region pour y revenir 5. Les distributions s'appliquant a une organisation particuliere ont, par contre, un certain sens : par exemple, pour eviter que des informations con dentielles sur votre entreprise s'echappent d'un groupe local. Mais pour ce genre de cas, mieux vaut creer une hierarchie separee.
drapeaux
Cette option decrit certains parametres du ux. Elle peut ^tre abe sente, ou bien comporter une combinaison des valeurs suivantes :
F f I
Ce drapeau valide la creation de lots 6 . Pratiquement identique a F, mais permet a C News de calculer la taille des lots a partir, de maniere plus precise. Ce drapeau indique a C News de produire une liste d'articles pour l'utilisation du protocole d'echange ihave/sendme. Il faut egalement e ectuer quelques modi cations aux chiers sys et batchparms dans ce cas. Cree des chiers de lots pour les transferts NNTP avec des clients comme nntpxmit (voir le chapitre 18). Ces lots contiennent les noms des chiers contenant les articles ainsi que leurs Message-ID. Indique a C News de ne transmettre que les articles postes sur votre site. Ce drapeau peut ^tre suivi par e un nombre decimal n, qui permettra alors de ne poster que les messages en provenance d'au plus n hops de votre site. Le nombre de hops est determine par
4 En fait, de nos jours la plupart des administrateurs de sites Usenet s'accordent a dire que si l'idee n'etait pas mauvaise au depart, son application s'est plut^t tres mal passee et qu'il faut eviter o a tout prix d'utiliser un champ (( distribution )), aucun site ne le gerant de la m^me maniere c'est le e meilleur moyen de perdre des articles. 5 Il est tres courant de voir des articles postes par exemple a Hambourg, se retrouver a Francfort via reston.ans.net aux Pays-Bas, voire en passant par un site des USA. 6 Ce sont les (( batches de News )) chers aux administrateurs dont la langue natale est le (( franglais )).
: : :
274
u m
commandes
Vous ne pouvez employer au plus qu'un F, f, I, ou n. Ce champ contient la commande a executer pour chaque article lorsque le traitement par lots est en service. Le message sera passe a cette commande via son entree standard a n'utiliser que sur les petits ux, sinon la charge sur chacun des deux systemes deviendra prohibitive. La commande par defaut est :
uux - -r -z systeme !rnews
Elle execute rnews sur le systeme distant, en lui passant l'article sur son entree standard. Le chemin de recherche des commandes indiquees dans ce champ est par defaut /bin:/usr/bin:/usr/lib/news/bin/batch. Le dernier repertoire contient un certain nombre de shell-scripts dont les noms commencent par via nous les decrirons brievement un peu plus loin dans ce chapitre. Si le traitement par lots a ete valide par l'un des drapeaux F, f, I ou n, C News s'attendra a trouver un nom de chier dans ce champ, et non pas une commande. Si ce nom ne commence pas par un slash (/), il sera considere comme etant relatif au repertoire /var/spool/news/out.going. Si le champ est vide, la valeur par defaut sera systeme /togo. Lors de la con guration de C News, vous devrez probablement rediger votre propre chier sys. Pour vous aider dans cette t^che, nous allons vous donner un exemple a concernant bibine.com, a partir duquel vous pourrez recopier tout ce dont vous avez besoin et l'adapter a votre site.
# Nous prenons tout ce qu'ils nous envoient. ME:all/all:: # Nous envoyons tout ce que nous recevons a moria, sauf les # articles locaux et ceux relatifs aux brasseurs. Nous utilisons # des lots (batching). moria/moria.orcnet.org:all,!to,to.moria/all,!local,!brasseurs:f: # Nous expedions comp.risks par courrier electronique a # l'utilisateur jack@ponderosa.uucp
275
Le champ groupe contient le nom du groupe bas et haut sont les numeros du premier et du dernier article actuellement disponibles dans ce groupe. S'il est vide, bas vaut alors haut+1. En n disons que c'est ce que bas est cense faire, parce que, pour des raisons d'e cacite, C News ne met jamais cette valeur a jour. Ce ne serait pas un probleme s'il n'y avait pas certains lecteurs de News comptant sur ce champ pour veri er s'ils peuvent purger des articles de leur base de donnees des ls de discussions. Pour mettre a jour ce champ bas, vous devrez par consequent executer periodiquement la commande updatemin (ou, dans de plus anciennes versions de C News, le script upact). Le champ permission est un parametre indiquant quel type d'acces auront les utilisateurs, il peut prendre l'une des valeurs suivantes :
y n x
Les utilisateurs ont le droit de poster dans ce groupe. Les utilisateurs n'ont pas le droit de poster dans ce groupe, mais ils peuvent le lire. Ce groupe a ete invalide sur le systeme local. Cela arrive quelquefois lorsque des administrateurs (ou leurs superieurs) se plaignent du contenu des messages y etant postes. Les articles recus pour ce groupe ne sont pas stockes localement, mais ils seront toujours emis vers les sites qui les demandent. Indique un groupe modere. Lorsqu'un utilisateur tente de poster dedans, si son lecteur de News est bien concu, il lui noti era ce fait et
276
=vrai-groupe
Marque groupe comme etant un alias local pour un autre groupe, nomme en realite vrai-groupe. Tous les articles postes dans groupe y seront rediriges.
Dans C News, vous n'aurez en general pas besoin d'acceder directement a ce chier. Les groupes peuvent ^tre ajoutes ou supprimes localement par les commandes adde group et delgroup (consultez la section (( Outils et travaux de maintenance )) page 287). Les messages de contr^le newgroup et rmgroup creent ou suppriment un groupe dans o la totalite de Usenet. N'envoyez jamais un tel message vous-m^me ! Vous vous feriez e ha r du monde entier. Toutes les instructions de creation de groupe a un tel niveau sont postees tous les mois dans news.announce.newusers. Le chier active.times est tres lie a active : chaque fois qu'un nouveau groupe est cree, C News enregistre un message dans ce chier. Il contient le nom du groupe cree, la date de creation, si celle-ci a ete faite sur un message de contr^le newgroup ou localeo ment, et le nom de la personne ayant cree ce groupe. Il sert aux programmes lecteurs qui peuvent eventuellement noti er aux utilisateurs les nouveaux groupes recemment crees. Il est egalement utilise par la commande NEWGROUPS du protocole NNTP.
La valeur taille est le nombre d'octets contenus dans l'article. Lorsque l'on utilise la compression, c'est le chier resultant qui est compresse il est alors precede d'une autre ligne, indiquant que les donnees qui suivent devront ^tre decompactees. L'outil e standard permettant la compression est compress, qui est repere par :
#! cunbatch
Il arrive que l'on doive faire passer des lots par courrier, ou certaines liaisons suppriment le huitieme bit des donnees. Dans ce cas, on peut proteger un lot compresse en utilisant l'encodage appele c7 ils seront alors reperes par c7unbatch.
7 Ce format est de ni dans le document RFC 1036.
:
277
Lorque le programme rnews du site distant recoit un lot de News, il teste ces reperes a n de traiter les donnees de maniere appropriee. Certains sites utilisent le compacteur gzip, et indiquent alors zunbatch : C News ne reconna^t pas ces en-t^tes non standard, e vous devrez modi er le code source pour pouvoir les traiter. Le programme /usr/lib/news/bin/batch/sendbatches est charge de la realisation des lots. Il prend une liste d'articles dans le chier site/togo, et constitue les archives en les repartissant dans un ou plusieurs lots. Il doit ^tre execute periodiquement, au moins e une fois par heure, voire plus, en fonction du volume du tra c. Son fonctionnement est contr^le par le chier batchparms situe dans /usr/lib/news, qui decrit la taille o maximale autorisee pour chaque lot, et le transport a utiliser pour les delivrer ceci pour chaque site. Vous pouvez speci er ces parametres soit par site, soit par des valeurs par defaut qui seront prises en compte pour tous les systemes non mentionnes explicitement. Pour preparer les lots destines a un site speci que, utilisez la commande suivante :
# su news -c "/usr/lib/news/bin/batch/sendbatches site "
Appelee sans argument, la commande sendbatches traite toutes les les d'attente. Si une entree par defaut existe dans le chier batchparms, tous les repertoires contenus dans /var/spool/news/out.going seront traites sinon ne seront pris en compte que les entrees indiquees, dans l'ordre ou elles se trouvent dans batchparms. Notez que lors de la recherche dans out.going, sendbatches ne considere comme nom de site que les repertoires ne contenant aucun point ou signes @ dans leur nom. Vous trouverez probablement dans votre distribution un chier batchparms tout pr^t e contenant une entree par defaut raisonnable, aussi il y a des chances que vous n'ayez rien a modi er. Malgre tout, nous allons decrire ce format, qu'il est bon de conna^tre. Chaque ligne contient six champs, separes par des espaces ou tabulations :
site taille max outil compacteur transport
Le champ site contient le nom du site auquel s'applique cette entree. Le chier togo correspondant devra se trouver dans le repertoire out.going/togo, dans le spoule. Le mot cle /default/ indique l'entree par defaut. Le champ taille indique la taille maximale autorisee pour chaque lot, avant compression. Si un article depasse a lui seul cette taille, C News fera une exception et creera un lot ne contenant que cet article. La valeur max correspond au nombre maximum de batches a preparer pour le transfert vers ce site. C'est tres utile lorsqu'un systeme doit ^tre indisponible pour une longue e periode, car il evite de voir le spoule UUCP rempli par des milliers de lots en attente d'^tre transferes. e C News determine le nombre de lots en attente gr^ce au script queulen, situe dans a le repertoire /usr/lib/news/bin. Le paquetage newspak de Vince Skahan en contient
278
une version adaptee aux implementations d'UUCP compatibles BNU. Si vous utilisez un autre style de repertoires de spoule, comme Taylor UUCP, vous devrez ecrire un script adapte 8. Le champ outil designe la commande utilisee pour produire un lot a partir de la liste d'articles contenue dans le chier togo. Pour les ux standard, il s'agit normalement de batcher. Pour d'autres besoins, vous pouvez indiquer di erents autres programmes par exemple, le protocole ihave/sendme necessite que cette liste soit transformee en un message de contr^le poste dans le groupe to.site. Cette operation est realisee par o batchih et batchsm. Le champ compacteur speci e la commande utilisee pour la compression. Generalement, il s'agit du shell-script compcun 9 . Mais vous pouvez aussi indiquer un script appelant gzip (que vous redigerez vous-m^me) vous devrez cependant vous mettre e d'accord avec le site distant pour que sa commande uncompress sache traiter les chiers compactes par gzip. Si le systeme distant ne possede pas du tout de commande uncompress, vous pouvez speci er nocomp dans ce cas, les lots resteront non compactes. Le dernier champ, transport, decrit la methode de transport qu'il faudra utiliser. Il y a un certain nombre de commandes standard pour cela, dont le nom commence par via. Le programme sendbatches leur passe le nom du site destinataire sur la ligne de commandes. Si l'entree dans batchparms n'est pas /default/, il derive ce nom du champ site en prenant toute la partie precedant un eventuel point ou slash. S'il s'agit de l'entree /default/, ce seront les noms des repertoires presents dans out.going qui seront utilises. Il y a deux commandes utilisant uux pour faire executer rnews sur le systeme distant : viauux et viauuxz. La derniere positionne l'option -z necessaire aux anciennes versions de uux pour eviter qu'il retourne un message pour chaque article indiquant que le transfert s'est bien passe. Vous trouverez une liste complete de ces transports dans la page de manuel newsbatch(8). Toutes les commandes des trois derniers champs doivent se trouver soit dans le repertoire out.going/site, soit dans /usr/lib/news/bin/batch. La plupart d'entre elles sont des shell-scripts, vous pourrez donc facilement vous ecrire des outils sur mesure le cas echeant. Elles sont invoquees par un tube la liste des articles est envoyee sur l'entree standard, et le lot realise arrive sur la sortie standard, qui elle-m^me est redirigee vers e le compacteur, etc. Voici un exemple de ce chier :
8 Si le nombre de lots spoules ne vous preoccupe pas (parce que vous ^tes le seul a utiliser votre e machine et ne redigez pas des megaoctets d'articles), vous pouvez remplacer le contenu de ce script par la simple instruction exit 0. 9 Tel que livre avec C News, compcun utilise compress avec l'option 12 bits, car c'est le plus petit denominateur commun pour la plupart des sites. Vous pouvez en faire une copie, que vous appellerez par exemple compcun16, ou vous utiliserez la compression 16 bits.
: :
279
Le champ liste-groupes est une liste de forums, separes par des virgules, auxquels cette entree s'appliquera. Les hierarchies peuvent ^tre speci ees en indiquant le pree xe des groupes, suivi le cas echeant du mot cle all. Par exemple, pour designer tous les groupes en dessous de comp.os, vous pouvez indiquer soit comp.os, soit comp.os.all. Lors de l'expiration d'un groupe, son nom est recherche dans les entrees du chier explist, dans l'ordre donne. La premiere entree qui correspond s'appliquera. Par exemple, pour supprimer la majorite de comp au bout de quatre jours, sauf les articles du groupe comp.os.linux.announce que vous voudriez conserver une semaine, il vous su t d'une entree pour ce dernier speci ant une periode d'expiration de sept jours, suivie par celle pour comp, qui indiquera quatre jours. Le champ permission precise si l'entree s'applique aux groupes moderes, non moderes, ou tous les groupes. Il peut prendre la valeur m (moderes), u (non moderes), ou x (tous). Le troisieme champ, jours, contient le nombre de jours au bout desquels les articles expireront s'ils ne se sont pas vu assigner une date d'expiration particuliere par le
280
champ Expires de l'en-t^te. Notez que ce nombre de jours est compte a partir de e l'arrivee sur votre site, et non pas de la date ou le message a ete emis. Ce champ jours peut toutefois ^tre plus complexe. Il peut contenir une combinaison e pouvant aller jusqu'a trois nombres separes les uns des autres par un tiret. Le premier denotera le nombre de jours devant s'ecouler avant que l'article ne soit considere comme candidat a l'expiration. Il est rare d'y mettre autre chose que zero. Le deuxieme champ contiendra le nombre de jours avant expiration, c'est le m^me que celui que e nous venons de decrire plus haut. Le troisieme contiendra le nombre de jours au bout desquels l'article sera supprime de force, quel que soit le contenu du champ Expires de son en-t^te. Si l'on n'indique seulement que le nombre du milieu, les deux e autres prennent des valeurs par defaut, qui peuvent ^tre speci ees par l'entree speciale e /bounds/, decrite un peu plus loin. Le quatrieme champ, archive, indique si le groupe doit ^tre archive, et a quel endroit. e Si l'archivage n'est pas demande, il su t d'y mettre un tiret. Sinon, vous pouvez utiliser un chemin d'acces complet a un repertoire (et non pas d'un chier), ou le signe @ qui symbolisera le repertoire d'archivage par defaut. Celui-ci sera alors indique a doexpire par l'option -a de sa ligne de commandes. Un repertoire destine a l'archivage doit appartenir a l'utilisateur news. Lorsque doexpire archive un article de, disons, comp.sources.unix, il le place dans le repertoire comp/sources/unix a partir du repertoire d'archivage, en creant l'arborescence si necessaire. Mais ce repertoire d'archivage devra exister, il n'est jamais cree automatiquement. Le programme doexpire tient comte de deux entrees de votre chier explist : au lieu d'une liste de groupes, elles contiennent les mots-cles /bounds/ et /expired/. L'entree /bounds/ contient les valeurs par defaut a assigner aux trois valeurs du champ jours decrit plus haut. Le champ /expired/ determine combien de temps C News devra tenir compte des lignes du chier history. Il est necessaire, car les lignes de ce chier ne seront pas supprimees immediatement lorsque les articles correspondants auront expire : cela permet de rejeter tout article deja expire qui viendrait a se representer, en provenance d'un ux tres lent ou pour toute autre raison. Si vous n'avez qu'un fournisseur, vous pouvez choisir une valeur assez faible. Pour les reseaux UUCP, quinze jours semble une valeur raisonnable a vous de voir en fonction des delais obtenus dans votre cas particulier. Voici ci-dessous un exemple de chier explist contenant des intervalles d'expiration assez courts :
# Conservation des lignes du fichier history pendant quinze jours. /expired/ x 14 # Personne ne conserve un article plus de trois mois. /bounds/ x 0-1-90 # groupes que nous voulons conserver plus longtemps que les autres comp.os.linux.announce m 10 comp.os.linux x 5 -
281
# Archivage des groupes *.sources comp.sources,alt.sources x # defauts pour les groupes tech comp,sci x # Suffisant pour un long week-end misc,talk x
# les messages de contr^le ne sont pas plus interessants o control x 1 # entree qui s'appliquera a tout le reste all x 2
Le processus d'expiration pose plusieurs problemes. Le premier se presente si votre lecteur de News tient compte du troisieme champ du chier active, qui contient le numero du premier article de chaque groupe. C News ne met jamais cette valeur a jour. Si ce champ doit vraiment representer la situation reelle, vous devrez executer un programme appele updatemiin apres chaque appel a doexpire. (Dans de precedentes versions, le nom du programme est upact.) C News ne scrute pas le repertoire du groupe, mais teste simplement dans le chier history si l'article doit expirer 10. Si ce chier est endommage ou ne represente plus exactement la situation pour une raison quelconque, certains articles resteront eternellement sur votre disque, car C News les aura litteralement oublies 11. Vous pouvez remedier a la situation gr^ce au script addmissing situe dans le repertoire a /usr/lib/news/bin/maint, qui rajoutera tous les articles absents du chier history, ou encore la commande mkhistory, qui reconstruira entierement un nouveau chier tout neuf. N'oubliez pas de passer sous l'utilisateur news auparavant, sinon le chier serait inaccessible a C News.
282
newsgroups
localgroups
mailpaths
distributions
Vous n'aurez pas besoin de modi er l'entree internet si vous utilisez smail ou sendmail, car ils comprennent l'adressage RFC 822. L'entree backbone est utilisee chaque fois qu'un utilisateur poste dans un groupe modere dont le moderateur n'est pas indique explicitement. Si le nom du groupe est alt.machin, et que l'entree backbone contient chemin!%s, C News enverra par courrier l'article a chemin!alt-machin, en esperant que cette machine sera capable de le traiter. Pour trouver quel chemin utiliser, demandez aux administrateurs du site qui vous fournit les News. En tout dernier ressort, vous pouvez mettre uunet.uu.net!%s. Il ne s'agit pas a proprement parler d'un chier de C News, il est utilise par certains programmes lecteurs et le demon nntpd. Il contient la liste des distributions reconnues par votre site, et une description des e ets induits (ou esperes...) Par exemple, celui de (( La biere virtuelle )) contient ceci :
world local nl mugnet fr de brasseurs partout dans le monde Local a ce site Hollande uniquement MUGNET uniquement, s'il vit encore France uniquement Allemagne uniquement Societe La biere virtuelle seulement
283
log errlog
batchlog watchtime
Me ez-vous de ces distributions, evitez-les. Lisez ou relisez ce qui est dit a leur propos, page 272. Ce chier contient toutes les traces des activites de C News. Il est purge regulierement par newsdaily les copies des anciennes traces sont conservees dans log.o, log.oo, etc. Il contient les enregistrements de tous les messages d'erreurs generes par C News. Cela ne comprend pas les articles deplaces dans junk. Il est automatiquement envoye par courrier au newsmaster (usenet par defaut) par newsdaily s'il n'est pas vide au moment ou cet utilitaire est mis en route. Ce chier est remis a zero par newsdaily, et sauvegarde dans errlog.o, errlog.oo, etc. Il contient la trace de tous les travaux de sendbatches il n'a que peu d'inter^t. Il est egalement traite par newsdaily. e Il s'agit d'un chier vide cree chaque fois que newswatch est execute.
284
Votre chier newsgroups sera mis a jour, les groupes indiques dans localgroups seront pris en compte. L'ancien chier sera sauve sous le nom de newsgroups.bac. Notez que poster un tel message localement fonctionnera rarement, car inews refuse des articles aussi longs. Si C News trouve des di erences entre la liste contenue dans le message checkgroups et le chier active, il generera une serie de commandes qui mettront tout votre systeme a jour et enverront un rapport par courrier a l'administrateur des News. La sortie ressemble typiquement a ceci :
From news Sun Jan 30 16:18:11 1994 Date: Sun, 30 Jan 94 16:18 MET From: news (News Subsystem) To: usenet Subject: Problems with your active file The following newsgroups are not valid and should be removed. alt.ascii-art bionet.molbio.gene-org comp.windows.x.intrisics
285
Le premier paragraphe indique les groupes non valides que vous devez supprimer le deuxieme vous donne les commandes necessaires pour le faire et le troisieme est une liste des groupes qui n'ont pas ete trouves sur votre site. Lorsque vous recevez un courrier comme celui-ci de la part de votre systeme de News, ne le croyez pas aveuglement. En fonction de qui a envoye le message checkgroups, il peut manquer quelques groupes voire des hierarchies entieres aussi vous devez faire attention a ne pas supprimer des choses qu'il aurait fallu conserver. Si vous notez dans les groupes manquants, certains que vous aimeriez supporter sur votre site, vous devrez les rajouter en utilisant le script addgroup. Sauvez la liste de ces groupes manquants dans un chier, et envoyez-le dans le petit shell-script suivant :
#!/bin/sh cd /usr/lib/news while read group do if grep -si "^$group :space:]].*moderated" newsgroup mod=m else mod=y fi /usr/lib/news/bin/maint/addgroup $group $mod done
then
286
renvoie la sortie de la commande uuname(1). C News est tres laconique lorsqu'on lui demande son numero de version il se contente de renvoyer un simple (( C )), sans oritures. La encore, vous ne devez jamais poster un tel message, sauf si vous ^tes parfaitement e certain qu'il ne sortira pas de votre reseau regional. Les reponses aux messages sendsys peuvent generer un tra c proprement gigantesque, et mettre beaucoup de sites UUCP en di culte. N'essayez jamais sur l'Internet.
287
newswatch
addgroup
Comme son nom l'indique 12 , vous devez lancer cette commande une fois par jour. C'est un script tres important qui permet de conserver des chiers de trace su samment courts, veri er toute anomalie comme de mauvais lots dans les repertoires de depart et d'arrivee, les tentatives d'envoi vers des groupes inconnus ou moderes, etc. Les messages d'erreur sont envoyes dans la bo^te aux lettres de l'administrateur newsmaster. Vous devrez lancer ce script regulierement pour veri er l'etat du systeme de News, toutes les heures par exemple. Il detecte les problemes qui peuvent avoir un e et immediat sur le fonctionnement du systeme, et envoie un rapport a newsmaster. Parmi les choses testees, citons les chiers de verrouillage oublies, l'arrivee de lots inattendus, et l'espace disque disponible. Rajoute un groupe a votre systeme, localement. La commande s'utilise ainsi :
addgroup groupe y|n|m|=vrai-groupe
delgroup
Le second argument a la m^me signi cation que le drapeau correse pondant dans le chier active, c'est-a-dire que tout le monde peut poster (y), personne ne peut poster (n), que c'est un groupe modere (m), ou qu'il s'agit d'un alias pour un autre groupe (=vrai-groupe). Vous utiliserez aussi cette commande lorsque le premier article d'un tout nouveau groupe arrive avant le message de contr^le destine a o creer le groupe en question. Permet de supprimer un groupe, localement. Sa syntaxe est simple :
delgroup groupe
288
addmissing newsboot
newsrunning
289
Chapitre 18
290
le (( pushing )) et le (( pulling )). Le pushing est pratiquement le m^me que le protoe cole ihave/sendme de C News : le client o re un article au serveur par la commande ( IHAVE ( Message-ID ) , et ce dernier retourne un code de reponse indiquant s'il ) possede deja cet article ou s'il desire qu'il lui soit envoye. Dans ce dernier cas, le client envoie l'article, termine par un point sur une ligne separee. L'inconvenient de cette methode est la charge qu'elle induit sur le systeme serveur, car il doit rechercher chaque article dans sa base de donnees d'historique. Dans la technique opposee, le pulling, le client demande une liste de tous les articles (disponibles) dans un groupe donne, arrives sur le serveur apres une certaine date. Cette requ^te se fait par la commande NEWNEWS. A partir de la liste de Message-ID e recus, le client selectionne ceux qu'il ne possede pas encore, en les reclamant par la commande ARTICLE, un par un. Cette methode presente l'inconvenient de demander au serveur un contr^le tres serre o des groupes et distributions qu'il permet de transferer, pour chaque client. Par exemple, il doit s'assurer qu'aucune information con dentielle en provenance de groupes locaux ne peut ^tre envoyee a des machines non autorisees. e NNTP propose egalement un certain nombre de commandes utilitaires destinees aux programmes lecteurs, leur permettant de recuperer separement l'en-t^te et le corps des e articles, ou m^me uniquement certaines lignes de ces en-t^tes. Ainsi, ces programmes e e peuvent se trouver sur n'importe quelle machine du reseau (de preference local), et acceder facilement a tous les articles qui restent centralises sur un seul h^te, ce qui o est une excellente alternative au montage des repertoires de News par NFS, comme il est decrit dans le chapitre 17. NNTP sou re d'un petit defaut : quelqu'un d'experimente, connaissant bien le protocole, peut inserer des articles portant de fausses informations (au nom de quelqu'un d'autre, par exemple) 3 . Il existe une extension de NNTP permettant au serveur de demander une authenti cation de l'utilisateur avant d'executer certaines commandes. Il circule un certain nombre d'implementations de NNTP. Le demon NNTP, plus connu sous l'appellation implementation de reference, est la plus celebre. A l'origine, elle fut realisee par Stan Barber et Phil Lapsley pour illustrer les details des speci cations RFC 977. Nous allons decrire sa version la plus recente, nntpd-1.5.11. Vous pouvez soit vous procurer le code source original et la compiler vous-m^me, soit utilie ser le nntpd contenu dans le paquetage net-std prepare par Fred van Kempen. Aucune version binaire pre-compilee n'est fournie en raison des diverses con gurations speciques au site qui doivent ^tre integrees au programme. e L'ensemble nntpd consiste en un serveur et deux clients realisant du pulling et du pushing, ainsi qu'un remplacement de la commande inews. Ils sont prevus pour un environnement Bnews, mais avec quelques petites modi cations, fonctionneront parfaitement avec C News. Toutefois, si vous comptez utiliser NNTP pour faire plus qu'o rir un acces aux lecteurs de News sur votre serveur, l'implementation de refe< >
291
rence n'est plus vraiment une option. Par consequent, nous ne parlerons que du demon NNTP contenu dans le paquetage nntpd et nous laisserons les programmes clients de c^te. o Il existe egalement un ensemble appele (( InterNet News )), ou INN, realise par Rich Salz. Il o re a la fois un transport NNTP et UUCP, et est preferable pour les sites importants. En matiere de News par NNTP, il est sans comparaison avec nntpd, c'est vraiment lui qu'il faut choisir. Si vous voulez installer INN, consultez la documentation fournie avec son code source, ainsi que le document (( INN FAQ )) poste regulierement dans le groupe news.software.b.
Si vous decidez de l'employer en serveur autonome, veri ez que toute ligne comme celle-ci dessus soit absente ou commentee dans inetd.conf. Dans un cas comme dans l'autre, le chier /etc/services doit contenir la ligne :
nntp 119/tcp readnews untp # Network News Transfer Protocol
A n de gerer les articles qui arrivent, nntpd a besoin d'un repertoire temporaire .tmp dans votre spoule de News. Vous devrez le creer a l'aide des commandes suivantes :
# mkdir /var/spool/news/.tmp # chown news.news /var/spool/news/.tmp
292
Si un client se connecte au port NNTP, nntpd va tenter d'obtenir son nom pleinement quali e a partir de son adresse IP par une recherche inverse. Le nom et l'adresse de ce client sont compares avec les champs site de chaque entree, dans l'ordre ou elles appara^ssent dans le chier. Si une entree correspond exactement, elle s'applique si elle ne correspond que partiellement, elle s'appliquera s'il n'y a pas, plus loin, une autre entree correspondant mieux. Le champ site peut ^tre speci e sous l'une des e formes suivantes :
nom de machine
adresse IP
C'est le nom pleinement quali e d'un h^te. S'il est identique au nom o canonique de la machine connectee, l'entree s'applique, et toutes les suivantes sont ignorees. Il s'agit d'une adresse IP en notation sur 4 octets. Si l'adresse du client correspond, l'entree s'applique et les suivantes sont ignorees.
nom de domaine
C'est un nom de domaine, indique sous la forme *.domaine. Si le domaine auquel appartient l'h^te connecte correspond, l'entree s'apo plique.
nom de reseau
Default
Il s'agit du nom d'un reseau tel que speci e dans /etc/networks. Si la partie reseau de l'adresse IP de la machine connectee correspond a l'adresse reseau associee a ce nom, l'entree s'applique. La cha^ne default correspond a tout client.
Les entrees comportant une speci cation de site plus generale doivent appara^tre en premier, car toute correspondance eventuelle pourra ainsi ^tre remplacee par une e suivante, plus exacte. Le deuxieme et le troisieme champ decrivent les droits d'acces autorises au client. Le deuxieme de nit les permissions de lecture (read), et de transfert par pushing (xfer). La valeur both valide les deux a la fois alors que no interdit tout acces. Le troisieme champ autorise le client a poster des articles, c'est-a-dire a delivrer des messages comportant des en-t^tes incomplets qui seront completes par le serveur. Si e le deuxieme champ contient le mot cle no, le troisieme sera ignore. Le quatrieme champ est facultatif et contient une liste de groupes, separes par des virgules, auxquels le client n'aura pas le droit d'acceder. Voici ci-dessous un exemple de chier nntp access :
# # par defaut, tout le monde peut transferer des News, mais # ni lire ni poster: default xfer no
293
294
dupliques arrivent par NNTP. Un bon test consiste a prendre un message de votre spoule, vous connecter par telnet sur le port nntp, et le proposer comme nous le montrons dans l'exemple ci-dessous. Bien s^r, vous devrez remplacer msg@id par u le Message-ID de l'article que vous voulez renvoyer a nntpd.
< >
$ telnet localhost nntp Trying 127.0.0.1... Connected to localhost Escape character is '^]'. 201 gueuze NNTP auth] server version 1.5.11t (16 November 1991) ready at Sun Feb 6 16:02:32 1194 (no posting) IHAVE QUIT
<msg@id>
Cette transaction montre une reaction correcte de nntpd le message (( Got it )) vous indique qu'il possede deja l'article en question. Si a la place vous obtenez le message ( 335 Ok ) , c'est que la recherche dans la base de donnees a echoue pour une raison ( ) quelconque. Terminez la conversation en tapant Ctrl-D. Vous pourrez rechercher ce qui ne va pas en inspectant les chiers de trace nntpd enregistre ces messages sous la (( facilite )) daemon de syslog. Une bibliotheque dbm incompatible se manifeste elle-m^me en indiquant que la fonction dbminit a echoue. e
295
Chapitre 19
C'est ainsi que les vrais mordus d'UNIX lisent leurs News. Cela dit, la plupart des autres lecteurs sont bien plus sophistiques. Ils o rent generalement une interface plein ecran comportant plusieurs niveaux d'a chage pour scruter les groupes que l'utilisateur frequente, un plan d'ensemble de tous les articles dans chaque groupe, etc. Au niveau groupe, pratiquement tous a chent une liste d'articles, montrant leurs sujets et leurs auteurs. Dans les forums les plus importants, il est souvent di cile de suivre la trace des articles relatifs les uns aux autres, bien qu'il soit possible d'identi er des reponses a de precedents messages. Une reponse reprend en general le sujet original, en y rajoutant (( Re: )) au debut. De plus, le Message-ID de l'article original appara^t dans la ligne References de l'ent^te. Si l'on trie les messages selon ces deux criteres, on aboutit a de petits ensembles e (en fait, arborescences) d'articles, que l'on appelle alors ls de discussions 1 . L'une des t^ches les plus di ciles lors de l'elaboration d'un lecteur de News consiste a trouver a une methode e cace pour ce classement, car le temps requis est proportionnel au carre du nombre d'articles a trier.
1 Dans les pays francophones, on utilise indi eremment les expressions (( l de discussion )), (( l )) et (( discussion )) pour ce que les anglophones appellent un thread.
:
296
Nous n'entrerons pas plus dans le detail des interfaces utilisateur. Tous les lecteurs disponibles sous Linux sont munis d'excellents manuels et de bonnes fonctions d'aide, vous devriez pouvoir apprendre rapidement a les utiliser. Nous allons nous concentrer sur les t^ches administratives permettant de faire fonca tionner ces programmes correctement ce ne sera bien s^r qu'un tres bref apercu, vous u devrez ensuite vous referer a la documentation fournie avec le lecteur que vous aurez choisi.
297
La version de tin incluse dans certaines distributions de Linux est compilee sans aucun support NNTP, mais cette erreur est maintenant corrigee dans la plupart d'entre elles. Lorsqu'on l'appelle avec l'option -r, ou encore sous le nom de rtin, le programme tente de se connecter au serveur NNTP speci e dans le chier /etc/nntpserver ou dans la variable d'environnement NNTPSERVER. Le chier contient simplement une seule ligne, indiquant le nom de la machine a contacter.
La commande ci-dessus validera les ls de discussion pour tous les groupes comp et rec, sauf rec.games.go (les gens jouant a ce jeu n'ont pas grand-chose a dire). Apres cela, il su ra de l'appeler sans aucune option pour qu'il traite tous les nouveaux articles arrives. Vous pouvez choisir d'indexer tous les groupes connus dans votre chier active en appelant mthreads avec une liste contenant simplement le mot all. Si vous recevez les News pendant la nuit, vous pourrez executer mthreads tous les matins, ou plus souvent si vous en avez besoin. Les sites qui ont un tra c important peuvent utiliser ce programme en mode demon. Lorsqu'il est lance au demarrage du systeme avec l'option -d, il s'installe en arriere-plan, et teste toutes les 10 minutes si de nouveaux articles sont arrives, et les traitera le cas echeant. Pour l'utiliser dans ce mode, mettez cette ligne dans votre script rc.news :
ces chiers d'index au pro t de la methode des .overview, beaucoup plus elegante et e cace. Vous en trouverez une description dans les sources du serveur INN (entre autres), et sans doute dans une prochaine edition de ce livre...
298
/usr/local/bin/rn/mthreads -deav
L'option -a valide l'indexation automatique de tous les nouveaux groupes lorsqu'ils sont crees -v met en service les messages de trace, qui s'enregistreront dans le chier mt.log, situe dans le repertoire ou vous avez installe trn. Les vieux articles qui ne sont plus disponibles doivent ^tre regulierement supprimes e des chiers d'index. Par defaut, seuls les articles dont le numero est inferieur a celui du premier qui est accessible sera supprime 6 . Les articles dont le numero est superieur a ce nombre mais qui ont malgre tout expire (car le plus ancien s'etait sans doute vu attribuer une tres longue vie par le champ Expires de l'en-t^te), peuvent ^tre supprimes e e en passant l'option -e a mthreads elle valide un mode d'expiration plus (( intelligent )). Lorsqu'il fonctionne en demon, cette option le fera passer automatiquement dans ce mode une fois par jour, peu apres minuit.
Cette commande valide les ls de discussions pour tous les groupes presents dans votre chier active. Vous pouvez aussi ne pas le faire fonctionner en demon, mais l'appeler regulierement par cron, en lui passant une liste de groupes a traiter. Cette liste ressemble beaucoup a la liste de souscription du chier sys, mais elle utilise des espaces a la place des virgules. Au lieu du groupe symbolique all, c'est un argument vide comme "" qui doit ^tre utilise pour indiquer tous les groupes. Voici un exemple d'appel : e
6 C news ne met pas a jour cette valeur vous devez utiliser la commande updatemin pour le faire. Consultez dans le chapitre 17, la page 275.
:
299
Notez que l'ordre est signi catif. La speci cation de groupe la plus a gauche qui correspond, gagnera toujours. Donc, si nous avions mis !rec.games.go apres rec, tous les articles de ce groupe auraient ete quand m^me traites. e Le lecteur nn propose plusieurs methodes pour supprimer de ses index les articles expires. La premiere consiste a mettre a jour la base en scrutant les repertoires contenant les articles, et a supprimer les entrees correspondant a des messages qui ne sont plus disponibles. C'est le mode operatoire par defaut, obtenu en appelant nnmaster avec l'option -E. Elle est assez rapide, sauf par NNTP. La deuxieme methode fonctionne exactement comme l'expiration par defaut de mthreads, en ce sens qu'elle ne supprime que les entrees qui se referent a des articles dont le numero est inferieur a celui du premier article dans le chier active. On la valide par l'option -e. En n, une troisieme strategie est possible, qui reconstruit entierement une nouvelle base, en scrutant tous les articles. Elle peut ^tre mise en service par l'option -E3. e La liste des groupes a expirer est donnee de la m^me facon par l'option -F. Toutefois, e si nnmaster fonctionne en mode demon, vous devez le tuer (par l'option -k) avant que l'expiration ne se fasse, puis le relancer par consequent, la commande correcte pour l'expiration de tous les groupes par la premiere methode sera :
# nnmaster -kF "" # nnmaster -lrC
Il y a encore beaucoup d'autres options qui permettent d'ajuster precisement le comportement de nn. Si vous desirez supprimer les articles defectueux ou realiser des compilations, resumes, ou autres, consultez la page de manuel de nnmaster. Ce programme nnmaster necessite un chier nomme GROUPS, situe dans le repertoire /usr/local/lib/nn. S'il n'existe pas, il sera automatiquement cree. Il contient pour chaque groupe, une ligne commencant par le nom de ce forum, suivi eventuellement par une date, et des drapeaux. Vous pouvez editer ces drapeaux pour valider un comportement particulier sur le groupe en question, mais vous ne devez pas changer l'ordre dans lequel ces groupes apparaissent dans le chier 7 . La description de ces drapeaux se trouve dans la page de manuel de nnmaster.
7 Car leur ordre doit correspondre a celui des entrees du chier binaire MASTER.
:
300
301
Annexe A
2 () 15 3 () 13 4 () 12 5 () 10 6 () 11 25 () 25 15 () 2 13 () 3 12 () 4 10 () 5 11 () 6
Toutes les autres broches ne sont pas utilisees. S'il s'agit d'un c^ble blinde, le blindage a doit ^tre soude sur le bo^tier metallique de l'un des connecteurs, et un seul. e
302
303
Annexe B
304
# # base de donnees pathalias pour routage hors de notre domaine monde_paths: driver=pathalias, # cherche l'h^te dans un fichier paths o transport=uux # si trouve, delivrer par UUCP file=paths/monde, proto=bsearch, optional, -required, domain=uucp, # # # # # le fichier est /usr/lib/smail/paths/monde il est trie par sort(1) ignorer si le fichier n'existe pas pas de domaines requis supprime extension ".uucp" avant recherche
Le second attribut global donne dans chacune des deux entrees routers ci-dessus denissent le transport qu'il faudra utiliser lorsque ce routeur trouvera l'adresse. Dans notre cas, le message sera delivre par le transport uux. Ces transports sont de nis dans le chier transports, qui est decrit un peu plus loin. Vous pouvez ajuster avec precision par quel transport un message doit ^tre delivre si e vous speci ez un chier de methodes a la place de l'attribut transports. Les chiers de methodes o rent une base de correspondance entre des noms de machines et des transports. Nous ne les traiterons pas dans ce guide. Le chier routers qui va suivre de nit des routeurs pour un reseau local qui interroge la bibliotheque resolver. Sur un site Internet, il faudra en utiliser un autre, sachant gerer les enregistrements MX du DNS. Par consequent, vous devrez supprimer les commentaires devant le routeur inet bind qui utilise le pilote BIND integre a smail. Dans un environnement mixte UUCP et TCP/IP, vous pouvez rencontrer des problemes avec des machines qui sont declarees dans votre chier /etc/hosts, avec lesquelles vous avez occasionnellement des connexions SLIP ou PPP. Or, vous voudrez sans doute que le courrier pour ces sites passe quand m^me par UUCP. Pour eviter e o que le pilote inet hosts ne reconnaisse ces h^tes, vous devrez les declarer dans le chier paths/force. Il s'agit d'une autre base de donnees de type pathalias qui est consultee avant que smail n'interroge le resolver.
# Un exemple de fichier /usr/lib/smail/routers #
305
# force - force le transport par UUCP pour certaines machines, # m^me si elles figurent dans votre /etc/hosts. e force: driver=pathalias, # cherche l'h^te dans un fichier paths o transport=uux # si trouve, delivrer par UUCP file=paths/force, optional, proto=lsearch, -required, domain=uucp, # # # # # le fichier est /usr/lib/smail/paths/force ignorer si le fichier n'existe pas il n'est pas trie (recherche lineaire) pas de domaines requis supprime extension ".uucp" avant recherche
# inet_addrs - pour les domaines numeriques, c'est-a-dire contenant # des adresses IP, comme dans dugenou@ 172.16.2.1] inet_addrs: driver=gethostbyaddr, # pilote pour domaines IP numeriques transport=smtp # delivrer par SMTP sur TCP/IP fail_if_error, check_for_local, # echoue si adresse mal formee # delivrer directement si h^te = nous-m^mes o e
# inet_hosts - recherche des noms par gethostbyname(3N). # Commentez cette partie si vous voulez utiliser la version # BIND a la place, pour la gestion des MX du DNS. inet_hosts: driver=gethostbyname, # utilise la fonction bibliotheque transport=smtp # delivre par defaut par SMTP -required, -domain, -only_local_domain, # pas de domaines requis # pas de suffixes de domaines definis # non restreint aux domaines definis
# inet_hosts - alternative utilisant BIND pour acceder au DNS #inet_hosts: # driver=bind, # utilise le pilote BIND interne # transport=smtp # delivrer par SMTP sur TCP/IP # # defnames, # recherche de domaines standard # defer_no_connect, # essaie plus tard si serveur de noms en panne # -local_mx_okay, # echoue (ne traverse pas) un MX vers # # la machine locale # # base de donnees pathalias pour routage dans le domaine domaine_paths: driver=pathalias, # cherche l'h^te dans un fichier paths o transport=uux # si trouve, delivrer par UUCP file=paths/domaine, proto=lsearch, optional, required=bibine.com, # # # # le fichier est /usr/lib/smail/paths/domaine il n'est pas trie (recherche lineaire) ignorer si le fichier n'existe pas ne rechercher que les h^tes de *.bibine.com o
306
# smart_host - specification d'un directeur particulier vers le smart host # Si l'attribut smart_path n'est pas defini dans # le fichier /usr/lib/smail/config, ce routeur sera ignore. # L'attribut transport est ecrase par la variable globale # smart_transport. smart_host: driver=smarthost, # pilote special transport=uux # delivre via UUCP par defaut -path, # utilise la variable smart_path du # fichier config.
Le traitement du courrier pour les adresses locales est con gure dans le chier directors. Il est constitue de la m^me maniere que le chier routers, avec une liste d'entrees e qui de nissent chaque directeur. Les directeurs ne delivrent pas de messages, ils ne font qu'e ectuer toutes les redirections qui sont possibles, par exemple par les alias, le renvoi du courrier, etc. Lorsqu'il delivre un message a une adresse locale, comme dugenou, smail passe le nom de l'utilisateur successivement a tous les directeurs. Si l'un d'eux correspond, soit il speci era un transport a utiliser pour delivrer le courrier (par exemple, vers la bo^te aux lettres de l'utilisateur), soit il generera une nouvelle adresse (par exemple, en evaluant un alias). Pour des raisons de securite, les directeurs e ectuent generalement un grand nombre de tests pour veri er que les chiers qu'ils ont a utiliser sont ables et integres. Les adresses obtenues d'une maniere douteuse (par exemple, depuis un chier aliases qui a des permissions d'ecriture pour tout le monde) sont notees comme non s^res. Certains u pilotes de transport elimineront de telles adresses, celui qui delivre un message dans un chier en fait partie. En dehors de cela, smail associe aussi un utilisateur a chaque adresse. Toute operation de lecture ou d'ecriture est e ectuee sous ce nom d'utilisateur. Pour delivrer un message dans la bo^te aux lettres de dugenou, l'adresse sera bien s^r associee a u l'utilisateur dugenou. D'autres adresses, comme celles obtenues a partir du chier aliases, se voient associer d'autres utilisateurs, comme par exemple nobody. Pour plus de details sur ce sujet, consultez la page de manuel de smail(8).
# Un exemple de fichier /usr/lib/smail/directors
307
# aliasinclude - expanse les adresses ":include:fichier" produites # par les fichiers alias aliasinclude: driver=aliasinclude, # utiliser ce pilote special nobody # acceder aux fichiers sous l'utilisateur # nobody si adresse peu s^re u copysecure, copyowners, # prend permissions dans directeur alias # prend proprietaires dans directeur alias
# forwardinclude - expanse les adresses ":include:fichier" produites # par les fichiers forward forwardinclude: driver=forwardinclude, # utiliser ce pilote special nobody # acceder aux fichiers sous l'utilisateur # nobody si adresse peu s^re u checkpath, copysecure, copyowners, # test d'accessibilite du chemin # prend permissions dans directeur alias # prend proprietaires dans directeur alias
# aliases - cherche les alias a traiter stockes dans une base de donnees aliases: driver=aliasfile, # directeur general pour les alias -nobody, # toutes les adresses seront associees par # defaut a nobody sender_okay, # ne supprime pas l'expediteur dans l'expension owner=owner-$user # problemes diriges vers l'adresse du proprietaire file=/usr/lib/aliases, modemask=002, optional, proto=lsearch, # # # # compatibilite sendmail par defaut ne doit pas pouvoir ^tre ecrit par tous e ignorer si le fichier n'existe pas c'est un fichier ASCII non trie
# dotforward - expansion des fichiers .forward des repertoires personnels dotforward: driver=forwardfile, # directeur general pour les forward owner=real-$user, # problemes diriges dans la bo^te aux lettres # de l'utilisateur nobody, # utiliser le compte nobody si adresse peu s^re u sender_okay # ne supprime pas l'expediteur dans l'expansion file=~/.forward, # fichiers .forward dans repertoires personnels checkowner, # l'utilisateur doit ^tre proprietaire du fichier e owners=root, # ou alors il doit appartenir a root modemask=002, # il ne doit pas pouvoir ^tre ecrit par tous e caution=0-10:uucp:daemon, # ne rien executer sous root ou daemon # faire tres attention aux repertoires suivants: unsecure="~ftp:~uucp:~nuucp:/tmp:/usr/tmp", # forwardto - expanse une ligne "Forward to " au tout debut d'une bo^te aux # lettres d'utilisateur. forwardto: driver=forwardfile, owner=Postmaster, # erreurs dirigees au Postmaster
308
file=/var/spool/mail/${lc:user}, # les bo^tes aux lettres sont par la forwardto, # valide le test de "Forward to " checkowner, # l'utilisateur doit ^tre proprietaire du fichier e owners=root, # ou alors il doit appartenir a root modemask=0002, # sous System V, le groupe mail peut ecrire caution=0-10:uucp:daemon, # ne rien executer sous root ou daemon # user - traite les utilisateurs locaux et leur bo^te aux lettres user: driver=user # pilote recherchant les utilisateurs locaux transport=local, # le transport local aboutit aux bo^tes aux # lettres des utilisateurs
# user - traite les noms d'utilisateurs prefixes par la cha^ne "real-" real_user: driver=user # pilote recherchant les utilisateurs locaux transport=local, prefix="real-", # le transport local aboutit aux bo^tes aux # lettres des utilisateurs # correspond par exemple, a real-root
# lists - expanse les listes de diffusions de dans /usr/lib/smail/lists lists: driver=forwardfile, caution, # teste toutes les adresses avec soin nobody, # et leur associe l'utilisateur nobody sender_okay, # ne supprime pas l'expediteur owner=owner-$user # le proprietaire de la liste # passe le nom de la liste de diffusion en lettres file=lists/${lc:user}, minuscules
Apres avoir reussi a router ou rediriger un message, smail le passe au transport speci e par le routeur ou le directeur correspondant. Ces transports sont de nis dans le chier transports. La encore, les de nitions sont composees d'un ensemble d'attributs globaux et prives. L'option la plus importante de nie par chaque entree est le pilote qui gere ce transport, par exemple le pilote pipe, qui appelle la commande speci ee dans l'attribut cmd. A c^te de cela, un transport peut utiliser un certain nombre d'attributs globaux o qui e ectuent diverses transformations sur l'en-t^te, et eventuellement le corps du e message. L'attribut return path, par exemple, demandera au transport d'inserer un champ return path dans l'en-t^te du courrier. L'attribut unix from hack permet de e rajouter le caractere devant chaque ligne du message commencant par le mot From.
>
# Un exemple de fichier /usr/lib/smail/transports. # local - delivre le courrier local aux utilisateurs local: driver=appendfile, # rajoute le message au bout d'un fichier return_path, # rajoute un champ Return-Path:
309
from, unix_from_hack, local # met une ligne From_ d'enveloppe # insere > devant toute ligne From dans le corps # utiliser le format local
file=/var/spool/mail/${lc:user}, # les bo^tes aux lettres sont par la group=mail, # groupe proprietaire du fichier en System V mode=0660, # le groupe mail peut lire et ecrire suffix="\n", # rajoute un saut de ligne # pipe - delivre le courrier a des commandes shell pipe: driver=pipe, # envoie le message par tube a un autre programme return_path, # rajoute un champ Return-Path: from, # met une ligne From_ d'enveloppe unix_from_hack, # insere > devant toute ligne From dans le corps local # utiliser le format local cmd="/bin/sh -c $user", parent_env, pipe_as_user, ignore_status, ignore_write_errors, umask=0022, -log_output, # # # # # # # envoie l'adresse au shell Bourne environnement de l'adresse parent utilise l'utilisateur associe a cette adresse ignore une valeur de retour non nulle ignore erreurs d'ecriture (comme broken pipe) umask du processus fils n'envoie aucune trace sur stdout/stderr
# file - delivre le courrier dans des fichiers file: driver=appendfile, return_path, # rajoute un champ Return-Path: from, # met une ligne From_ d'enveloppe unix_from_hack, # insere > devant toute ligne From dans le corps local # utiliser le format local file=$user, append_as_user, expand_user, suffix="\n", mode=0600, # # # # # le fichier est pris dans l'adresse utilise l'utilisateur associe a cette adresse expanse ~ et $ dans l'adresse rajoute un saut de ligne met les permissions a la valeur 600
# uux - delivre le message a la commande rmail du site UUCP distant. uux: driver=pipe, uucp, # utilise le style d'adressage UUCP from, # met une ligne From_ d'enveloppe max_addrs=5, # pas plus de 5 adresses par appel max_chars=200 # pas plus de 200 caracteres d'adresse cmd="/usr/bin/uux - -r -a$sender -g$grade $host!rmail $(($user)$)", pipe_as_sender, # les logs UUCP contiendront l'appelant log_output, # sauve les erreurs pour messages de rejet defer_child_errors, # reessaie si uux retourne une erreur
# demand - delivre le message a la commande rmail du site UUCP distant, # en appelant immediatement. demand: driver=pipe, uucp, # utilise le style d'adressage UUCP from, # met une ligne From_ d'enveloppe max_addrs=5, # pas plus de 5 adresses par appel max_chars=200 # pas plus de 200 caracteres d'adresse
310
# hbsmtp - semi SMTP par lots. Les fichiers de sortie devront ^tre e # traites regulierement, puis expedies par UUCP. hbsmtp: driver=appendfile, inet, # utilise le style d'adressage RFC 822 hbsmtp, # SMTP par lots sans HELO ni QUIT -max_addrs, -max_chars # pas de limite sur le nombre des adresses file="/var/spool/smail/hbsmtp/$host", user=root, # le fichier appartient a root mode=0600, # lecture et ecriture seulement pour root # smtp - delivre le courrier par SMTP sur TCP/IP smtp: driver=tcpsmtp, inet, # utilise le style d'adressage RFC 822 -max_addrs, -max_chars # pas de limite sur le nombre des adresses short_timeout=5m, # temps maxi pour operations courtes long_timeout=2h, # temps maxi pour operations SMTP plus longues service=smtp, # connexion sur ce port Pour utilisation sur l'Internet: supprimez les commentaires sur ces 4 dernieres lignes: use_bind, # resout les enregistrement MX et multiples A defnames, # recherche de domaines standard defer_no_connect, # essaie plus tard si serveur de noms en panne -local_mx_okay, # echoue (ne traverse pas) un MX vers # la machine locale
# # # # # # #
311
Annexe C
C.1 Preambule
Les licences d'utilisation de la plupart des programmes sont concues pour limiter ou pour supprimer toute liberte de l'utilisateur. A l'inverse, la Licence Publique Generale est destinee a vous garantir la liberte de partager et de modi er les logiciels libres, et de s'assurer que ces logiciels sont e ectivement accessibles a tout utilisateur. Cette Licence Publique Generale s'applique a la plupart des programmes de la Free Software Foundation, ainsi qu'a tout autre programme dont l'auteur l'aura decide (d'autres logiciels de la Free Software Foundation sont couverts pour leur part par la Licence Publique Generale pour Bibliotheques GNU). Vous pouvez aussi utiliser les termes de cette Licence pour vos propres programmes, si vous le desirez.
312
Liberte des logiciels ne signi e pas forcement gratuite . notre Licence est concue pour vous assurer la liberte de distribuer des copies des programmes, gratuitement ou non, de recevoir le code source ou de pouvoir l'obtenir, de modi er les programmes ou d'en utiliser des elements dans de nouveaux programmes libres, en sachant que vous y ^tes e autorises. A n de proteger vos droits, nous avons d^ introduire des restrictions interdisant a quiu conque de vous refuser ces droits ou de vous demander d'y renoncer. Ces restrictions vous imposenten retour certaines obligations si vous distribuez ou si vous modi ez des copies de programmes proteges par la Licence. Ainsi, si vous distribuez des copies d'un tel programme, gratuitement ou non, vous devez transmettre aux destinataires tous les droits que vous possedez vous devez vous assurer que les destinataires recoivent le code source ou qu'ils peuvent se le procurer. Vous devez leur remettre cette Licence a n qu'eux aussi connaissent leurs droits. Nous protegeons vos droits de deux facons : d'abord par le copyright du logiciel, ensuite par la remise de cette Licence qui vous autorise legalement a copier, distribuer et/ou modi er le logiciel. En outre, pour la protection de chaque auteur et pour la n^tre, nous voulons nous o assurer que chacun comprenne bien qu'il n'existe aucune garantie pour ce programme libre. Si le logiciel est modi e par quelqu'un d'autre et redistribue ensuite, nous voulons que tous ceux qui recevront ce logiciel sachent qu'ils ne sont pas en presence de l'original, a n que les problemes introduits par d'autres personnes n'entachent pas la reputation de l'auteur du logiciel original. En n, tout programme libre est sans cesse menace par des dep^ts de licences. Nous o voulons a tout prix eviter que des distributeurs puissent deposer des licences de logiciels libres pour leur propre compte. Pour l'eviter, nous stipulons bien que tout dep^t o eventuel de licence doit prevoir expressement un libre usage pour tous. Les dispositions precises et les conditions pour la copie, la distribution et la modi cation de nos logiciels sont les suivantes :
Article 2.
314
Article 3.
Article 4.
Article 5.
Article 6.
Article 7.
316 Article 8.
Article 9.
Article 10.
Article 11.
Article 12.
317
pourra ^tre tenu pour responsable de tout dommage die rect, indirect, secondaire ou accessoire (y compris les dommages entraines par la perte de benefice, l'interruption d'activites ou la perte d'informations et autres decoulant de l'utilisation | ou de l'impossibilite d'utilisation | du programme.) FIN DES TERMES ET CONDITIONS
hune ligne pour donner le nom du programme et donner une idee de ce qu'il est cense faire.i Copyright c 19xx hnom de l'auteuri
Ce programme est libre, vous pouvez le redistribuer et/ou le modi er selon les termes de la Licence Publique Generale GNU telle qu'elle est publiee par la Free Software Foundation soit la version 2 de cette licence, soit (a vous de voir) tout autre version ulterieure. Ce programme est distribue dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, ni explicite ni implicite, y compris les garanties de commercialisation ou d'adaptation dans un but speci que. Prenez connaissance de la Licence Publique Generale GNU pour plus de details. Vous devez avoir recu une copie de la Licence Publique Generale GNU avec ce programme si ce n'est pas le cas, ecrivez a la Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Ajoutez egalement les informations necessaires pour vous contacter par courrier electronique ainsi que votre adresse postale. Si le programme est interactif, faites-lui a cher un court avertissement comme celui-ci lors de son lancement :
...(nom du programme) version 69, Copyright (C) 19yy nom de l'auteur ...(nom du programme) est fourni sans AUCUNE GARANTIE tapez `g'. pour plus de details
318
conditions
Les commandes hypothetiques `g' et `c' doivent a cher les parties appropriees de la Licence Publique Generale GNU. Bien entendu, vous pouvez appeler les commandes comme bon vous semble : options dans un menu, options accessibles par le clic d'une souris, etc., tout depend de votre programme. Si vous travaillez en tant que programmeur, vous devez aussi demander a votre employeur ou votre ecole, ou autres, de signer une decharge stipulant qu'il renonce aux droits qu'il pourrait avoir sur le programme. Par exemple : ...(employeur, ecole...) declare par la presente ne pas revendiquer de droits sur le programme (((nom du programme))) ecrit par ...(nom de l'auteur). hsignature du responsablei, ...(date), ...(nom et qualite du responsable). La Licence Publique Generale ne permet pas d'inclure votre programme dans des logiciels detenteurs de droits. Si votre programme est une fonction de bibliotheque, vous pouvez considerer qu'il est plus utile de le faire relever du droit des bibliotheques si c'est ce que vous desirez, utilisez la Licence Generale de Bibliotheque GNU et non celle-ci.
319
Annexe D
320
25 $ (vous devez aussi ^tre membre de USENIX). Les membres bene cient d'abone nements gratuits a login: et a Computing Systems, revue trimestrielle reputee des reductions sur les entrees aux conferences et symposiums, ainsi que sur certains achats, publications ou autres services.
Glossaire
321
Glossaire
Dans le domaine des reseaux, il est toujours tres di cile de se souvenir de la signication de tous les termes et abreviations rencontres, surtout si l'on ne ma^trise pas la langue anglaise. Voici une liste de ceux frequemment utilises dans ce guide, suivis d'une courte explication.
Automatic Call Unit, Unite d'appel automatique. Un modem, en general 1. ARP Adress Resolution Protocole, protocole de resolution d'adresses utilise pour la correspondance entre les adresses IP et les adresses Ethernet. ARPA Advanced Research Project Agency, devenu plus tard DARPA. Fondateur de l'Internet. ARPANET L'anc^tre de l'Internet d'aujourd'hui reseau experimental fonde par e le Defense Advanced Research Project Agency (DARPA). Assigned Numbers Le titre d'un RFC publie regulierement qui liste les nombres de nis au niveau mondial pour di erentes choses ayant trait a TCP/IP. Par exemple, il contient la liste de tous les ports ou services bien connus comme rlogin, telnet, etc. A l'heure ou ce livre est redige, sa version la plus recente est RFC 1340. babillard Voir BBS. bang path Dans les reseaux UUCP, notation speciale pour indiquer le chemin d'un site a un autre. Le nom provient de l'utilisation de points d'exclamation ((( bangs ))) pour separer les noms des machines. Exemple : foo!bar!ernie!bert denote un chemin vers le site bert, passant dans l'ordre par foo, bar et ernie.
1 Alternative : un gamin avec un Minitel.
:
ACU
322 BBS
Glossaire
Bulletin Board System. Serveur informatique fonctionnant en general sur un ordinateur personnel, permettant le telechargement de chiers et quelques fonctions de messagerie, locale ou partagee avec d'autres. Accessibles par modem. S'appellent (( babillards )) au Quebec. biere virtuelle La boisson favorite des utilisateurs de Linux. La premiere fois qu'elle fut mentionnee, c'etait semble-t-il dans les notes concernant la di usion du noyau 0.98.X, Linus remerciant les (( Oxford Beer Trolls )) de lui avoir expedie de la biere virtuelle. BGP Border Gateway Protocol. Un protocole destine a l'echange d'informations de routage entre systemes autonomes. BIND Une implementation d'un serveur DNS : Le Berkeley Internet Name Domain server. BNU Basic Networking Utilities. C'est la variete d'UUCP la plus courante actuellement. Elle est aussi connue sous le nom de (( HoneyDanBer UUCP )), ou HDB, appellation derivee du nom des auteurs : P. Honeyman, D.A. Novitz et B.E. Redman. broadcast network Reseau de di usion. Un reseau qui autorise une station a adresser un datagramme simultanement a toutes les stations connectees. BSD Berkeley Software Distribution. Une implementation d'UNIX. chemin Souvent employe comme synonyme de route, surtout dans les reseaux UUCP. Voir aussi bang path. CCITT Comite Consultatif International de Telegraphique et Telephonique. CSLIP Compressed Serial Line IP. Protocole permettant le transfert de paquets IP sur une ligne serie, avec compression des en-t^tes de la plue part des datagrammes TCP/IP. daemon Abreviation de (( Disk And Extension MONitor )). Voir demon. demon Demon est une francisation familiere du vocable informatique anglais daemon, qui signi e Disk And Extension MONitor, c'est-a-dire qui n'est pas invoque manuellement mais attend en t^che de fond que a quelque chose se passe, que quelque condition se produise. Ce terme fut introduit au depart sous CTSS (Compatible Time Sharing System), un anc^tre du systeme MULTICS, lui-m^me parent d'UNIX. e e demon de routage Dans les grands reseaux, les changements de topologie peuvent ^tre e di ciles a suivre manuellement, aussi existe-t-il di erents programmes
Glossaire
323
permettant de distribuer les informations de routage courantes a toutes les machines. C'est ce que l'on appelle le routage dynamique les informations sont di usees par des demons de routage fonctionnant sur des machines centrales du reseau. Les protocoles utilises s'appellent des protocoles de routage. DNS Domain Name System. Il s'agit d'une base de donnees distribuee, utilisee sur l'Internet pour la correspondance entre les noms des machines et leurs adresses IP. EGP External Gateway Protocol. Un protocole pour l'echange d'informations de routage entre des systemes autonomes. Ethernet Par convention, nom d'un type de reseau et d'equipement reseau. Techniquement, Ethernet est une partie d'un ensemble de standards de nis par l'IEEE. Le reseau Ethernet utilise un seul c^ble, tres soua vent coaxial, pour connecter un certain nombre d'h^tes, et permet o des transferts allant jusqu'a 10 Mbps. Le protocole Ethernet de nit la maniere dont ces h^tes communiquent entre eux sur ce c^ble 2 . o a FQDN Fully Quali ed Domain Name, nom pleinement quali e. Un nom d'h^te avec un nom de domaine au bout, qui est alors un index valide o dans la base de donnees DNS. FTP File Transfer Protocol. Le plus celebre service de transfert de chiers est base sur ce protocole et porte le m^me nom. e FYI ( For Your Information ) . Series de documents contenant des infor( ) mations informelles sur des sujets relatifs a l'Internet. GMU Groucho Marx University. L'universite Groucho Marx est un etablissement imaginaire utilise comme exemple dans ce livre. GNU GNU's not Unix. Cet acronyme recursif est le nom du projet de la Free Software Foundation dont le but est de fournir un ensemble coherent d'outils UNIX pouvant ^tre utilises et copies gratuitement. e Tous les logiciels GNU sont couverts par une licence speciale, connue sous le nom de GPL (Gnu Public Licence), ou (( Copyleft )). Elle est reproduite dans la section C HoneyDanBer Nom d'une variete de UUCP, HDB en abrege. Voir aussi BNU. h^te o En general, un n ud du reseau: quelque chose qui est capable de recevoir et de transmettre des messages reseau. Il s'agit le plus souvent d'un ordinateur, mais les terminaux-X, les imprimantes reseau
2 Au passage, le protocole Ethernet utilise couramment par TCP/IP n'est pas exactement le m^me e que l'IEEE 802.3. Les trames Ethernet possedent un champ de type alors que dans l'IEEE 802.3 elles ont un champ longueur.
:
Glossaire
en font partie aussi. Internet Control Message Protocol. Un protocole reseau utilise par IP pour renvoyer des informations d'erreur aux h^tes emetteurs, entre o autres choses. Institute of Electrical and Eletronics Engineers. Une autre organisation de standardisation. Au point de vue UNIX, leur realisation la plus importante est sans conteste les speci cations POSIX qui denissent les aspects des systemes UNIX, des interfaces des appels systemes aux outils d'administration. En dehors de ca, l'IEEE a developpe des speci cations pour les reseaux Ethernet, Token Ring et Token Bus. Un des standards de representation binaire des nombres reels parmi les plus utilises est aussi le fruit des travaux de l'IEEE. Internet Engineering Task Force. Un reseau d'ordinateurs compose d'un ensemble de reseaux individuels plus petits. Un internet particulier, s'etendant dans le monde entier. Internet Protocol. Un protocole reseau. International Standards Organization. Integrated Services Digital Network. Nouvelle technologie de telecommunications utilisant des techniques numeriques au lieu de circuits analogiques. En France, ISDN se nomme RNIS (Reseau Numerique a Integration de Services), et son nom commercial est NUMERIS. Local Area Network, reseau local. Un petit reseau d'ordinateurs. Mail Transport Agent, agent de transport de courrier. Il s'agit des programmes charges de delivrer le courrier electronique, comme smail et sendmail. Mail User Agent. Ce sont les interfaces utilisateur permettant la saisie conviviale du courrier electronique, comme elm. Les messages sont ensuite transmis au MTU pour ^tre routes et delivres. e Mail Exchanger, echangeur de courrier. Un type d'enregistrement DNS utilise pour indiquer qu'un h^te sert de passerelle pour le couro rier d'un domaine. Network File System. Un protocole reseau standard et une suite de programmes permettant d'acceder aux donnees de disques durs
Glossaire
325 distants de maniere transparente, comme si les systemes de chiers etaient locaux. Network Information System. Une application RPC qui permet de partager des chiers de con guration comme celui des mots de passe entre plusieurs h^tes. Voir aussi l'entree (( YP )). o Network News Transfer Protocol. C'est le protocole destine a transferer les News Usenet sur les connexions TCP.
Le premier nom d'une machine dans le DNS. C'est le seul nom auquel est associe un enregistrement de type A, et c'est celui qui est renvoye par les recherches inverses. NUMERIS voir ISDN. octet Un ensemble de 8 bits. La langue francaise ne conna^t que ce mot, l'anglais fait la di erence entre octet et byte. Sur l'Internet, le terme technique designant une quantite de 8 bits est appele octet. Il est prefere a byte, car il existe sur ce reseau, des machines dont la taille du byte n'est pas de 8 bits. OSI Open Systems Interconnection. Un standard ISO concernant le reseau (partie logicielle). path Voir chemin. PLIP Parallel Line IP. Un protocole permettant l'echange de paquets IP par une liaison parallele, comme le port imprimante du PC. port, TCP ou UDP Les ports sont une abstraction TCP et UDP des acces aux services. Avant qu'un processus ne puisse o rir ou acceder a un service reseau, il doit acceder a un port. Avec les adresses IP des machines, les ports identi ent de maniere unique les deux bouts d'une connexion TCP. portmapper Le portmapper s'interpose entre les numeros de programmes utilises pour l'identi cation RPC des di erents serveurs RPC individuels, et les numeros de port TCP et UDP que ces services ecoutent. PPP Le (( Protocole Point-a-Point)). Il s'agit d'un protocole souple et universel permettant d'utiliser di erents protocoles reseaux comme IP ou IPX sur une connexion point-a-point. En plus d'^tre largement e utilise sur des lignes serie (modem), PPP peut aussi ^tre employe e par-dessus ISDN.
326 RARP
Glossaire
Reverse Address Resolution Protocol. Il permet aux h^tes d'un reseau o de trouver leurs adresses IP au demarrage. recherche inverse (reverse lookup). L'action de rechercher un nom de machine en fonction de son adresse IP. Dans le DNS, cette operation est realisee en e ectuant la recherche de l'adresse dans le domaine in-addr.arpa. reseau a commutation de paquets Une variete de reseaux qui o rent le transfert instantane des donnees en les mettant toutes dans de petits paquets, qui sont transportes individuellement vers leur destination. Ils necessitent des connexions permanentes ou semi-permanentes. reseaux a stockage intermediaire Ils transferent les donnees sous forme de chiers entiers, et n'utilisent pas de connexion permanentes. Les h^tes se connectent les uns o aux autres a certains moments, et transferent toutes les donnees en une fois. Ils necessitent un stockage intermediaire jusqu'a ce qu'une connexion soit etablie. resolver Bibliotheque responsable de la correspondance entre les noms d'h^tes o et leurs adresses IP. resource record C'est l'unite d'information de la base de donnees DNS, que l'on abrege en RR. Chaque enregistrement se voit associer un type et une classe, par exemple ceux faisant correspondre un nom de machine a une adresse IP sont de type A (pour adresse), et de la classe IN (pour protocole Internet). RFC Request For Comments. Series de documents decrivant les standards Internet. RIP Routing Information Protocol. C'est un protocole de routage destine a ajuster dynamiquement les routes sur un (petit) reseau. RNIS voir ISDN. route La serie d'h^tes qu'une information doit traverser, depuis la machine o originale jusqu'a celle de destination. Trouver une route appropriee s'appelle le routage. RPC Remote Procedure Call. Protocole destine a executer des procedures a l'interieur d'un processus d'un h^te distant. o RR Abreviation de resource record, les enregistrements DNS.
Glossaire
RS-232 RTS/CTS
327
Le standard le plus courant d'interfaces serie. Le nom commun designant le contr^le de ux materiel e ectue par o deux peripheriques communiquant sur une liaison serie RS-232. Le nom derive des deux lignes mises en jeu, RTS ((( Request To Send ))) et CTS ((( Clear To Send ))). RTM (le ver Internet) Un programme de type virus qui utilisa plusieurs trous de securite dans VMS et Unix BSD 4.3 pour se repandre sur tout l'Internet. Plusieurs (( erreurs )) dans le programme le faisaient se multiplier sans limites, et par consequent mettre hors service de grandes portions de l'Internet. RTM sont les initiales de l'auteur (Robert T. Morris), qu'il avait laissees dans le programme. site Un ensemble d'h^tes qui, vu de l'exterieur, se comporte pratiqueo ment comme un seul n ud du reseau. Par exemple, du point de vue Internet, l'universite Groucho Marx est un site, malgre la complexite de son reseau interne. SLIP Serial Line IP. Protocole permettant l'echange de paquets IP par une ligne serie. Voir aussi CSLIP. SMTP Simple Mail Transfer Protocol. Protocole destine a transferer du courrier electronique sur les connexions TCP, mais peut aussi ^tre e utilise pour des lots de messages transportes par des liaisons UUCP. SOA Start of Authority. Un type de ressource DNS. System V Une variete d'UNIX. TCP Transmission Control Protocol. Un protocole reseau. TCP/IP Appellation generale de toute la serie de protocoles Internet. UDP User Datagram Protocol. Un protocole reseau. UUCP Unix to Unix Copy. Une serie de commandes de transport, permettant l'etablissement de reseaux fonctionnant sur des lignes telephoniques. Version 2 UUCP Tres ancienne implementation de UUCP. services bien connus On prefere le plus souvent employer le terme anglais well-known services. Il est frequemment utilise pour parler des services reseaux communs comme telnet et rlogin. Du point de vue technique, il designe
328
Glossaire
tous les services qui se sont vu attribuer un numero de port o ciel dans le document RFC (( Assigned Numbers )). Yellow Pages, pages jaunes. L'ancien nom de NIS qui n'est plus utilise, car c'est une marque deposee de British Telecom. Neanmoins, la plupart des utilitaires NIS ont conserve des noms commencant par le pre xe yp. On ne va pas contre l'histoire...
YP
Bibliographie commentee
329
Bibliographie commentee
Livres
Tanen89]
Andrew S. Tanenbaum: Computer Networks. Prentice-Hall International, 1989. ISBN 0-13-166836-6 . Cet ouvrage vous apportera une tres bonne connaissance du reseau. Utilisant le modele de reference OSI, il explique la conception de chaque couche, et les algorithmes pouvant ^tre mis en e jeu. Pour chaque couche, les implementations de plusieurs reseaux (dont ARPAnet) sont comparees. Le seul defaut de ce livre est l'abondance des abreviations, qui rendent parfois sa lecture di cile. Mais c'est probablement un inconvenient inherent au sujet traite.
CInternet]
Susan Estrada: Connecting to the Internet: An O'Reilly Buyer's Guide. O'Reilly and Associates, 1993. ISBN 1-56592-061-9. Contient des conseils pratiques pour choisir un fournisseur de connectivite IP, et le type de connexion Internet. Il vous aidera a determiner vos besoins reels et le prix qui en resultera, en fonction des di erents fournisseurs cites. Il comprend une liste internationale de fournisseurs.
AlbitzLiu92]
Paul Albitz et Cricket Liu: DNS and BIND. O'Reilly and Associates, 1992. ISBN 1-56592-010-4. Ce livre sera tres utile pour tous ceux qui ont a gerer un serveur de noms. Il explique tout le detail du fonctionnement du DNS et donne des exemples qui rendent comprehensibles les options de
330
Livres
BIND les plus obscures. Sa lecture est agreable et il pourra vous apprendre beaucoup.
Expect]
Don Libes: Exploring Expect: A Tcl-based Toolkit for Automating Interactive Programs. O'Reilly and Associates, 1995.
welsh-linux]
Matt Welsh: Le systeme Linux. O'Reilly and Associates, 1995. ISBN 1-56592-100-3. Cet ouvrage vous aidera a installer et utiliser un systeme Linux. Il decrit l'installation et les principales t^ches d'administration, et a presente un bon nombre d'applications du courrier electronique au multimedia. C'est un ouvrage de base, a posseder si vous utilisez Linux. Disponible en version anglaise ou francaise.
Comer88]
Douglas R. Comer: Internetworking with TCP/IP: Principles, Protocols, and Architecture. Prentice-Hall International, 1991. ISBN 0-13-468505-9.
Unleashing]
Stefan Strobel et Thomas Uhl: Linux - Unleashing the Workstation in Your PC. Springer-Verlag, 1994. ISBN 0-387-58077-8. Disponible en anglais et en allemand, ce livre est une introduction aux di erentes distributions de Linux, et un guide d'installation et de con guration.
10eme edition. O'Reilly and Associates, 1992. ISBN 0-93717593-5. C'est l'ouvrage de reference sur UUCP. Il traite aussi bien de la Version 2 que de l'implementation BNU. Il vous aidera a installer votre site UUCP, en vous donnant de nombreux trucs et astuces et des solutions a beaucoup de problemes. Il fait vraiment le tour
Livres
331 du sujet, et vous detaillera les subtiles di erences existant entre les di erentes versions de UUCP. La seconde partie du livre est consacree a Usenet et aux programmes relatifs aux News. Il traite de la con guration de B News (version 2.11) et C News, et des travaux d'administration.
NFS and NIS] Hal Stern: Managing NFS and NIS. O'Reilly and Associates, 1992.
ISBN 0-937175-75-7. C'est le compagnon du livre sur TCP/IP de Craig Hunt. Il couvre en detail l'utilisation de NIS (Network Information System) et NFS (Network File System) y compris la con guration de l'automonteur et PC/NFS.
NIS+]
Rick Ramsey: All about Administering NIS+. Prentice Hall, 1993. ISBN 0-13-068800-2.
sendmail]
Bryan Costales, Eric Allman et Neil Rickert: Sendmail. O'Reilly and Associates, 1993. ISBN 1-56592-056-2. L'ouvrage de reference sur Sendmail.
TCP/IP]
Craig Hunt: TCP/IP Network Administration. O'Reilly and Associates, 1992. ISBN 0-937175-82-X. Si le guide (( Administration Reseau sous Linux )) ne vous su t pas, procurez-vous cet ouvrage. Il traite de tout ce qui concerne le reseau, depuis l'obtention d'une adresse IP jusqu'au depannage de votre installation, en passant par la securite. Il est centre sur TCP/IP : con guration des interfaces, mise en place des routages, resolution de noms. Il comprend une description des possibilites o ertes par les demons de routage routed et gated, qui permettent le routage dynamique. Il decrit egalement la con guration des applications et des demons reseaux, comme inetd, les commandes en r, NIS et NFS.
332
Livres
L'annexe contient une reference complete sur gated et named, et une description de la con guration de sendmail.
Stevens90]
Richard W. Stevens: UNIX Network Programming. Prentice-Hall International, 1990. ISBN 0-13-949876-X. Il s'agit probablement du libre le plus lu, concernant la programmation reseau TCP/IP qui, en m^me temps, vous apprendra une e quantite de choses passionnantes sur les protocoles Internet 3 .
Spaf93]
Gene Spa ord et Simson Gar nkel: Practical UNIX Security. O'Reilly and Associates, 1992. ISBN 0-937175-72-2. C'est un livre que toute personne ayant a gerer un systeme sur un reseau se doit de posseder. Il traite de tout ce qui concerne la securite, tant au point de vue logiciel que materiel. Bien que vous deviez vous e orcer de securiser toutes les parties de votre systeme, les explications sur la securite des reseaux constituent, dans notre contexte, la partie la plus importante. En dehors des programmes classiques comme telnet, rlogin, etc., NFS et NIS, il aborde egalement Kerberos, Secure RPC, et l'usage des portes coupe-feu ( rewalls) permettant de proteger votre reseau de toute attaque en provenance d'Internet.
WInternet]
Ed Krol: The Whole Internet User's Guide and Catalog, 2nd Ed. O'Reilly and Associates, 1994. Un guide sur tous les services de l'Internet, comprenant toutes les instructions sur leur utilisation et une liste des sites les plus connus.
Kehoe92]
Brendan P. Kehoe: Zen and the Art of the Internet. . ( Zen ) fut le premier guide consacre a l'Internet, presentant aux ( ) novices les di erentes activites et services, ainsi que le folklore
3: Notez que Stevens vient juste de realiser un autre ouvrage, appele TCP/IP Illustrated, Volume 1, The Protocols, publie par Addison Wesley.
Les (( HOWTO ))
333 de l'Internet. C'est un volume de 100 pages qui couvre des sujets aussi varies que le courrier electronique, les News Usenet et le ver Internet. Il est disponible en telechargement par FTP anonyme sur de nombreux sites, et peut ^tre librement distribue et imprime. e On peut en acheter une version papier aupres de Prentice-Hall.
Les (( HOWTO ))
Voici un extrait du document (( HOWTO-INDEX )), realise par Matt Welsh.
L'index que nous vous presentons constitue la liste des HOWTO actuellement disponibles. Ils sont regulierement postes dans le forums Usenet comp.os.linux.answers, qui a ete cree dans ce but, ainsi que dans news.answers. Par consequent, vous pourrez toujours en dernier ressort les trouver dans l'archive de news.answers du site rtfm.mit.edu.
4 FAQ, Frequently Asked Questions, se traduit, de l'avis general et humoristique, dans la hierarchie francophone des News Usenet par (( foire aux questions )).
:
334
Les RFC
335
{ Linux Sound HOWTO, par tranter@software.mitel.com (Je Tranter). Les cartes sonores et logiciels adaptes sous Linux. { Linux Term HOWTO, par Bill Reynolds <bill@goshawk.lanl.gov>. Comment utiliser le protocole de communication (( term )) sous Linux. { Linux Tips HOWTO, par Vince Reed <reedv@rpi.edu>. Trucs et astuces en tous genres sous Linux. { Linux UUCP HOWTO, par vince@victrola.wa.com (Vince Skahan). Informations sur les logiciels UUCP sous Linux. { Linux XFree86 HOWTO, par geyer@polyhymnia.iwr.uni-heidelberg.de (Helmut Geyer). Comment installer XFree86 (X11R6) sous Linux.
Les RFC
Voici la liste des RFC que nous avons mentionnes tout au long de ce livre. Tous sont disponibles par FTP anonyme sur nic.ddn.mil, ftp.uu.net, et de nombreux autres sites de par le monde. Pour obtenir un RFC par courrier electronique, envoyez un message a l'adresse service@nic.ddn.mil, en mettant comme sujet send RFC-numero.TXT. rfc-1597 Address Allocation for Private Internets. Ce RFC liste les adresses IP que les reseaux prives peuvent librement utiliser sans qu'ils aient besoin d'^tre enregistres aupres de l'autorite Internet competente e (IANA), et presente les avantages et inconvenients de cette solution. Assigned Numbers, Postel et Reynolds. Ce RFC liste et de nit les di erents numeros utilises dans divers protocoles, comme les numeros de ports standard que les serveurs TCP et UDP ecoutent, et les protocoles utilises dans les en-t^tes des datagrammes IP. e Compressing TCP/IP headers for low-speed serial links, Van Jacobson. Ce document decrit l'algorithme utilise pour compresser les ent^tes TCP/IP en CSLIP et PPP. Un document a lire ! e Domain Administrators Operations Guide, Lottor, M. Avec ses deux compagnons RFC 1034 et RFC 1035, il constitue la reference sur le DNS. Domain Names - Concepts and Facilities, Mockapetris, P.V. Un complement au RFC 1033. Domain names - Implementation and Speci cation, Mockapetris, P.V. Un complement au RFC 1033. Mail Routing and the Domain System, Partridge, C. Ce RFC decrit le routage du courrier sur l'Internet. A lire pour tout savoir sur les
rfc-1340
Les RFC
enregistrements MX... The Point-to-Point Protocol (PPP), W.A. Simpson. Standard PPP, le protocole de transport de datagrammes sur les liaisons point-apoint. Network News Transfer Protocol, Kantor, B., and Lapsley, P. La de nition du protocole NNTP, couramment utilise pour le transport des News Usenet sur l'Internet. NFS: Network File System Protocol speci cation, Nowicki, B. Speci cations res protocoles NFS et mount (version 2). Nonstandard for Transmission of IP Datagrams over Serial Lines: SLIP, Romkey, J.L. Decrit SLIP, le protocole Internet pour liaisons series. RPC: Remote Procedure Call Protocol Speci cation: Version 2, Sun Microsystems, Inc. Speci cations de l'encodage utilise pour les RPC (appels de procedures distantes), utilisees entre autres pour NFS et NIS. Routing Information Protocol, Hedrick, C.L. Description du protocole RIP, qui est destine a l'echange dynamique d'informations de routages sur les reseaux locaux ou de moyenne importance. A Security Problem and Proposed Correction with Widely Deployed DNS Software, E. Gavron. Ce RFC decrit un probleme de securite avec la liste de recherche par defaut utilisee par d'anciennes versions de la bibliotheque resolver. Simple Mail Transfer Protocol, Postel, J.B. Description du protocole SMTP, destine au transport du courrier electronique sur TCP/IP. Standard for the Interchange of USENET messages, Adams, R., and Horton, M.R. Decrit le format des messages Usenet, et la facon dont ils sont echanges sur l'Internet et sur les reseaux UUCP. Une revision de ce RFC, qui sera beaucoup plus precise et moins tolerante vis-avis des mauvaises implementations constatees sur certains logiciels applicatifs, est attendue d'un moment a l'autre. Standard for the Format of ARPA Internet text messages, Crocker, D. C'est la reference absolue en ce qui concerne le format du courrier electronique. Tout le monde le conna^t, peu l'ont vraiment lu... Twas the Night Before Start-up, Cerf, V. La veille du jour ou tout a commence. Qui a dit que les heros du reseau resteront inconnus ?
rfc-1058 rfc-1535
rfc-821 rfc-1036
rfc-822 rfc-968
Index
A (enregistrement DNS), 94 acces autorisation, 105, 112, 164 chiers distants, 162 NNTP, 291, 293 PPP, 124 restriction, 16, 126, 134, 165, 291, 293 UUCP, 188{194 adresse bang, 208, 210 broadcast, 21 choix (IP), 62 courrier, 208{209 de di usion, 21, 69, 76 de routage, 208 enregistrement DNS, 94 Ethernet, 7 Ethernet et IP, 10 hybride, 208 IP, 10 loopback, 21 nom de machine UUCP, 178 negociation sous PPP, 115, 120, 126 resolution, 21 route-addr, 208 trouver le nom d'h^te, 36 o adresse de di usion, 76 adresses IP privees, 62 a chage con guration des interfaces, 75 con guration UUCP, 179 connexions actives, 79 statistiques sur interface, 79 337
|A|
alias
surnoms cartes NIS, 145 table de routage, 78 table de routage IP, 71 tables ARP, 80
courrier, 233 et C News, 272 nom de machine, 34, 94 alias, 233 Allman, Eric, 203 amd, 166 appel de procedure distante, voir RPC ARP, 21{22 a cher les tables, 80 mise en service, 77 proxy, 73, 81, 121 ARPANET, 5 Assembleur de paquets/desassembleur, 8 assignation des adresses IP, 62 atteindre un h^te, 68, 70 o authenti cation sous NNTP, 293 sous PPP, 113, 124{128 sous UUCP, 192 authoritative name server, 34, 36 auto-IRQ, 50 automonteur, 166 AX.25, 8, 47 Barber, Stan, 290 batch, voir lots baud, 55 BBS, 53 Becker, Donald, 47
|B|
338 Berkeley Internet Name Domain, 83 BIND, 83, 88{100 Biro, Ross, 13 bit par seconde, 55 biere virtuelle, 61 BNC, 6 BNU, voir UUCP, HDB bo^te aux lettres, 232 BOOTP, 22 bo^te aux lettres montage par NFS, 221 BSMTP, 207 C News, 261, 267{288 active ( chier), 267, 270{271, 275{ 276 alias des noms de machine, 272 archivage, 279 compression des lots, 278 creation con guration initiale, 270 echange de news, 272, 274 envoi de News, 274, 276{279 exclusion de sites, 272 expiration, 279{281 chiers de trace, 283 groupes moderes, 282 history ( chier), 267, 281 ihave/sendme, 273, 278 limiter les groupes, 272, 282 liste des groupes, 275, 281 lots, 268, 273, 274, 276{279 mise a jour chier active, 284 newsmaster, 271 parametres des lots, 277{279 relaynews, 267 reseau, 286 rnews, 274 reception des news, 267{268, 271 repertoire de spoule, 267 support de NNTP, 273, 293 sys ( chier), 269, 271{275 togo ( chier), 274 usenet, 271 UUCP, 268, 278
INDEX
cache (option BIND), 91 caracteres nationaux dans elm, 216 cartes, Usenet, 211, 214 CHAP, 113, 124, 126{127 chargen, 132 chat, 117{119 choix adresses IP, 62 cartes NIS, 151 domaine NIS, 146 nom de machine UUCP, 178 clients diskless, 22 CNAME (enregistrement DNS), 94, 95 coaxial, 6 collision, Ethernet, 7 Collyer, Geo , 261 communication, programmes, 53 compression d'en-t^tes Van Jacobson, e 102, 114 compression de paquets TCP/IP, 102, 114 con guration adresses IP, 62 C News, 268{288 C News sur un reseau, 286 courrier par reseau local, 221{224 courrier UUCP, 220 dip, 104 DNS sur SLIP/PPP, 101 domaine NIS, 146, 150 domaine par defaut, 86 elm, 215{217 equipement reseau, 39{52 Ethernet, 43, 47{51, 69 interface loopback, 67 interfaces reseau, 66 IPX, 46 lecteur de News, 295 les commandes en r, 139{141 News Usenet, 268{288 NFS, 44 NIS, 143{157 NNTP, 289{294 nom de domaine, 62 nom de machine, 61
|C|
INDEX
noyau, 43 passerelle courrier, 222 passerelle IP, 72 PLIP, 43, 51, 72 ports serie, 57{58 PPP, 43, 74, 113{129 resolution de noms, 65, 83{100 sendmail, 237{260 serveur de noms, 88{100 serveur de noms cache seulement, 101 serveur SLIP, 111 services reseau, 131 SLIP, 43, 74, 101{112 smail, voir smail utilisation serveur de noms, 86 UUCP, 169{201 con guration manuelle (Ethernet), 49 con guration manuelle (PLIP), 51 connecteur BNC, 6, 47 connexions, a chage, 79 contr^le de ux, materiel, 56, 57, 115 o courrier, 203 adresse bang, 208, 210 adresse de routage, 208 alias, 233 cartes, 211, 214 centralisation, 209, 212, 213 demon, 219 diriger dans un chier, 231 distribution, 207 en-t^tes, 204 e chier paths, 211, 213{215 forcer le transport UUCP, 257 format des adresses, 208{209 format des messages, 204 multimedia, 203 par lots, 207 par UUCP, 207 passer a une commande, 231 passerelle, 209 postmaster, 227 queue, 219, 226{227 rejet, 227, 242 renvoi, 232, 233
339 routage, 209{213 entre Internet et UUCP, 209 Internet, 209 par domaine, 212, 213 reseaux UUCP, 210 smart host, 211 routage par domaine, 209 route par defaut, 211 route-addr, 208 saisie, 207 site invisible, 221 sur reseau, 221 courrier electronique, 203 Cox, Alan, 13 creation cartes NIS, 148 sous-domaines, 32 sous-reseaux, 36, 63 zones DNS, 37 CSLIP, 10, 102, 103, 111, 114 D-Link, 47 daemon, 131 Davies, David C., 47 daytime, 132 DDI, 14 deboguage base de donnees DNS, 100 con guration PPP, 119 con guration UUCP, 173 delegation sous-domaines DNS, 32, 36 sous-reseau IP, 24 demon, voir daemon /dev/cua*, 55{56 /dev/modem, 56 /dev/ttyS*, 55{56 device driver interface, voir DDI dialogue PPP, 117 SLIP, 107 UUCP, 177, 181 dip, 104{112 diphosts, 111
|D|
340
diplogin, 111 diriger un courrier dans un chier, 231 discipline de ligne, 54, 102, 114 distant acces chiers, 3 acces chiers, 139, 159 execution, 3 execution, 207 execution de commandes, 139 login, 5, 11 session, 139 session X11, 5 systeme de chiers, 162 distribution courrier, 207 news, 265{267 DNS, 29{38 base de donnees, 34 con gurer le serveur, 88{100 conversion /etc/hosts, 100 creation de zones, 37 deboguage base de donnees, 100 recherche, 32 requ^te, 32 e requ^tes inverses, 36{38 e resource record, 34, 91 RR, voir DNS, resource record serveurs de noms racine, 96, 99 time to live, 33, 92 ttl, voir DNS, time to live utilitaires, 100 veri cation, 96 zone, 32{34, 36, 92 dnswalk, 100 Domain Name System, voir DNS domaine NIS, 146, 150 routage du courrier, 212 domaine in-addr.arpa, 36 domaines premier niveau, 31 domainname, 62, 146 dotted quad, 20 Dugenou, Marcel, 111
INDEX
echange courrier, 207 news, 262, 263 Ekwall, Bj rn, 47 elm, 215{217 jeux de caracteres nationaux, 216 email, voir courrier emulateurs de terminaux, 53 ERAU, voir UART Eriksson, Peter, 144 espace de nommage (DNS), 30 eth0 (interface Ethernet), 69 Ethernet, 6{7 adresse, 7, 21 autodetection des cartes, 49{51 c^blage, 47 a collision, 7 con guration, 69 con guration manuelle, 49 et adresse IP, 10 n, 6, 47 installation, 47 mode global, 77 pilotes Becker, 47 via port parallele, 47 eviter les boucles de courrier, 227 exporter un volume NFS, 164 exports, 164 FDDI, 7 chier hosts, 65 chier networks, 65 chier paths, 213{215 chier paths, 211 chiers de verrouillage, 56 et PPP, 116 et UUCP, 177 FidoNet, 53 nger, 133 rewall, 104 Flintstone, Fred, 1 forwarding IP, 8, 44
|E|
|F|
INDEX
UUCP, 3 fourniture, News, 263 FQDN, 30 fstab, 60, 162 FTP, trouver les sources de Linux, 14, 61
gated, 27, 73, 122 generer un chier paths, 213 gestion centralisee du courrier, 212, 213 gestion de courrier centralisee, 209 getty, 191 GNU, licence publique generale, 311{ 318 Gortmaker, Paul, 48 group.bygid, 153 group.byname, 153
341 IMAP, 222 inetd, 131, 138, 224 inetd.conf, 132{134 inews, 267 initialisation du reseau, 59 INN, 262, 291, 296 installation binaires reseau, 60 interconnexion de reseaux, 8, 24, 71 interface, 19, 39, 41, 46 con guration, 66 D-Link DE-600, 47 dummy, 74 Ethernet, 47, 69 loopback, 46, 67 masque reseau, 23, 63, 69, 76 netmask, 23, 76 PLIP, 47, 72 PPP, 47, 74, 116 SLIP, 47, 74 statistiques, 79 interface dummy, 74 internationalisation de elm, 216 Internet, 5 et internet, 8 routage du courrier, 209 s'y connecter, 101, 113, 115 Internet Control Message Protocol, 28 InterNet News (INN), 262 invalider ARP, 77 IP, 8{10 tinygrams, 45 adresse, 10 assignation, 62 et nom de machine, 29, 36 negociation sous PPP, 115, 120, 126 privee, 62 adresse de di usion, 69, 76 adresse et nom d'h^te, 10 o adresses, 20{21 adresses multicast, 77 appel telephonique, 101, 113 con guration des interfaces, 66 Control Protocol, 114, 119
|G|
ham radio, 8 Hankins, Greg, 53 HDB, voir UUCP, HDB HDLC, 113 HoneyDanBer, voir UUCP, HDB host, 1 host.conf, 84, 144, 156 hostcvt, 100 hosts, 65, 144 conversion en chiers BIND, 100 hosts.byaddr, 144 hosts.byname, 144, 152 hosts.equiv, 139 h^te, 1 o HOWTO Ethernet, 48 Serial, 53 UUCP, 170 ICMP, 28 Port Unreachable, 28 redirection, 28 IDA, voir sendmail, IDA ifcon g, 66, 74
|H|
|I|
342 forwarding, 8, 44 interface, 41 masque reseau, 23, 63, 69, 76 metrique, 27 MTU, 76 multicast, 77 metrique, 76 netmask, 23, 76 Network Control Protocol (PPP), 114 passerelle, 8, 44, 71, 72 port parallele, voir PLIP protocoles de routage, 27 reseaux, 20, 22, 36 routage, 22{28, 45, 71, 72 routage dynamique, 27 route par defaut, 21, 72 routing, 8 sous-reseau, 23{24, 36, 45, 71, 72 sur ligne serie, voir SLIP, 101, 113 table de routage, 25, 71, 78 IPCP, voir IP, Control Protocol IPX, 46 IRQ, 41, 50 ISDN, 47 ISO-8859-1, 216 jeux de caracteres dans elm, 216 junk (newsgroup), 268 Karr, Ronald S., 203 Kempen, Fred van, 5, 13
INDEX
nn, 298 tass, 296 tin, 296 trn, 297 Les Pierrafeu, 1 liaison point-a-point, 72, 74, 76, 81, 113 ligne serie protection de caracteres, 122 lilo, 49 Link Control Protocol (PPP), 113 lmail, 207 lo (interface loopback), 67 localhost, 67 loopback adresse, 21 interface, 67 lots de courrier, 207 de News, 265, 276{279
|J|
|K| |L|
LAN, 4 Lapsley, Phil, 290 Latin-1 (jeu de caracteres), 216 LCP, voir Link Control Protocol (PPP) lecteur de News creation des index, 296{298 lecteurs de News con guration, 295 ls de discussions, 295, 296
mail, voir courrier emp^cher le transport UUCP, 258 e maintenance, systeme, 15 Marx, Groucho, 5 materiel communication serie, 53{58 contr^le de ux, 56, 57, 115 o reseau, 39{52 message d'erreur portmapper failure, 156 message d'erreur Network Unreachable, 68 metamail, 217 metrique, routage, voir routage, metrique mgetty, 191 modem, vitesse, 55 montage automatique, 166 d'un volume NFS, 162 lecture seule, 165 systeme de chiers proc, 60 mots de passe et sessions distantes, 139 pour tout le reseau, 153{155 mountd, 164
|M|
INDEX
MRU, 123 mthreads, 297 MTU, 75, 76, 82 multimedia, 203 MX (enregistrement DNS), 95, 209 Nagle, algorithme, 45 named, 83, 88{100 named.boot, 88{91 NCP, voir Network Control Protocols Net-1, 13 Net-2d, 13 Net-2Debugged, 13 Net-2e, 14, 61 Net-3, 14, 61 Net-BSD, 14, 61 netstat, 77{80 Network Control Protocols, 114 news, 261{266 ajouter un groupe, 284 archivage des articles, 279 article, 262 distribution, 265, 267 distributions, 272 echange, 262{266 expiration, 299 expiration des articles, 266, 298 feed, 263 chier active, 266, 267 follow-up, 295 forums, 262 fourniture, 262{266 groupes, 262 history ( chier), 265, 267 ihave/sendme, 265 lecteur, voir lecteurs de News limiter les groupes, 265 lots, 265, 268, 276 message ID, 265 message-ID, 267 messages de contr^le, 283 o cancel, 283 checkgroups, 284 newgroup, 284
343 rmgroup, 284 sendsys, 285 senduuname, 285 version, 285 mise a jour chier active, 284 newsmaster, 271 NNTP, 265 nntpd, 289 pulling, 265, 289 pushing, 265, 289 reception, 271 spoule, 266 suppression vieux articles, 266 supprimer un groupe, 284 tricher, 290 Usenet, 262 version C, voir C News newsmaster, 271 NFS, 159{167 automonteur, 166 depassement de temps, 163 exporter un volume, 164 exports, 164 limitations, 160 montage d'un volume, 162 montage en dur, 163 monter un volume, 160 reduire la taille des blocs, 162 serveur, 160, 164 utilisateurs et groupes, 164, 166 volume en lecture seule, 165 nfsd, 160, 164 NIS, 143{157 bases de donnees, 144 carte, 144{145, 147 cartes passwd, 153{156 client, 147{148, 150{157 code traditionnel, 156 creation des cartes, 148 domaine, 146{147, 150 et le resolver, 84 et mots de passe shadow, 155 localiser le serveur, 146 securite, 146, 149, 156 serveur, 145{150
|N|
344 surnom, 145 NIS+, 147 nn, 298 NNTP, 261, 273, 289 nntp access, 291 nntpd, 290 Noll, Curt Landon, 203 nom canonique, 34, 94 nom d'utilisateur, 271 nom de domaine, 30{32 defaut, 86 NIS et DNS, 62 nom de machine adresse correspondante, 29 alias, 94 ambigu, 210 assignation, 61 canonique, 34, 94 detecter si pas quali e, 235 et nom de domaine, 30 obtenir d'apres l'adresse, 36 quali e, 30 recherche, 32, 96 resolution, 29, 65, 83, 143, 156 UUCP, 178 notation sur 4 quatre octets, 10 nslookup, 96{100 nsswitch.conf, 151{153 numeros de protocoles, 136 NYS, 144{157 obtenir le code source, 14, 61 packet-radio, 21 PAD, 8 pages jaunes, voir NIS PAP, 113, 124, 127{128 partage de chiers, 159 passer un courrier a une commande, 231 passerelle, 8, 24{25 con guration, 72 courrier, 209
INDEX
IP, 44, 71 passwd, 144 real user names, 271 passwd.byname, 153 passwd.byuid, 153 pathalias, 211, 214{215 PC/TCP, compatibilite, 45 pilote D-Link, 47 Ethernet, 47 ISDN, 47 PLIP, 51 PPP, 52, 114 SLIP, 52 pilote, serie, 53{58 ping, 68 PLIP, 51, 72 con guration manuelle, 51 routage, 81 plip1 (interface PLIP), 72 POP, 222 port, voir reseau, port numeros, 12 port parallele Ethernet, 47 IP, 51 port serie contr^le de ux materiel, 56, 57 o chier peripherique, 55 vitesse, 55 portmap, 138 portmapper, demon, 138 PPP, 10, 74, 101, 113{129 adresses IP, 120 assignation dynamique des adresses, 120 async map, 122 authenti cation, 124{128 compression de donnees, 114, 123 deboguage, 119 demon, 114 encodage caracteres de contr^le, 122 o et adresses IP, 115 chiers d'options, 116 chiers de verrouillage, 116
|O| |P|
INDEX
MRU, 123 pilote, 114 proxy ARP, 121 routage, 81, 121{122 route par defaut, 116 script de connexion, 117{119 securite, 124 serveur, 128 utiliser CHAP, 124, 126{127 utiliser PAP, 124, 127{128 ppp0 (interface PPP), 74, 116 pppd, 114{129 .ppprc, 116 primaire (option BIND), 90 /proc/net, 60 programmes de communication, 53 promiscuous, voir Ethernet, mode global protocole, 2 AX.25, 8, 47 CSLIP, 10 Ethernet, 6 IP, voir IP IPX, 46, 47 NNTP, 289 PPP, 10 SLIP, 10 TCP, 10 UDP, 11 UUCP, 195 X.25, 8 protocole de contr^le de liaison (PPP), o 122{123 protocoles, 132 protocols, 135{137 proxy ARP, 73, 81, 121 PTR (enregistrement DNS), 95 peripherique dialout, 55 peripherique d'entree, 55 peripherique de sortie, 55 queue de courrier, 226
345 radio-amateurs, 8, 21 RARP, 21, 22, 45 rc.inet, 59, 66, 68, 164 rcp, 139 Reber, Tobias, 143 reception des news, 271 recherche d'adresses, 36 renvoi courrier, 232, 233 requ^tes inverses, 36{38 e reseau, 1 adresse IP, 62 a chage des connexions, 79 amorcage, 59 commandes en r, 139 connection, 121 connexions, voir reseau, port courrier, 221 inaccessible, 68 installation des binaires, 60 interconnexion, voir interconnexion de reseaux interface, 19 interface de programmation, 12 Internet, 5 mots de passe, 139, 153, 156 news, 286 numeros de port, 12 options du noyau, 43 port, 11{12 protocoles, 2 peripheriques, 39 resolution de noms, 156 services, voir port synchronisation mots de passe, 143 TCP/IP, voir TCP/IP transmission par paquets, 4 UUCP, 2 reseau local, 4 resolution des adresses, 21 resolv.conf, 86 resolver avec un serveur de noms, 84 bibliotheque, 84 con guration, 84{88
|Q| |R|
346 abilite, 88 utilisation de NIS, 84 variables d'environnement, 85 resource record, voir DNS, resource record restreindre l'acces root, 165 restriction d'acces, 134, 291, 293 .rhosts, 139 RIP, voir Routing Information Protocol rlogin, 139 rmail, 188, 207 rnews, 188, 267, 278 routage boucles de courrier, 227 courrier electronique, 209 datagrammes IP, voir IP, routage demon, 27 dynamique, 27, 28, 73, 81, 122 metrique, 27 metrique, 75, 76 passerelle, 72 passerelle IP, 71 protocoles, 27 proxy ARP, 81 redirection ICMP, 28 smart host, 211 table, 25, 78 via PPP, 121 routage dynamique, 27 route, 66, 71, 82 route par defaut du courrier, 211 route, defaut, 21, 72, 116 routed, 27 Routing Information Protocol, 27, 73, 76 RPC, 137{139 correspondance ports/programmes, 138 numeros de programmes, 137 rpc, 137 rpcinfo, 151 RR, voir DNS, resource record RS-232, 56 rsh, 139
rsmtp, 207 RTS/CTS, 56, 115 rustine, 208 reseau noms, 65
INDEX
Salz, Rich, 291 scripts rc, 59 secondaire (option BIND), 90 securite, 112 commandes en r, 139 comptes UUCP, 192{194 Ethernet, 77 faux noms d'h^tes, 84 o NIS, 149, 156 NNTP, 290, 293 PPP, 118, 124{128 serveurs TCP, 133, 134 sessions distantes, 139 SLIP, 105 spoo ng, 84 systeme, 15 UUCP, 188{194 securite systeme, 15 sendbatches, 277 sendmail, 203, 237{260 alias, 248, 250 CF, 238{244, 251{252 courrier dans un chier, 248 DECnet, 250 deliver, 241 emplacement des chiers, 259 emp^cher le transport UUCP, 258 e forcer le courrier, 256 forcer le transport UUCP, 257 generation de sendmail.cf, 251{252 h^te relais, 243 o IDA, 238 installation, 250 mailertable, 245 methodes, 245, 246, 248, 257, 258 nom non quali e, 246, 248, 257, 258 nom quali e, 246, 248
|S|
INDEX
noms locaux, 242, 243 postmaster, 242, 248 programme courrier local, 241 queue, 258 relais, 256 routage, 247 domaine, 256 smart-host, 243 UUCP, 246, 249, 257, 258 running, 252 sendmail.cf, 237 site distant mal con gure, 256 site Internet, 244 site UUCP, 244 statistiques, 259 tables, 238, 243, 249, 254 tests, 252{256 UUCP, 243, 246, 257, 258 version, 250 vider la queue, 258 sendmail.cf, voir sendmail, sendmail.cf serie Becker, 39, 47 serveur inetd, 131{135 tcpd, 134{135 nfsd, 160 NIS, 145 NNTP, 289 sendmail, 252 UUCP, 191{194 ypserv, 145 serveur de noms, 32{34 authoritative, 34 autoritatif, 33, 34, 36 ayant autorite, 33, 34, 36 cache, 91 cache seulement, 34, 101 con guration, 88{100 esclave, 91 primaire, 33, 90 racine, 99 secondaire, 33, 90 synchronisation, 33 veri cation, 96 serveur de noms autoritatif, 33, 34, 92
347 serveur de noms cache seulement, 101 serveur de noms racine, 96 services, 12 bien connus, 12, 135 con guration, 131 et numeros de port, 12 restriction d'acces, 16, 134 services, 132, 135{137 services.byname, 152 setserial, 57 site, 1 sl0 (interface SLIP), 74, 103 slattach, 102 SLIP, 10, 52, 54, 74, 101{112 initialisation par utilisateurs, 105 routage, 81 SLIPDISC, 102 smail, 203, 219{236 adresses locales, 231{234 alias, 233 avec un reseau local, 221{224 bo^te aux lettres, 232 BSMTP, 220, 234 compilation, 226 con g le, 227 directors, 228 diriger un courrier dans un chier, 231 et SLIP/PPP, 230 chier con g, 220{221 chier con g le, 219 chier paths, 229 chier paths, 230 chiers de trace, 224 gestion du courrier d'un domaine, 222 listes de di usion, 234 modes de distribution, 226 noms locaux, 221 noms non quali es, 235 passer un courrier a une commande, 231 postmaster, 227 problemes, 224 queue de courrier, 226
348 renvoi, 232 routage, 228{231 eviter les boucles, 227 Internet, 230 smart host, 221 UUCP, 229, 230 UUCP ou SLIP, 230 routers, 228 SMTP, 223{224, 235 test de la queue, 226 transports, 228 utilitaires, 219 UUCP, 220{221, 229, 230, 234{235 vider la queue, 227 smart host, 211 SMTP, 207 par lots, 188, 207 service, 223 SNARL, 45, 82 SOA (DNS record), 34 SOA (enregistrement DNS), 92 socket, 12 sous-domaine (DNS), 32, 36 sous-reseau (DNS), 63 sous-reseau (IP), 24, 45 sous-reseaux sont locaux, voir SARL45 Space.c, 49, 51 Spencer, Henry, 261 spoo ng, 84 spoule, 3, 171 Start of Authority, 34 Storm, Kim F., 298 synchronisation des serveurs de noms, 33 syslog, 119, 134, 166 systeme de chiers proc , 60 T'so, Theodore, 57 tass, 296 Taylor, Ian, 169 TCP, 10{11 programme wrapper, 134 UUCP, 187 TCP/IP, 4{13, 19{28
INDEX
tcpd, 134{135 telephone, transfert de donnees par, 10 temps de propagation (IP), 68 test con guration reseau, 68, 70 TFTP, 133 tftp, 133 Thummler, Swen, 143 tin, 296 tinygrams, les eviter, 45 tripwire, 17 trn, 297 tty, 54{58 discipline de ligne, 54, 102, 114 telephone, transfert de donnees par, 101, 113
|T|
UART 8250, 56 16450, 56 16550, 56 UDP, 11{12 Universite Groucho Marx, 5, 23 Urlichs, Matthias, 14 Usenet, 262 cartes, 211, 214 uucico, 173 UUCP, 2{4, 53, 169{201 alternates, 183 alternatives, 183 anonyme, 194 avec smail, 220 BNU, 169 calling out, 173 cartes, 211, 214 cartes UUCP, 178 comptes, 191 con guration serveur, 191{195 courrier, 188, 207, 210 creer des comptes, 191{192 esclave, 172 et getty, 191 execution de commandes, 188 chier con g, 180
|U|
INDEX
dial, 186 dialcode, 181 passwd, 192 port, 184 sys, 180 chiers de con guration, 174{177 chiers de verrouillage, 177 forwarding, 3 grades, 171, 184 handshake, 172 HDB, 169, 200 horaires d'appel, 183 hostname, 180 intervalles entre tentatives, 184 job, 171 lignes directes, 188 login, 177 ma^tre, 172 modem, 184, 186{187 news, 268 News Usenet, 188 nom de machine, 178, 180 numero de telephone, 180 priorites, 171, 184 problemes, 198 protocole, 172, 195{197 optimisation, 196 selection, 197 peripherique, 181, 184{186 relais, 190 restriction execution de commandes, 188 horaires, 183 relais, 190 transfert de chiers, 189 repertoire de spoule, 171 script de dialogue, 181{183 securite des comptes, 192{194 serveur, 191 statistiques, 200 sur TCP/IP, 187 systeme distant, 180{184 Taylor, 169 test de sequence d'appels, 172, 193{ 194
349 traces et deboguage, 199{201 transfert de chiers, 189 tracage et deboguage, 173 uucico, 172{173 veri cation, 179, 198 Version 2, 169 UUCP anonyme, 194 uugetty, 191 uux, 278 valider ARP, 77 veri cation activite TCP, 79 atteindre un h^te, 68, 70 o con guration de smail, 225 con guration reseau, 68, 70 connexions reseau, 79 interface Ethernet, 80 interface reseau, 67, 79 NIS, 149, 151 NNTP, 293 noms de machines, 96 parametres tty, 57 ports serie, 57 PPP, 119 queue de courrier, 226 sendmail, 252{256 serveur de noms, 96 table de routage, 78 table de routage IP, 71 tables ARP, 80 UUCP, 179 vitesse, 55 viticulteurs virtuels, 61 wrapper, TCP, 134 X.25, 8 XDR, 137 YP, voir NIS
|V|
350
yp-linux, 143 yp.conf, 150{151 ypbind, 146 ypcat, 145, 151 yps, 143 ypserv, 145 Yutaka, Niibe, 51
INDEX
|Z|