:: News .:. Documents .:. Forum .:. Downloads .:. Bibliographie .:. Liens .:. Contact  :: 


Home
  :. News
  .: Documents
    .: Notions
    .: Protocoles
    .: Sécurité
    .: Architecture
    .: Prog
    .: Systèmes
  :. Forum
  .: Downloads
  :. Bibliographie
  .: Liens
  :. Contact

Chat

  Nickname:


irc: #guill.net

Forum



 
Linux : le réseau et les services  
 

 

La configuration du réseau peut être activée en passant par l'utilitaire YaST.

Dans le reste de ce chapitre on considère que le réseau est en place et fonctionne correctement. Pour vérifier que la carte réseau à bien été reconnue par le noyau il suffit de taper la commande dmesg pour vérifier qu'il existe une entrée avec eth0.

Dmesg | grep eth0
eth0: RealTek RTL-8029 found at 0xe800, IRQ 11, 00:00:B4:5F:CC:6C

Ensuite on peut vérifier que la carte est bien configurée avec la commande ifconfig.

eth0      Link encap:Ethernet  HWaddr 00:00:B4:5F:CC:6C
          inet addr:213.56.242.100  Bcast:213.56.243.255  Mask:255.255.252.0
          UP BROADCAST NOTRAILERS RUNNING  MTU:1500  Metric:1
          RX packets:8119 errors:0 dropped:0 overruns:0 frame:0
          TX packets:288 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          Interrupt:11 Base address:0xe800

Enfin les routes par la commande route.

Kernel IP routing table
Destination     Gateway     Genmask     Flags Metric  Ref   Use Iface
192.168.1.0      *      255.255.255.0     U      0     0     0   eth0
loopback         *          255.0.0.0     U      0     0     0   lo
default          *            0.0.0.0     UG     0     0     0   eth0

Les quatre fichiers importants que l'on va retrouver tout au long de ce chapitre sont /etc/hosts, /etc/inetd.conf, /etc/services et tcpd.

/etc/hosts : permet d'associer à une adresse ip un ou plusieurs nom(s)de machine ce fichier est constituer de la façon suivante :
xx.xx.xx.xx <nom machine> <autre nom machine>

/etc/sevices sert a associer un nom de service à un numéro de port :
ftp-data          20/tcp      # File Transfer [Default Data]
ftp               21/tcp      # File Transfer [Control]

/etc/lnetd.conf sert a associer à un service un daemon spécifique. Par exemple
 ftp stream tcp nowait root /usr/sbin/tcpd proftpd

Tcpd sert a permettre ou non l'accès a certains services en fonction  de la provenance de la requête. Pour cela il utilise deux fichiers de configuration:  host.allow (permission) et host.deny (interdiction).

Les connections réseau simples

La premiere étape est de verifier le bon fonctionnement du réseau. Pour cela il suffit de faire un ping sur une des machines du réseau.
Ping -c 4 xx.xx.xx.xx

