Chapitre 9. Réseau

Table des matières
9.1. Fichiers de configuration du réseau
9.2. Connexion à Internet par PPP
9.3. Mise en place d'un réseau local
9.4. IPNAT
9.5. Connecter deux PC avec un câble série
9.6. NFS

Ce chapitre introduit quelques notions de base sur le réseau telles que la connexion à internet ou à un réseau local (LAN). La connexion entre deux ordinateurs par l'intermédiaire d'un câble est aussi décrite.

Pour que deux ordinateurs puissent échanger des données, certains types de connexions doivent exister entre eux. Par exemple, les deux machines doivent avoir une carte réseau (NIC) reliées entre elles par un câble réseau, éventuellement par l'intermédiaire de concentrateurs (Hub) ou de commutateurs. Ce type de connexion est généralement appelée réseau local (ou LAN: Local Area Network).

L'internet, en revanche, est un réseau général (ou WAN: Wide Area Network): lorsque vous êtes connectés à internet, vous pouvez accéder à des ordinateurs vraiment très éloignés sans avoir besoin de connaitre le détail des connexions intermédiaires.

9.1. Fichiers de configuration du réseau

La liste qui suit présente les fichiers utilisés pour configurer le réseau. Leur utilisation, certains ayant déjà été rencontrés dans les chapitres précédents, seradécrite dans les sections suivantes.

/etc/hosts

Base de données des hôtes locaux. Chaque ligne contient des informations sur un hôte connu comme son adresse, son nom et ses alias. Les petits réseaux peuvent être configurés avec ce fichier sans avoir recours à un serveur de noms.

/etc/resolv.conf

Ce fichier indique de quelle manière les routines qui permettent l'accès au Système de Noms de Domaines doivent opérer. D'une manière générale, il contient la liste des serveurs de noms.

/etc/ifconfig.xxx

Ce fichier permet de configurer automatiquement les cartes réseau au démarrage.

/etc/mygate

Contient l'adresse IP de la passerelle (gateway).

/etc/nsswitch.conf

Fichier de configuration du sélecteur de noms de domaines. Il permet de définir l'ordre dans lequel un programme recherche dans les diverses bases de données un nom, un utilisateur, un groupe... Par exemple, la ligne:

hosts:    files dns	    
indique que la base de données des hôtes provient de deux sources: files (le fichier /etc/hosts local) et DNS (Serveur de Noms de Domaines). La recherche s'effectue d'abord dans le fichier puis avec le DNS.

Il n'est généralement pas nécessaire de modifier ce fichier.

9.2. Connexion à Internet par PPP

Il existe de nombreux types de connexions à internet: cette section explique comment se connecter par l'intermédiaire d'un fournisseur d'accès (FAI) avec un modem et une ligne téléphonique en utilisant le protocole PPP: une configuration très courante. Pour établir la connexion, il faut:

  1. Avoir les informations de connexion du fournisseur.

  2. Modifier le fichier /etc/resolv.conf et vérifier/etc/nsswitch.conf.

  3. Créer les répertoires /etc/ppp et /etc/ppp/peers s'ils n'existent pas.

  4. Créer le script de connexion, le fichier de négociation (chat) et le fichier d'options de pppd.

  5. Créer le fichier d'authentification utilisateur - mot de passe.

Au vu de cette liste, il semble que la procédure soit compliquée et demande beaucoup de travail. En fait, chaque étape est très simple puisqu'elle consiste généralement à modifier, créer ou vérifier quelques petits fichiers texte. Dans l'exemple suivant, nous considérons que le modem est connecté au second port série /dev/tty01 (COM2 sous DOS).

9.2.1. Les informations de connexion

La première chose à faire est d'obtenir du fournisseur d'accès les informations concernant la connexion. C'est à dire:

  • Le numéro de téléphone du point d'accès le plus proche.

  • La méthode d'autentification à utiliser.

  • Votre nom d'utilisateur et mot de passe pour la connexion.

  • L'adresse IP des serveurs de noms.