Ensuite nous pouvons  réaliser une connexion via telnet (pas de cryptage) ou ssh (cryptage). Pour cela il suffit d'entrer la commande telnet <ip de la machine à contacter > ou ssh <ip de la machine> -l >nom d'utilisateur distant> dans un terminal, et ensuite son login et son passwd sur la machine distante (qui n'est peut être pas lié à celui sur la machine locale). Les commandes sont exécutées sur la machine distante et les résultats s'affichent sur la machine locale dans le terminal.

Maintenant on va définir, que l'affichage (DISPLAY) s'effectue non plus sur la machine distante mais sur la machine locale. Pour cela on exporte la variable DISPLAY par:
export DISPLAY=<ip local>:0.0

Ensuite si on exécute une commande tel que netscape sur la machine distante on obtient un message d'erreur comme quoi Xlib refuse la connexion. pour corriger cette erreur il faut déclarer que la machine distante a le droit d'afficher en local. Pour cela il suffit dans un terminal local de taper la commande xhost +<nom de la machine distante>.

Pour vérifier les ports « coutant » il suffit de taper la commande : netstat -lpd

Et pour voir les connections actives : netstat -nt

Network File System

NFS permet le partage de fichiers via le réseau. Le montage sur un poste client se fait comme si l'on montait une partition locale sur un répertoire.

Conditions préalables

Tout d'abord il faudra compiler un noyau avec le système de fichiers NFS  (soit compilé dans le noyau, soit disponible sous forme de module).
Pour que nfs fonctionne sur la machine il est nécessaire que le daemon portmap soit actif sur le client et le serveur. On peut le verifier en tapant la commande
ps ax  | grep portmap

Le serveur NFS

Pour exporter des fichiers vers une autre machine il suffit de modifier le fichier /etc/exports comme suit :

<répertoire à exporter> <machine> (option)
option: rw   en lecture/écriture (par défaut en lecture seule).
No-all-squash pas de transformation de l'utilisateur en nobody.nogroup.
No-root-squash pas de transformation de root en nobody.nogroup.

et une fois le fichiers modifié il faut relancer le daemon par la commande rcnfsserver restart

Exemple de fichier exports.
/export/BE-linux
/export/BE2 <machine>(rw ,no-all-squash)

La ligne ci-dessus donne aux machines un accès en lecture sur /export/BE-linux et un accès en lecture/écriture à <machine>. L'option no-all-squash est spécifique à la SuSE qui par défaut transforme tous clients en nobody.nogroup (y compris root).

Installer un client NFS

Maintenant, à l'invite (prompt) de root, entrer la commande mount appropriée et le système de fichiers apparaîtra. Continuons avec l'exemple suivant :

mount <machine>:<répertoire distant> <répertoire local>
<machine>étant le nom que vous avez donnez au serveur dans votre fichier hosts.

Le système de fichiers est maintenant disponible et nous pouvons exécuter les commandes cd, ls et regarder les fichiers individuellement. Vous remarquerez que ce n'est pas aussi rapide qu'avec un système de fichiers local, mais beaucoup plus pratique que ftp. Si, au lieu de monter le système de fichiers, mount renvoie un message d'erreur comme mount failed, reason given by server: Permission denied alors le fichier /etc/exports est incorrect, ou vous avez oublié de lancer rcnfsserver après avoir modifié le fichier exports. S'il dit mount: clntudp update: RPC: Program not registered cela signifie que nfsd ou mountd ne tourne pas sur le serveur .

Pour vous débarrasser du système de fichiers, vous pouvez faire :
umount <répertoire local>

Le serveur FTP

Le plus classique des services proposé est le FTP. Nous allons mettre en place proftpd

Pour la mise en place du service il suffit de modifier le fichier de configuration /etc/proftpd.conf. Ce fichier est relativement complet en ce qui concerne sa configuration grâce aux commentaires qu'il contient. De plus vous avez un complément d'information dans /usr/doc/package/proftpd.

Récapitulatif de la chaîne pour un serveur ftp :

Network Information Server

"NIS était formellement connu sous le nom de Yellow Pages (YP) (Pages Jaunes) mais le nom Yellow Pages(tm) est une marque enregistrée au Royaume Uni par British Telecom et ne peut être utilisée sans autorisation."

NIS est l'abréviation pour Network Information Service (Service d'Information Réseau). Son but est de fournir des informations, qui doivent être connues sur l'ensemble du réseau, à toutes les machines connectées. Les informations susceptibles d'être distribuées par NIS sont :

  • noms de login, mots de passe, répertoires d'ouverture (/etc/passwd)
  • renseignements sur les groupes d'utilisateurs (/etc/group)

Par exemple, si votre mot de passe et les informations s'y rattachant sont enregistrés dans la base de données NIS, vous pourrez vous loguer sur toutes les machines du réseau sur lesquelles un client NIS est lancé.

A l'intérieur d'un réseau, il doit y avoir au moins une machine faisant office de serveur NIS maître.

Les serveurs esclaves n'ont qu'une copie de la base de données et la reçoivent du serveur NIS maître lorsque des changement sont effectués dans la base de données. En fonction du nombre de machines et de la fiabilité de votre réseau, vous pouvez décider d'installer un ou plusieurs serveurs esclaves. Lorsqu'un serveur NIS tombe en panne ou bien s'il est trop long pour répondre aux requêtes, un client NIS connecté à ce serveur va alors essayer d'en trouver un en état de marche.

Les bases de données NIS sont au format DBM, un dérivé des bases de données ASCll. Par exemple, les fichiers /etc/passwd et /etc/group peuvent être directement convertis dans le format DBM en utilisant un programme de conversion ASCll-to-DBM (makedbm est inclus dans les programmes du serveur). Le serveur NIS maître devrait avoir les deux types: la base ASCll et la base DBM.

Les serveurs esclaves seront avertis de tout changement dans les tables NIS (grâce au programme yppush et effectueront automatiquement les changements nécessaires pour synchroniser leurs bases de données. Les clients NIS n'ont pas besoin d'effectuer cette opération puisqu'il communiquent tout le temps avec le serveur NIS pour lire les informations rangées dans les bases de données DBM.

Dans le cas d'un serveur, nous allons juste transformer la machine en tant que serveur maître NIS. Pour cela il faut définir un nom de domaine par la commande domainname nis.domain. Ensuite on va créer notre domaine par la commande /usr/lib/yp/ypinit -m (l'option -m définit le serveur NIS maître. Le fichier Makefiles situé dans le répertoire /var/yp définit les fichiers qui seront exportés par NIS. Il ne reste plus qu'a lancer le serveur NIS avec la commande rcypserv start.

Dans le cas d'un client, vous n'aurez besoin que des programmes clients (ypbind, ypwhich, ypcat, yppoll, ypmatch). Le programme le plus important est ypbind. Ce démon doit toujours être lancé, c'est-à-dire qu'il doit toujours apparaître dans la liste des processus. Comme c'est un démon, il doit être lancé au démarrage de votre machine dans le fichier de démarrage ( rcypclient ) . Dès que ypbind fonctionne, votre système devient un client NIS.

Vous pouvez également lancer rpcinfo -u localhost ypbind. Cette commande devrait alors produire :
program 100007 version 2 ready and waiting

Vous devriez alors être capable d'utiliser les programmes clients tels que ypcat, etc. Par exemple, ypcat -k passwd vous donne la liste des mots de passe ( chiffrés !) de la base de données NIS.

Ensuite pour intégrer notre machine dans un ensemble NIS il suffit de lancer yast, administration du système, configuration réseau, configurer le client yp et de remplir les deux champs.

Le fichier nsswitch.conf quand a lui définit l'ordre dans lequel on effectue les recherches.

# passwd: db files nis
# shadow: db files nis
# group: db files nis
passwd:, compat
group: compat
hosts: files nis dns
networks: files nis dns
services: db files nis
protocols: db files nis
rpc: db files
ethers: db files netmasks: files
netgroup: files nis
bootparams: files
automount: files nis
aliases: files

Dans ce fichier on voit apparaître un paramètre qui s'appelle automount. Il permet grâce à un fichier /etc/auto.master de définir un point de montage automatique. C'est à dire que le montage est effectuer seulement au moment ou l'on accède à ce répertoire.

Serveur Http (Apache)

Apache est le serveur http classique sous Linux. Il se configure grâce au fichier de configuration /etc/httpd/httpd.conf qui est commenté. Il est divisé en 3 partie.

  • La première concerne le serveur apache et ses paramètres.
  • La seconde définit les paramètres du serveur de base tel que DocumentRoot (racine du document), les alias,...
  • La troisième concerne les serveurs virtuels.

Pour que les modifications soient prises en compte il faut relancer le serveur avec la commande rcapache restart.

De plus vous pouvez définir des password en créant un fichier .htaccess dans le répertoire voulu et en y ajoutant :

AuthUserFile .htpasswd
AuthName ByPassword
AuthType Basic
<Limit GET>
require user toto
</Limit>

Ensuite il ne reste plus qu'a aller dans /usr/local/httpd (à moins que vous ayez modifier l'emplacement des fichiers de configuration de apache) , à lancer la commande htpasswd -c .htpasswd toto et à rentrer le password pour toto.