9.2.2. resolv.conf et nsswitch.conf

Le fichier /etc/resolv.conf doit être renseigné avec les informations données par le fournisseur d'accès, en particulier l'adresse des serveurs de noms ou DNS. Dans notre exemple, nous aurons deux serveurs qui auront les adresses "194.109.123.2" et "191.200.4.52".

Exemple 9-1. resolv.conf

nameserver 194.109.123.2
nameserver 191.200.4.52
#lookup file bind	

Note : la dernière ligne ("lookup file bind") indique que le serveur de noms ne sera utilisé que pour les noms absents du fichier /etc/hosts. Elle est en commentaire car, à partir de NetBSD 1.4, elle ne sert plus à rien: ce type d'information est désormais définit dans le fichier /etc/nsswitch.conf. Le nouveau Selecteur de Service de Noms (Name Service Switch) gère l'accès aux bases de données utilisées par les programmes pour trouver des informations système.

Voici un exemple de fichier /etc/nsswitch.conf.

Exemple 9-2. nsswitch.conf

# /etc/nsswitch.conf
group:         compat
group_compat:  nis
hosts:         files dns 
netgroup:      files [notfound=return] nis
networks:      files
passwd:        compat
passwd_compat: nis	

Note : seule une ligne a été modifiée: celle commençant par le mot " hosts" . Pour la résolution de noms, la recherche s'effectuera dans le fichier hosts puis avec le DNS.

9.2.3. Créer les répertoires de pppd

Les répertoires /etc/ppp et /etc/ppp/peers vont contenir les fichiers de configuration des connexions PPP. Après une nouvelle installation de NetBSD, ils n'existent pas et doivent être créés à la main (mkdir et chmod 700).

9.2.4. Script de connexion et fichier de négociation

Le script de connexion est utilisé comme paramètre sur la ligne de commandes de pppd. Il se trouve dans /etc/ppp/peers et porte généralement le nom du fournisseur d'accès. Par exemple, si le nom de votre fournisseur est " BigNet"  et votre nom d'utilisateur " alain" , le fichier peut être:

Exemple 9-3. Script de connexion

# /etc/ppp/peers/bignet
connect '/usr/sbin/chat -v -f /etc/ppp/peers/bignet.chat'
noauth
user alan
remotename bignet.it	

Dans cet exemple, le script spécifie un fichier chat (fichier de négociation, prononcez " tchatte" ) à utiliser pour la connexion. Les options du script sont détaillées dans la page de manuel pppd(8).

Note : si vous rencontrez des problèmes de connexion, ajoutez la ligne suivante à votre script:

debug
kdebug 4	  
vous aurez une trace des opérations effectuées lorsque le système essaie de se connecter. Reportez-vous aux pages de manuel pppd(8) et syslog.conf(5).

Le script de connexion appelle l'application chat pour s'occuper de la connexion physique (initialisation du modem, numérotation...). Les paramètre de chat peuvent être définis dans le script lui-même mais il est préférable de les mettre dans un autre fichier. Si, par exemple, le numéro de téléphone du point d'accès est le "02 99 99 99 99", voici un exemple de fichier de négociation:

Exemple 9-4. Fichier de négociation (chat)

# /etc/ppp/peers/bignet.chat
ABORT BUSY
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
'' ATDT0299999999
CONNECT ''	

Note : si vous rencontrez des problèmes avec ce fichier, vous pouvez essayer de vous connecter manuellement à l'aide du programme cu et vérifier les messages exacts que vous obtenez. Voyez cu(1).

9.2.5. Authentification

Pendant la procédure d'authentification, les deux systèmes vérifient l'identité de l'autre. Vous n'êtes, en principe, pas supposé vérifier celle du fournisseur mais, lui, doit vérifier la votre. Deux méthodes existent:

  • login

  • PAP/CHAP

La plupart des fournisseurs d'accès utilisent la méthode PAP/CHAP.

9.2.5.1. Authentification avec PAP/CHAP