Il suffit de lancer netscape et de mettre comme adresse le nom de la machine ou le serveur tourne. Vous pouvez aussi activer les alias de vérification de apache.

Domaine Name Serveur (DNS)

Un brin de théorie

Le service DNS est un système organisé de manière hiérarchique, sous forme d'arbre. La racine est désignée par "." et s'appelle "la racine". En dessous de . se trouvent un certain nombre de TLD (Top Level Domains); les plus connus sont ORG, COM, EDU, NET et FR, mais il yen a beaucoup d'autres. Tout comme un arbre, il a une racine avec des branches qui en partent. Si vous avez des connaissances en informatique fondamentale, vous reconnaîtrez dans le DNS un arbre de recherche, avec des noeuds, des branches et des feuilles.

Lorsque vous recherchez une machine, la question est posée récursivement dans toute la hiérarchie depuis la racine. Lorsque vous voulez trouver l'adresse IF de prep.ai.mit.edu, votre DNS doit trouver un serveur de noms pour le domaine edu. Votre DNS demande d'abord à un serveur de noms de. (il possède déjà les adresses des serveurs pour ., elles sont dans le fichier root.hints), et le serveur pour . donne une liste des serveurs d'edu.

Notre propre domaine

Maintenant, nous allons définir notre propre domaine bien à nous. Nous allons créer le domaine linux.bogus et y déclarer quelques machines. C'est un nom de domaine totalement factice, afin d'être sur de ne déranger personne dans le Vaste Monde.
Remarque importante: tous les caractères ne sont pas admis dans les noms de machines. On ne doit utiliser que les caractères de l'alphabet anglais (a-z), les nombres (0-9) et le tiret "-". Les majuscules et les minuscules ne sont pas différenciés: pat.uio.no est identique à Pat.UiO.No.
En fait, nous avons déjà commencé à créer notre propre domaine avec cette ligne dans /etc/named.conf :

zone "0.0.127.in-addr.arpa" {
        type master;
        file "pz/127.0.0";
;

Notez bien l'absence de "." à la fin des noms de domaine de ce fichier. Elle signifie que nous allons définir la zone 0.0.127.in-addr.arpa, que nous sommes son serveur principal et que tout est stocké dans un fichier appelé 127.0.0.db On a déjà vu ce fichier, il se présente comme ceci :

@               IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                                1       ; Serial
                                8H      ; Refresh
                                2H      ; Retry
                                1W      ; Expire
                                1D)     ; Minimum TTL
                        NS      ns.linux.bogus.
1                       PTR     localhost.

Notez bien le « . » à la fin de tous les noms de domaine complets de ce fichier , contrairement au fichier named.boot. Certaines personnes aiment commencer chaque fichier définissant une zone par une directive $ORIGIN, mais en fait c'est superfiu. L'origine (l'emplacement dans la hiérarchie du service DNS) d'un fichier de zone est indiquée dans la zone section du fichier named.conf. Dans notre cas, c'est 0.0.127.in-addr.arpa.

Ce "fichier de zone" ("zone file") , contient 3 "ressource records" (RRs ) : un SOA RR, un NS RR et un PTR RR. SOA est l'abréviation de "Start Of Authority" (Origine de l'Autorité). Le "@" est une notation spéciale qui désigne l'origine. Et comme la colonne "domain" de ce fichier donne 0.0.127 .in-addr .arpa, la première ligne signifie donc :

NS est le "resource records" pour le serveur de noms (NS = Name Server) , il n'y a pas de @ au début de la ligne, il est implicite, puisque la ligne d'avant commence avec un "@". Alors, faites-vous une fleur en omettant ce caractère. Donc, la ligne NS peut aussi s'écrire comme suit 0.0.127.in-addr.arpa. IN NS ns.linux.bogus