Les informations utiles se trouvent dans le fichier /etc/ppp/pap-secrets pour PAP et dans /etc/ppp/chap-secrets pour CHAP. Les lignes sont de la forme:

utilisateur * mot-de-passe        

Par exemple:

alan * pZY9o        

Note : pour des raisons de sécurité, le possesseur des fichiers pap-secrets et chap-secrets doit être root et avoir les permissions " 600" .

9.2.5.2. Authentification avec login

Ce type d'authentification n'est plus très utilisé de nos jours. Si votre fournisseur d'accès l'utilise, votre nom d'utilisateur et votre mot de passe doivent se trouver dans le fichier de négociation (chat) et non dans les fichiers PAP/CHAP car celui-ci simule une connexion (login) interractive. Dans ce cas, donnez les permissions adéquates au fichier de négociation.

Voici un exemple de fichier de négociation pour une authentification avec login:

Exemple 9-5. Fichier de négiciation avec login

# /etc/ppp/peers/bignet.chat
ABORT BUSY
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
'' ATDT0299999999
CONNECT ''
TIMEOUT 50
ogin: alan
ssword: pZY9o	  

9.2.6. pppd options

La dernière chose qu'il nous reste à faire est d'établir le fichier d'options de pppd: /etc/ppp/options (chmod 644).

Exemple 9-6. /etc/ppp/options

/dev/tty01
lock
crtscts
57600
modem
defaultroute
noipdefault	

Consultez la page de manuel pppd(8) pour connaitre la signification des options.

9.2.7. Tester le modem

Avant d'activer le lien, nous allons rapidement tester le modem afin de vérifier s'il est bien connecté à l'ordinateur et qu'il communique correctement. Le programme cu peut être utilisé à cette fin, comme dans l'exemple qui vient:

  1. Créez le fichier /etc/uucp/port contenant les lignes suivantes:

    type modem
    port modem
    device /dev/tty01
    speed 115200	    
    (substitutez les valeurs avez les votres, si elles sont différentes).

  2. Tapez la commande cu -p modem pour commencer à envoyer des commandes au modem. Par exemple:

    # cu -p modem
    Connected.
    ATZ
    OK
    ~.
    
    Disconnected.
    #	    
    Dans cet exemple, la commande de réinitialisation (ATZ) a été envoyée au modem. Il a répondu " OK" : la communication fonctionne. Pour quitter cu, tapez "~" (tilde) suivi de "." (point), comme dans l'exemple.

9.2.8. Activer le lien

Maintenant que tout est prêt, nous pouvons lancer la connexion avec la commande:

# pppd call bignet      

bignet est le nom du script de connexion décrit plus haut. Pour visualiser les messages de connexion de pppd, tapez la commande suivante:

# tail -f /var/log/messages      

Pour raccrocher, effectuez un kill -HUP de pppd.

9.2.9. Utiliser un script pour connecter et déconnecter

Lorsque la connexion fonctionne correctement, nous pouvons écrire des scripts pour éviter d'avoir à retaper les commandes à chaque fois. Nous allons écrire deux scripts nommés, par exemple, connecter et raccrocher.

connecter sert à se connecter chez le fournisseur d'accès.

Exemple 9-7. connecter

#!/bin/sh
MODEM=tty01
POP=bignet
if [ -f /var/spool/lock/LCK..$MODEM ]; then
  echo ppp est d\éj\à actif...
else
  pppd call $POP
  tail -f /var/log/messages
fi	

raccrocher sert à fermer la connexion et raccrocher.

Exemple 9-8. raccrocher

#!/bin/sh
MODEM=tty01
if [ -f /var/spool/lock/LCK..$MODEM ]; then
  echo -f killing pppd...
  kill -HUP `cat /var/spool/lock/LCK..$MODEM`
  echo done
else
  echo ppp n'est pas actif
fi	

Les deux scripts tirent avantage du fait que, lorsque pppd est actif, il crée un fichier LCK..tty01 dans le répertoire /var/spool/lock. Ce fichier contient le numéro de processus de pppd.