Elle dit au service DNS quelle machine est le serveur de noms pour le domaine 0.0.127.in-addr.arpa, c'est ns.linux.bogus. ns est le nom habituel des serveurs de noms, tout comme www. pour les serveurs Web, mais c'est simplement une habitude, on peut choisir n'importe quel nom.

Et finalement le PTR dit que l'adresse 1 dans le sous réseau 0.0.127.inaddr.arpa, donc 127.0.0.1 est appelé localhost.

Le champ SOA est le préambule de tous les fichiers de zone, et il doit yen avoir exactement un dans chaque fichier de zone. Ce champ SOA décrit la zone, son origine (une machine appelée ns.linux.bogus), qui est responsable de son contenu (hostmaster@linux.bogus, vous devriez mettre votre adresse email à cet endroit), de quelle version du fichier de zone il s'agit (serial : 1), et quelques autres paramètres pour le cache et les serveurs DNS secondaires. Quant aux champs restants (refresh, retry, expire et minimum) utilisez les valeurs données dans ce HOWTO et tout se passera certainement très bien.

Maintenant, relancez votre named (avec la commande rcnamed restart) et utilisez nslookup pour regarder le résultat :

$ nslookup
Default Server: localhost
Address: 127.0.0.1
>127.0.0.1 Server: localhost Address: 127.0.0.1
Name: localhost Address: 127.0.0.1

Tout va bien, on arrive à obtenir localhost à partir de 127.0.0.1. Maintenant, pour le sujet qui nous préoccupe, le domaine linux.bogus, insérez une nouvelle zone dans le fichier named.conf :

zone "linux.bogus" {
notify no;
type master;
file "linux.bogus.db";
};

Notez qu'encore une fois il n'y a pas de "." à la fin des noms de domaine dans le fichier named. conf .

Dans le fichier de zone linux.bogus, nous allons mettre quelques données totalement factices :

;
; Zone file for linux.bogus


;
; The full zone file
;
@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                        199802151       ; serial, todays date + todays serial #
                        8H              ; refresh, seconds
                        2H              ; retry, seconds
                        1W              ; expire, seconds
                        1D )            ; minimum, seconds
;
                NS      ns              ; Inet Address of name server
                MX      10 mail.linux.bogus     ; Primary Mail Exchanger
                MX      20 mail.friend.bogus.   ; Secondary Mail Exchanger
;
localhost       A       127.0.0.1
ns              A       192.168.196.2
mail            A       192.168.196.4

Il y a deux choses à noter à propos du champ SOA. ns.linux.bogus doit absolument être une vraie machine possédant un champ A. n n'est pas légal d'avoir un champ CNAME pour la machine mentionnée dans le champ SOA.

Il n'est pas nécessaire que son nom soit "NS", ce peut être tout autre nom valide. La deuxième chose à noter c'est que hostmaster.linux.bogus doit se lire comme hostmaster@1inux.bogus. Ce doit être un alias de mail, ou une véritable boîte aux lettres électronique, et la personne qui maintient le DNS doit la lire régulièrement. Tous les mails concernant l'administration du domaine seront envoyés à cette adresse. n n'est pas obligatoire que le nom soit "hostmaster", vous pouvez mettre votre adresse e-mail personnelle, mais il serait bon que l'adresse "hostmaster" fonctionne aussi.

Il y a un nouveau RR (Resource Record) dans ce fichier, c'est le MX, pour Mail eX changer. n indique aux systèmes de gestion du courrier électronique à quelle machine envoyer le mail adressé à someone@linux.bogus, dans notre cas à mail.1inux.bogus ou mail.friend.bogus. Le nombre devant chaque machine est sa priorité vis-à-vis du champ MX, le RR avec le numéro le plus faible (10) correspond à la machine à laquelle le courrier doit être adressé en priorité. En cas d'échec, il peut être adressé à la machine qui a le numéro de priorité immédiatement supérieur, c'est-à-dire mail.friend.bogus qui a une priorité de 20 dans notre cas.

Il ne reste plus qu'a tester votre DNS après avoir relance named par la commande rcnamed restart.

Partage avec Windows (SAMBA)

Samba permet de partager des fichiers et des imprimantes via le reseau avec des machines windows 9x, NT et 2000. Il est même possible (même si cela est encore en développement: samba tng) de transformer la machine linux en serveur NT (PDC, BDC, serveur autonome).
Configuration du fichier /etc/smb.conf.

La configuration de Samba sur une machine Linux (ou sur un autre Unix) est contrôlée par un seul fichier, /etc/smb.conf. Ce fichier indique quelles ressources système que vous désirez partager avec le monde extérieur, et quelles restrictions vous désirez imposées.

Puisque les chapitres suivants vont traiter du partage de fichiers et d'imprimantes avec des machines Windows, le fichier smb.conf présenté dans ce chapitre est aussi simple que possible, en guise d'introduction.

Chaque partie du fichier commence par une entête, comme par exemple [global], [homes], [printers], etc...

La section [global] définit quelques variables communes pour le partage de toutes les ressources.

La section [homes] permet à un utilisateur distant d'accéder à son répertoire d'accueil (et uniquement au sien) sur la machine Linux locale. C'est-à-dire que si un utilisateur Windows essaye de se connecter à ce répertoire partagé depuis sa machine Windows, il sera connectê sur son répertoire d'accueil personnel.

Le fichier smb.conf suivant donné en exemple permet à des utilisateurs distants d'accéder à leur répertoire home sur la machine locale et d'écrire dans un répertoire temporaire. Pour qu'un utilisateur Windows puisse voir ces partages, il faut que l'hôte Linux soit sur le réseau local. Ainsi l'utilisateur connecte un lecteur réseau depuis le gestionnaire de fichiers Windows ou Explorateur .

Assurez vous de relancer le serveur après avoir fait des changement dans  ce fichier (smb stop puis smb start ou encore par rcsmb restart).

/etc/smb.conf
[global]
; autoriser les invités ( comptes "guest") à se connecter
; guest account = nobody
log file = /var/log/samba-log.%m
lock directory = /var/lock/samba
share modes = yes
[homes]
comment = Répertoire homes browseable = no
read only = no
create mode = 0750
[tmp]
comment = Espace disque temporaire
path = /tmp
read only = no
public = yes

En éditant ce fichier /etc/smb.conf vous pouvez lire les différents commentaires qui vous donnerons plus d'informations sur les différentes options de configuration de SAMBA.ll ne reste plus qu'a relancer samba avec la commande rcsmb restart.

De plus vous bénéficiez des commandes samba vous permettant de dialoguer avec une machine windows. Ces commandes sont :

  • smbclient -L <nom netbios> -u toto qui permettent de voir les partages windows (fichiers et imprimantes)

  • smbmount //<serveur>/<nom de partage> <repertoire de montage local> -u toto qui permet de monter un point de partage windows sur un répertoire local. A noter que si le support smbfs est compilé dans le noyau linux vous pouvez faire de même avec la commande mount.
    Mount -t smbfs //<serveur>/<nom de partage> <repertoire de montage local> -o username=toto

  • smbpasswd et smbprint permettent quand à eux de changer de password et d'imprimer en utilisant un serveur windows NT.

Jérome Chavin
 

m


Sondage

Quel est votre connexion à Internet aujourd'hui ?
 
RTC 56Kbps
ADSL simple de 128 à 2048 Kbps
ADSL + Téléphonie (+TV) de 128 à 2048 Kbps
ADSL simple jusqu'à 20Mbps
ADSL + Téléphonie (+TV) jusqu'à 20Mbps
Autres (RNIS, Satellites bi-directionnel...)
Total :
3241

Recherche


Docs
   Pflogsumm (Analyseur de log mail pour Postfix)
   Proftpd (Mise en service d'un serveur FTP avec proftpd sous Linux)
   Openldap (Mise en service d'un serveur LDAP sous Linux)
   Gestion des périphériques en c++ builder (Communication RS232 en C++ Builder)
   Les sockets windows (Windows Sockets : un cours accéléré)

guill.net©1999-2024