Les deux scripts doivent être exécutables:

# chmod u+x connecter raccrocher      

9.3. Mise en place d'un réseau local

Le réseau est l'un des points forts d'Unix et donc de NetBSD: le réseau est à la fois puissant, facile à mettre en place et peu cher car il ne nécessite aucun investissement logiciel supplémentaire ni l'acquisition d'un serveur. La Section 9.4 explique comment configurer NetBSD pour qu'il se comporte comme une passerelle vers un réseau: avec IPNAT, tous les hôtes d'un réseau peuvent atteindre l'internet à partir d'une unique connexion chez un fournisseur d'accès étable par la passerelle. La seule attention à apporter concerne l'acquisition de cartes réseau reconnues par NetBSD (reportez-vous au fichier INSTALL qui donne la liste du matériel supporté).

Tout d'abord, les cartes réseaux doivent être installées puis branchées à un concentrateur, un commutateur ou directement (voir Figure 9-1).

Ensuite, vérifiez que les cartes réseaux sont reconnues par le noyau. Pour celà, servez-vous de la commande dmesg. Dans l'exemple suivant, le noyau a correctement reconnu un clone NE2000:

...
ne0 at isa0 port 0x280-0x29f irq 9
ne0: NE2000 Ethernet
ne0: Ethernet address 00:c2:dd:c1:d1:21
...    

Si la carte n'est pas reconnue, vérifiez que le pilote est bien activé dans le fichier de configuration du noyau et que l'IRQ de la carte correspond à celui qu'attend le noyau. Dans l'exemple, c'est la ligne isa NE2000 qui doit être activée dans le fichier de configuration. Le noyau s'attend à ce que la carte soit à l'IRQ 9.

...
ne0 at isa? port 0x280 irq 9 # NE[12]000 ethernet cards
...    

Si la configuration de la carte est différente, elle ne sera probablement pas reconnue au démarrage. Dans ce cas, vous avez le choix entre, soit changer la configuration du noyau et de le recompiler, soit changer les paramètrages de la carte (généralement à l'aide d'une disquette de paramètrage ou, pour les ancien matériels, à l'aide de cavaliers sur la carte).

La ligne suivante montre la configuration actuelle de la carte:

# ifconfig ne0
ne0: flags=8822<BROADCAST,NOTRAILERS,SIMPLEX,MULTICAST> mtu 1500
	  media: Ethernet 10base2    

La configuration logicielle de la carte est très facile. L'adresse IP "192.168.1.1" (généralement réservée aux réseaux internes) est assignée à la carte de cette façon:

# ifconfig ne0 inet 192.168.1.1 netmask 0xffffff00    

En répétant la commande précédente, nous avons désormais un résultat différent:

# ifconfig ne0
ne0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	  media: Ethernet 10base2
	  inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255    

L'affichage d'ifconfig a changé: l'adresse IP apparait ainsi que deux nouvelles indications, " UP"  et " RUNNING" . Si l'interface n'est pas " UP" , elle ne sera pas utilisée pour l'envoi de paquets.

La machine possède l'adresse "192.168.1.1" qui se trouve dans la plage d'adresses réservées aux réseaux internes et, donc, inaccessibles depuis internet. La configuration est terminée et doit être testée. S'il existe une autre machine active sur le réseau, un "ping" peut être essayé. Par exemple, si "192.168.1.2" est l'adresse de cette deuxième machine:

# ping 192.168.1.2
PING ape (192.168.1.2): 56 data bytes
64 bytes from 192.168.1.2: icmp_seq=0 ttl=255 time=1.286 ms
64 bytes from 192.168.1.2: icmp_seq=1 ttl=255 time=0.649 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=255 time=0.681 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=255 time=0.656 ms
^C
----ape PING Statistics----
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.649/0.818/1.286/0.312 ms    

Avec le paramètrage actuel, au prochain démarrage, il faudra recommencer la configuration de la carte réseau. Pour éviter d'avoir à la faire à chaque fois, il y a deux choses à faire: premièrement créer le fichier /etc/ifconfig.ne0 contenant la ligne suivante:

inet 192.168.1.1 netmask 0xffffff00    

Deuxièmement, dans le fichier /etc/rc.conf, mettre l'option suivante:

auto_ifconfig=YES    

Au prochain démarrage, la carte réseau sera automatiquement configurée.

Le fichier /etc/hosts est la base de données des adresses IP et des nom d'alias: Il doit contenir les adresses de tous les hôtes du réseau interne. Par exemple:

#	$NetBSD: hosts,v 1.4 1997/01/09 05:33:14 mikel Exp $
#
# Base de données des hôtes
# Ce fichier doit contenir les adresses et alias
# de toutes les machines qui partagent ce fichier.
# Il n'est utilisé que par ifconfig et d'autres opérations
# avant que le serveur de noms soit en service.
#
#
127.0.0.1		localhost
#
# RFC 1918 indique que ces réseaux sont "internes".
# 10.0.0.0	10.255.255.255
# 172.16.0.0	172.31.255.255
# 192.168.0.0	192.168.255.255

192.168.1.1	ape.insetti.net ape
192.168.1.2	vespa.insetti.net vespa    

Le fichier /etc/nsswitch.conf doit être modifié comme expliqué dans l'Exemple 9-2.

Note : dans cet exemple, le fichier /etc/ifconfig.ne0 a été créé car la carte réseau a été reconnue en tant que ne0 par le noyau. Si vous utilisez un adaptateur différent, remplacez ne0 par le votre.

En résumé, pour configurer un réseau, il faut : tout d'abord que les cartes réseaux soient installées et physiquement connectées. Ensuite qu'elles soient configurées (ifconfig). Enfin que les fichiers /etc/hosts et /etc/nsswitch.conf soient adaptés. Ce type de gestion de réseau est très simplifié et n'est destiné qu'à de petits réseaux sans besoins sophistiqués.

9.4. IPNAT

Derrière les mystérieuses intiales IPNAT, se cache le Protocole de Traduction d'Adresses Réseau IP (Internet Protocol Network Address Translation, on trouvera aussi NAT tout court). Il permet de connecter un réseau interne à un vrai réseau (internet). Cela veut dire qu'avec une " vraie"  adresse IP, statique ou dynamique, appartenant à une passerelle possédant IPNAT, il est possible de donner accès à internet simultanément à tous les ordinateurs du réseau interne.

Quelques exemple d'utilisation d'IPNAT se trouvent dans le répertoire /usr/share/examples/ipf. Regardez BASIC.NAT et nat-setup.

Le paramètrage de l'exemple décrit dans cette section est détaillé par la Figure 9-1: host 1 peut se connecter à internet en appelant un fournisseur d'accès qui lui donne une adresse IP dynamique. host 2 et host 3 ne peuvent communiquer avec internet avec un paramètrage normal. IPNAT leur permet de le faire: host 1 joue le rôle d'une passerelle pour host 2 et 3. NdT: ISP est leFournisseur d'Accès à Internet.

Figure 9-1. Réseau avec passerelle

9.4.1. Configurer la passerelle/pare-feu

Pour que NAT soit utilisable, la ligne "pseudo-device ipfilter" du fichier de configuration du noyau doit être activée. Pour vérifier si elle l'est dans le noyau actuel:

# sysctl net.inet.ip.forwarding
net.inet.ip.forwarding = 1      

Si le résultat est "1", comme dans l'exemple précédent, l'option est activée. Autrement, si le résultat est " 0" , elle ne l'est pas. Vous pouvez faire deux choses:

  1. Compiler un nouveau noyau dont l'option GATEWAY (passerelle) est activée par défaut.

  2. Activer l'option du noyau actuel avec la commande:

    # sysctl -w net.inet.ip.forwarding=1	    

    Si vous placez cette commande dans un script de démarrage (par exemple /etc/rc.local) elle sera exécutée à chaque démarrage de la machine.

Le reste de cette section explique comment mettre en place une configuration NAT qui démarre à chaque fois que la connexion avec le fournisseur d'accès se fait par un lien PPP. De cette manière, tous les ordinateurs du réseau familial (par exemple) pourront se connecter à internet par la machine passerelle, même s'ils ne sont pas sous NetBSD.

Tout d'abord, créez un fichier /etc/ipf.conf vide à l'aide de la commande:

# touch /etc/ipf.conf      

Ensuite, créez le fichier /etc/ipnat.conf contenant les règles suivantes:

map ppp0 192.168.1.1/24 -> 0/32 proxy port ftp ftp/tcp
map ppp0 192.168.1.1/24 -> 0/32 portmap tcp/udp 40000:60000
map ppp0 192.168.1.1/24 -> 0/32      

192.168.1.1/24 sont les adresses réseau qui doivent être gérées (dans notre cas, 192.168.1.0/24 est aussi valable). La première ligne du fichier est optionnelle: elle permet le ftp actif par la passerelle. La seconde ligne est utilisée pour gérer correctement les paquets tcp et udp : la traduction des ports (portmap) est nécessaire à cause de la traduction n vers 1. La troisième ligne permet d'utiliser ICMP, ping...

Dans le fichier /etc/rc.conf, portmap doit être activé (ipfilter n'est pas nécessaire).

Créez un fichier /etc/ppp/ip-up. Il sera appelé à chaque fois que le lien PPP sera activé.

#!/bin/sh
# /etc/ppp/ip-up
/usr/sbin/ipnat -F
/usr/sbin/ipnat -C
/sbin/ipf -E
/usr/sbin/ipnat -f /etc/ipnat.conf      

Créez un fichier /etc/ppp/ip-down. Il sera appelé à chaque fois que le lien PPP sera fermé.

#!/bin/sh
# /etc/ppp/ip-down
/sbin/ipf -D
/usr/sbin/ipnat -C      

Ces deux fichiers, ip-up et ip-down doivent être exécutables:

# chmod u+x ip-up ip-down      

La machine passerelle est désormais prête.

9.4.2. Configurer les clients

Créez un fichier /etc/resolv.conf, comme sur la machine passerelle.

Tapez la commande suivante:

# route add default 192.168.1.1      

192.168.1.1 est l'adresse de la passerelle mise en place à la section précédente.

Bien entendu, vous n'aurez pas envie de taper cette commande à chaque fois. Il nous faut donc définir la "route par défaut" (defaultroute) dans le fichier /etc/rc.conf ou bien, ce qui revient au même, écrire l'adresse de la passerelle dans le fichier /etc/mygate. La route par défaut sera définie automatiquement pendant l'initialisation du système à l'aide du contenu de /etc/mygate ou de l'option " defaultroute"  qui sera utilisé comme argument de la commande route add default.

Si l'ordinateur client n'est pas sous NetBSD, la configuration sera différente. Pour un PC sous Windows, la passerelle se déclare, dans les propriétés du protocole TCP/IP, avec l'adresse de la passerelle NetBSD. Sur Macintosh, l'adresse se déclare dans le tableau de bort TCP/IP dans le champ "Adresse du routeur".

C'est tout ce qu'il y a à faire sur les ordinateurs clients.

9.4.3. Quelques commandes utiles

Les commandes suivantes peuvent être utiles pour diagnostiquer des problèmes:

ping

netstat -r

Affiche les tables de routage (similaire à route show).

traceroute

Sur le client, il affiche la route suivie par les paquets vers leur destination.

tcpdump

Sur la passerelle, permet de visualiser le traffic TCP/IP.

9.5. Connecter deux PC avec un câble série

S'il vous faut transférer des fichiers d'un ordinateur à l'autre et que ceux-ci ne sont pas connectés à un réseau, il existe une solution pratique quand la copie sur disquette s'avère laborieuse et dépassée: un réseau peut être mis en place à l'aide d'un câble série (un câble null modem). La présente section décrit quelques configurations.

9.5.1. Connecter NetBSD avec BSD ou Linux

Le cas le plus simple est lorsque les deux machines tournent sous NetBSD. Une connexion peut être établie grâce au protocole SLIP. Sur la première machine, tapez:

# slattach /dev/tty00
# ifconfig sl0 inet 192.168.1.1 192.168.1.2
      

Sur la seconde machine, tapez:

# slattach /dev/tty00
# ifconfig sl0 inet 192.168.1.2 192.168.1.1
      

Vous pouvez alors tester la configuration avec ping. Par exemple, sur le second ordinateur, tapez:

# ping 192.168.1.1      

Si ça marche, vous avez alors un réseau actif entre les deux machines. Des commandes telles que ftp, telnet et d'autres peuvent être exécutées. Un nom de machine peut être inscrit dans le fichier /etc/hosts.

  • Dans notre exemple, les deux PC utilisent le premier port série (/dev/tty0). Inscrivez le périférique approprié si vous en utilisez un autre.

  • Les adresses IP comme 192.168.x.x sont réservées pour des réseaux " internes" . Le premier PC a l'adresse 192.168.1.1 et le second 192.168.1.2.

  • Pour avoir une connexion plus rapide, vous pouvez spécifier l'option -s speed à slattach.

  • ftp ne peut être utilisé que si inetd est actif et que le serveur ftpd est lancé.

Linux : si un des deux PC tourne sous Linux, les commandes sont légèrement différentes (uniquement sur la machine Linux). Considérons qu'elle possède l'adresse 192.168.1.2, les commandes suivantes sont nécessaires:

# slattach -p slip -s 115200 /dev/ttyS0 &
# ifconfig sl0 192.168.1.2 pointopoint 192.168.1.1 up
# route add 192.168.1.1 dev sl0
	  
N'oubliez pas le "&" à la fin de la première commande.

9.5.2. Connecter NetBSD et Windows NT

NetBSD et Windows NT peuvent (souvent) être facilement mis en réseau avec un câble série. Le principe consiste à créer une connexion "Accès réseau à distance" sous WindowsNT et de démarrer pppd sous NetBSD.

Démarrez pppd en tant que root, après avoir créé un fichier .ppprc dans le répertoire /root. Utilisez l'exemple suivant comme modèle:

connect '/usr/sbin/chat -v CLIENT CLIENTSERVER'
local
tty00  
115200
crtscts
lock   
noauth
nodefaultroute
:192.168.1.2      

La première ligne sera expliquée plus loin. 192.168.1.2 est l'adresse IP qui sera assignée, par NetBSD, à la machine WindowsNT. tty00 est le port série utilisé pour la connexion (premier port série).

Du côté de Windows NT, un périférique câble série (ou null modem) doit être installé à partir du panneau de configuration (icône Modems) et une connexion Accès réseau à distance doit être créée avec ce modem. Le pilote null modem (câble série) est standard sous Windows Nt 4 mais n'est pas 100% null modem: lorsque le lien est activé, Windows envoie le mot CLIENT et s'attend à recevoir la réponse CLIENTSERVER. C'est la raison de la présence de la première ligne du fichier .ppprc: chat doit répondre à Windows lorsque la connexion est activée sinon elle sera refermée.

Dans la configuration d'Accès réseau à distance, il faut préciser: utiliser le câble série, numéro de téléphone " 1"  (qui n'est pas utilisé), serveur PPP, n'activer que le protocole TCP/IP, utiliser l'adresse IP et le serveur de nom du serveur (donc de NetBSD). Choisissez le contrôle de flux matériel et les paramètre de communication à 115200 8N1.

Maintenant, tout est prêt pour établir la connexion.

  • Connectez les deux ordinateurs avec le câble série (null modem).

  • Lancez pppd sur NetBSD. Pour visualiser les messages de pppd: tail -f /var/log/messages.

  • Activez la connexion Accès réseau à distance de Windows NT.

9.5.3. Connecter NetBSD et Windows 95

La mise en place pour Windows 95 est la même que celle pour Windows NT: Accès réseau à distance sur Windows 95 et serveur PPP sur NetBSD. La plupart (si ce n'est toutes) des versions de Windows 95 ne possède pas de pilote câble série, ce qui rend les choses un peu plus compliquées. La solution la plus simple est de trouver un tel pilote sur internet (c'est un petit fichier .INF) et répéter les mêmes opérations que pour Windows NT. La seule différence est que la première ligne du fichier .ppprc de NetBSD (celle qui appelle chat) peut être enlevée.

Si vous ne trouvez pas de pilote câble série pour Windows 95, voici une astuce:

  • Créez une connexion Accès réseau à distance, comme le décrit la Section 9.5.2 mais en utilisant un des "Modem standard".

  • Dans .ppprc, remplacez la ligne qui fait appel à chat par:

    connect '/usr/sbin/chat -v ATH OK AT OK ATE0V1 OK AT OK ATDT CONNECT'	    

  • Etablissez la connexion comme le décrit la Section 9.5.2.

Ici, le programme chat, appelé lorsque la connexion est établie, simule ce que Windows 95 appelle un "Modem standard". Il renvoie à Windows les réponses que feraient un modem standard. Dès que Windows 95 envoie une commande de modem, chat répond " OK" .

9.6. NFS

Maintenant que le réseau est en état de fonctionnement, il est possible de partager des fichiers et des répertoires avec les autres ordinateurs, en utilisant NFS. Du point de vue du partage de fichiers, l'ordinateur qui donne accès à ses données est appelé un serveur. Les ordinateurs qui utilisent ces données sont appelés des client. Un ordinateur peut être à la fois client et serveur.

Un client peut accéder à un répertoire distant par NFS si:

La commande mount possède un riche répertoire d'options concernant les répertoires distants mais elle ne sont pas vraiment intuitives (c'est le moin qu'on puisse dire).

9.6.1. Exemple de mise en place NFS

Avertissement: j'ai tiré cet exemple plutôt complexe d'une liste de diffusion de NetBSD et je ne l'ai pas testé. Il doit cependant donner une idée de la façon dont fonctionne NFS.

Le scénario est le suivant: cinq machines client (cli1, ..., cli5) partagent des répertoires sur le serveur (buzz.toys.org). Certains des répertoires exportés sont réservés à certains clients et les autres sont accessibles à toutes les machines. Tous les clients démarrent depuis le serveur et doivent monter les répertoires.

Les répertoires à exporter du serveur sont:

/export/cli?/root

Les cinq répertoires racine des cinq client. Chaque machine possède sont propre répertoire racine.

/export/cli?/swap

Les cinq répertoires de mémoire virtuelle (swap) pour les cinq clients.

/export/common/usr

Le répertoire /usr commun à tous les clients.

/usr/src

Le répertoire /usr/src commun à tous les clients.

Les fichiers suivants existent sur le serveur:

/dev/ra0a on /
/dev/ra0f on /usr
/dev/ra1a on /usr/src
/dev/ra2a on /export      

Chaque client a besoin des systèmes de fichiers suivants:

buzz:/export/cli?/root on /
buzz:/export/common/usr on /usr
buzz:/usr/src on /usr/src      

La configuration du serveur est la suivante:

# /etc/exports
/usr/src -network 123.45.67.0 -mask 255.255.255.0
/export  -alldirs -maproot=root -network 123.45.67.0 -mask 255.255.255.0      

Sur les clients, chaque fichier /etc/fstab contient:

buzz:/export/cli?/root / nfs rw
buzz:/export/common/usr /usr nfs rw,nodev,nosuid
buzz:/usr/src /usr/src rw,nodev,nosuid      

Dans cet exemple, chaque caractère "?" doit être remplacé par le numéro du client correspondant.