User Tools

Site Tools


admin:index

This is an old revision of the document!


Administration des Réseaux

TP6 (NIS & NFS)

Attention : Vérifier que le service rpcbind est bien démarré, sinon il faut penser à le lancer.

$/etc/init.d/rpcbind start
Configuration du serveur NIS

On choisit un nom de domaine mydomain :

root@immortal:~ #echo mydomain > /etc/defaultdomain

On positionne également le nom de domaine courant à mydomain

root@immortal:~ #domainname mydomain

On peut vérifier que le domainne courant est bien positionné en tapant la commande domainname.

On configure immortal comme serveur (maître), en indiquant dans le fichier /etc/default/nis

...
# Are we a NIS server and if so what kind (values: false, slave, master)?
NISSERVER=master
...

Puis on construit la base de données, en exportant les comptes courants (définis dans /etc/passwd) comme des comptes NIS.

root@immortal:~ #cd /var/yp/ ; make

Un message d'erreur indique que le serveur ne NIS n'est pas encore lançé !

On démarre donc le serveur NIS :

root@immortal:~ #/etc/init.d/nis restart 
Starting NIS services: ypserv yppasswdd ypxfrd ypbind.

OK c'est parti… sinon on vérifie les logs (/var/log/syslog).

On regénère proprement la basse de données NIS.

root@immortal:~ # cd /var/yp/
root@immortal:~ # rm -rf mydomain               # raz de la database
root@immortal:~ # make                          # on génére à nouveau la database          
  Updating passwd.byname...
  Updating passwd.byuid...
  Updating group.byname...
  Updating group.bygid...
  Updating hosts.byname...
  Updating hosts.byaddr...
  Updating rpc.byname...
  Updating rpc.bynumber...
  Updating services.byname...
  Updating services.byservicename...
  Updating netid.byname...
  Updating protocols.bynumber...
  Updating protocols.byname...
  Updating netgroup...
  Updating netgroup.byhost...
  Updating netgroup.byuser...
  Updating shadow.byname...

Tous les utilisateurs locaux sur le serveur NIS avec un UID > 1000 sont exportés dans la database.

En lançant la commande rpcinfo -p on voit apparaître les différents services RPC utiles à NIS : ypserv, yppasswdd, ypbind, fypxfrd.

Configuration du client

On vérifie que le fichier /etc/default/nis est bien configuré pour être client NIS. Puis on configure le nom de domaine NIS et on démarre le service NIS (côté client).

root@grave:~ #echo "mydomain" > /etc/defaultdomain
root@grave:~ #domainname mydomain
root@grave:~ #/etc/init.d/nis restart 
  Starting NIS services: ypbind.

Pour vérifier que l'on trouve bien le serveur NIS depuis le client :

root@grave:~ #ypwhich
  192.168.0.1

Pour afficher la liste des comptes utilisateur NIS :

root@grave:~ #ypcat passwd

Il faut ensuite éditer le fichier /etc/nsswitch.conf qui sert à expliquer à l'OS quelle stratégie utiliser pour l'autenthification (unix files, nis, ldap, compat, …)

passwd:         files nis        # compat
group:          files nis        # compat
shadow:         files nis        # compat
...

Attention, il faut recharger le fichier nsswitch.conf il faut faire :

/etc/init.d/nscd restart 

Avec la séquence files nis, on vérifie d'abord les comptes locaux dans /etc/, puis après on cherche sur le serveur NIS.

Ajouter des nouveaux utilisateurs NIS sur le serveur

On commence par désactiver kerberos & ldap

root@immortal:~ #pam-auth-update

Puis on ajoute les utilisateurs Unix titi et tutu :

root@immortal:~ #adduser titi
  password titi
root@immortal:~ #adduser tutu
  pasword tutu

On met à jour la base de données NIS :

root@immortal:cd /var/yp ; make
 Updating passwd.byname...
 Updating passwd.byuid...
 Updating netid.byname...
 Updating shadow.byname...

Maj de la base, pas besoin de restarter le serveur NIS…

root@grave:~ #ypcat passwd
  tutu:x:1002:1002:,,,:/home/tutu:/bin/bash
  titi:x:1001:1001:,,,:/home/titi:/bin/bash
  toto:x:1000:1000:,,,:/home/toto:/bin/bash

Pour tester NIS on passe par un tiers utilisateur plutôt que par root (root ne vérfie pas le password) !

root@grave:~ #su toto 
toto@grave:/root$ su titi
Mot de passe : xxxx
titi@grave:/root$ 
Configuration de NFS

Il ne faut pas oublier de configurer le serveur NFS comme un client NIS ! Pour mettre à jour le cache des utilisateurs NIS sur un client, il est utile de relancer le démon NSCD (NameService Cache Daemon) /etc/init.d/nscd restart

Côté serveur NFS

On configure le serveur NFS sur syl ; grave sert de client.

Sur le serveur, le répertoire NFS sera /pub.

root@syl$ mkdir /pub

On indique cela /etc/exports de la façon suivante :

/pub (rw,no_root_squash)

Autres Exemples (man exports) :

/pub host1(ro) host2(rw,no_root_squash)
/pub @netgroup(rw)
/pub (ro)

Par defaut, root_squash : l'utilisateur root (uid=0,gid=0) est mappé sur anonymous avec des droits restreints ! Autres options : no_root_squash, all_squash

On démarre le common et le serveur NFS (nécessaire après chaque modif de /etc/exports) :

root@grave$ /etc/init.d/nfs-common restart  
root@grave$ /etc/init.d/nfs-kernel-server restart  

Côté client NFS

Sur grave, déjà configuré comme un client NIS.

On démarre le common NFS (après chaque modif de /etc/exports) :

root@grave$ /etc/init.d/nfs-common restart  

On crée le montage NFS dans /mnt/pub :

root@grave$ mkdir /mnt/pub
root@grave$ chmod 777 /mnt/pub
root@grave$ mount -t nfs -o nfsvers=3 192.168.0.1:/pub /mnt/pub         # @serveur_nfs = 192.168.0.1

On crée des fichiers vides (commande touch) sur la machine client en tant que tutu et titi.

root@grave:/mnt/pub$ su tutu
tutu@grave:/mnt/pub$ touch tutu              
root@grave:/mnt/pub$ su titi  
titi@grave:/mnt/pub$ touch titi              
  

On vérifie les droits…

  
root@grave:/mnt/pub$ ls -l
  -rw-r--r-- 1 titi titi 0 2008-03-11 13:28 titi
  -rw-r--r-- 1 tutu tutu 0 2008-03-11 13:28 tutu

On peut également configurer le point de montage de manière permanente dans /etc/fstab

root@grave$ jmacs /etc/fstab
<file system>      <mount point>   <type>  <options>  <dump> <pass>
192.168.0.3:/pub   /mnt/test        nfs    rw         0       0    
En conclusion

Donc on a :

  • immortal : serveur NIS (compte NIS tutu et titi)
  • syl : serveur NFS (export de /pub) & client NIS
  • grave : client NIS & NFS (montage dans /mnt/pub)

Pour terminer de tout bien configurer, il faut créer sur le serveur NFS les repertoires /pub/tutu et /pub/titi appartenant respectivement aux utilsateurs tutu et titi, avec les bons droits d'accès Unix. Il faut ensuite mettre à jour le /etc/passwd du serveur NIS pour indiquer comme home directory les répertoires /mnt/pub/tutu et /mnt/pub/titi. Puis on met à jour la base NIS. Et on teste sur le client que l'on se connecte bien dans le home directory monté par NFS. Pensez à recharger le cache NSCD côté client NIS avant de faire des tests ;-)

TP7 LDAP

NIS c'est un peu démodé… Aujourd'hui, on préfère utiliser LDAP.

1) Configuration du serveur LDAP

On configure le serveur LDAP sur la machine immortal. Les autres machines servent de client.

  immortal$ adduser tutu
  immortal$ adduser titi 

Création d'un password pour l'admin LDAP:

  immortal$ slappasswd 
    New password: admin
    Re-enter new password: admin
    {SSHA}XSd0QXLAiNz734f/8QGpaujkMdK5BxWp

Editer le fichier /etc/ldap/sldap.conf (attention, pas d'espace en début de ligne) :

   # nom du domaine LDAP
   suffix          "dc=mydomain,dc=fr"
   
   # nom de l'admin
   rootdn          "cn=admin,dc=mydomain,dc=fr"
   
   # ajout d'un mot de passe admin
   rootpw	   "{SSHA}XSd0QXLAiNz734f/8QGpaujkMdK5BxWp"
   

Attention : Ne pas oublier de corriger le nom de domaine pour les ACLs en fin de fichier ! En gros, il faut remplacer tous les @XXXXXXXXX@ !

Nota Bene : dc = domain component

Dans le fichier /etc/default/slapd, modifiez :

  SLAPD_CONF="/etc/ldap/slapd.conf"

Démarrage du serveur LDAP :

 
  immortal$ /etc/init.d/slapd start

On vérifie que le démon a démarré !

 
  immortal$ ps aux |grep slapd
2) Ajout des comptes dans le serveur LDAP

On va utiliser un script pour peupler automatiquement la base LDAP avec les comptes des utilisateurs (et d'autres trucs). Editer le fichier /etc/migrationtools/migrate_common.ph, et mettre à jour votre nom de domaine :

# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "mydomain.fr";

# Default base 
$DEFAULT_BASE = "dc=mydomain,dc=fr";

Ensuite, il faut lancer le script :

  immortal$ cd /usr/share/migrationtools      # Important : il faut dans ce répertoire...
  immortal$./migrate_all_online.sh            # ... pour lancer le script !

Enter the X.500 naming context you wish to import into: [dc=mydomain,dc=fr] 
Enter the hostname of your LDAP server [ldap]: localhost
Enter the manager DN: [cn=admin,dc=mydomain,dc=fr]: 
Enter the credentials to bind with:            <-- mot de passe de l'admin !!!
Do you wish to generate a DUAConfigProfile [yes|no]? no

Importing into dc=mydomain,dc=fr...

Creating naming context entries...
Migrating groups...
Migrating hosts...
Migrating networks...
Migrating users...
Migrating netgroups...
Migrating netgroups (by user)...
Migrating netgroups (by host)...
Importing into LDAP...
adding new entry "dc=mydomain,dc=fr"
...
adding new entry "cn=root,ou=Group,dc=mydomain,dc=fr"
...
adding new entry "cn=toto,ou=Group,dc=mydomain,dc=fr"
adding new entry "cn=tutu,ou=Group,dc=mydomain,dc=fr"
adding new entry "cn=titi,ou=Group,dc=mydomain,dc=fr"
...
adding new entry "cn=localhost,ou=Hosts,dc=mydomain,dc=fr"
adding new entry "cn=cinder.localdomain,ou=Hosts,dc=mydomain,dc=fr"
...
adding new entry "uid=toto,ou=People,dc=mydomain,dc=fr"
adding new entry "uid=tutu,ou=People,dc=mydomain,dc=fr"
adding new entry "uid=titi,ou=People,dc=mydomain,dc=fr"
En cas d'erreur

Bon, si ça ne marche pas, on fait le ménage :

$/etc/init.d/slapd stop
$ rm -rf /var/lib/ldap/*

On vérifie ses configs et on recommence !!!

$/etc/init.d/slapd start
Test client

On effectue une recherche sur toutes les entrées “objectclass=*”

immortal$ ldapsearch -x -b "dc=mydomain,dc=fr" -D "cn=admin,dc=mydomain,dc=fr" "(uid=*)" -W

ou plus simplement si tout le monde peut consulter le serveur LDAP (cf. ACL) :

immortal$ ldapsearch -x "(uid=*)"

Comparer le nombre de répondes avec /etc/passwd sur le serveur :

 
  immortal$ wc -l /etc/passwd

L'ajout manuel d'une entrée se fait via un fichier LDIF (cf. manuel) :

immortal$ grep tutu /etc/passwd > tutu
immortal$ migrate-passwd.pl tutu > tutu.ldif
immortal$ ldapadd -x -D "cn=admin,dc=mydomain,dc=fr" -W -f tutu.ldif
3) Configuration d'un client LDAP

Nota Bene : Il n'y a pas de démon côté client!

Editer le fichier /etc/ldap/ldap.conf sur la machine cliente :

  BASE    dc=mydomain,dc=fr 
  URI     ldap://192.168.0.1   <--- IP du serveur LDAP !

Un petit test sur le client (pas besoin de mettre l'option -b)

$ ldapsearch -x -D "cn=admin,dc=mydomain,dc=fr" "(objectclass=account)" -W
4) Authentification via LDAP

Dans le fichier /etc/nsswitch.conf, ajouter ldap

  passwd:         files ldap
  group:          files ldap
  shadow:         files ldap

Attention : Ne pas oublier files, sinon mieux vaut que ldap fonctionne du premier coup !!!

$ /etc/init.d/nscd restart

A partir d'ici, les comptes LDAP sont visibles, mais l'authentification ne marche pas encore, car il faut encore configurer PAM, pour y authoriser l'authentification via LDAP.

On lance la commande suivante et on sélectionne Unix + LDAP.

$ pam-auth-update

Ensuite :

$ dpkg-reconfigure libpam-ldap
$ dpkg-reconfigure libnss-ldapd

Attention, il faut saisir ldap://192.168.0.1 (ET NON ldapi !)

Pour finir :

$ dpkg-reconfigure nslcd

A vous de jouer… on peut ajouter le serveur NFS !

TP8 DNS & DHCP

Config Serveur DNS

domain: metal.fr server: immortal (192.168.0.2)

Dans /etc/bind/named.conf.local :

zone "metal.fr" {
        type master;
        file "/etc/bind/db.metal";
};

zone "0.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.0.168.192";
};

Dans /etc/bind/db.metal :

; $ORIGIN metal.fr
$TTL	86400
@	IN	SOA	dns1.metal.fr. mailer.metal.fr. (
			      1		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			  86400 )	; Negative Cache TTL
;

@	IN	NS	immortal
@	IN	MX	10	nile

immortal	IN	A	192.168.0.2
syl		IN	A	192.168.0.1
nile		IN	A	192.168.0.3

; alias
mailer		IN	CNAME	nile
dns1		IN	CNAME	immortal

Nota Bene : NS = DNS Server, IN = Internet (optionel), mailer.metal.fr ⇒ mailer@metal.fr (@email du DNS admin)

Dans /etc/bind/db.0.168.192 (reverse) :

; $ORIGIN 0.168.192.in-addr.arpa
$TTL	86400
@	IN	SOA	dns1.metal.fr. mailer.metal.fr. (
			      1		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			  86400 )	; Negative Cache TTL
;

@	IN	NS	dns1.metal.fr.

; reverse
2	IN	PTR	immortal.metal.fr.
1	IN	PTR	syl.metal.fr.
3	IN	PTR	nile.metal.fr.

Vérif Config Serveur :

  $ named-checkzone 0.168.192.in-addr.arpa db.0.168.192
  $ named-checkzone metal.fr db.metal
  $ named-checkconf

Démarrage du serveur :

$ /etc/init.d/bind9 restart

Les logs :

$ tail /var/log/syslog 
Config Client DNS

Dans /etc/resolv.conf :

search metal.fr
nameserver 192.168.0.2

Dans /etc/nsswitch.conf :

...
hosts:          files dns
...

Ne pas oublier de redémarrer le daemon nscd.

Test Client, sur syl par exemple :

  $ nslookup nile
  Server:		192.168.0.2
  Address:	192.168.0.2#53
  Name:	nile.metal.fr
  Address: 192.168.0.3

  $ ping nile
  PING nile.metal.fr (192.168.0.3) 56(84) bytes of data.
  64 bytes from nile.metal.fr (192.168.0.3): icmp_seq=1 ttl=64 time=12.8 ms
Config du serveur DHCP

Serveur DHCP su syl.

Configuration sans DNS

Dans /etc/dhcp/dhcpd.conf:

  default-lease-time 600;
  max-lease-time 7200;

  subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.10 192.168.0.20;
    option broadcast-address 192.168.0.255;
  }

On démarre le serveur DHCP :

 $/etc/init.d/isc-dhcp-server start

Configuration avec DNS

On suppose le serveur DNS bien configuré sur immortal…

Dans /etc/dhcp/dhcpd.conf (syl), ajouter à la fin :

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.10 192.168.0.30;               # Range of IP addresses to be issued to DHCP clients
  option domain-name "metal.fr";		 # Domain name
  option domain-name-servers 192.168.0.2;        # Default DNS to be used by DHCP clients
  # option routers 192.168.0.254;		 # Default gateway to be used by DHCP clients
  option subnet-mask 255.255.255.0;		 # Default subnet mask to be used by DHCP clients
  option broadcast-address 192.168.0.255;      	 # Default broadcast address to be used by DHCP clients

  host nile {
    hardware ethernet A2:00:00:00:03:00;
    fixed-address 192.168.0.9;
  }

}

On redémarre le serveur DHCP.

Configuration du Client DHCP

Dans /etc/network/interfaces (nile) :

	
  auto eth0
  iface eth0 inet dhcp

Puis on démarre le client…

$/etc/init.d/networking restart

Ou encore :

  root@nile:~ #dhclient -v

  Listening on LPF/eth0/a2:00:00:00:03:00
  Sending on   LPF/eth0/a2:00:00:00:03:00
  Sending on   Socket/fallback
  DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
  DHCPOFFER from 192.168.0.1
  DHCPREQUEST on eth0 to 255.255.255.255 port 67
  DHCPACK from 192.168.0.1
  bound to 192.168.0.10 -- renewal in 265 seconds.

On peut vérifier les entrées ajoutées dynamiquement sur le serveur DHCP dans le fichier /var/lib/dhcp/dhcpd.leases

Configuration avançée du serveur DHCP

On souhaite maintenant faire en sorte que le serveur DHCP collabore avec le serveur DNS pour mettre à jour automatiquement la liste desnouvelles machines reconnues par DNS.

On utilise le secret définie dans /etc/bind/rndc.key

On modifie la config DHCP du serveur dans /etc/dhcp/dhcpd.conf :

  ddns-update-style interim;
  ddns-updates on;
  deny client-updates;
  ddns-domainname "metal.fr.";
  ddns-rev-domainname "0.168.192.in-addr.arpa.";
  authoritative;

  key "rndc-key" {
    algorithm hmac-md5;
    secret "nnuTF/RJEhvmKhttRzIv8w==";
  }

  zone metal.fr. {
    primary 192.168.0.2;
    key rndc-key;
  }

  zone 0.168.192.in-addr.arpa. {
    primary 192.168.0.2;
    key rndc-key;
  }
  
  subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.10 192.168.0.30;               # Range of IP addresses to be issued to DHCP clients
    option domain-name "metal.fr";		   # Domain name
    option domain-name-servers 192.168.0.2;        # Default DNS to be used by DHCP clients
    option subnet-mask 255.255.255.0;		   # Default subnet mask to be used by DHCP clients
    option broadcast-address 192.168.0.255;        # Default broadcast address to be used by DHCP clients
  }

Puis on modifie la config su serveur DNS dans /etc/bind/named.conf.local :

key "rndc-key" {
 algorithm hmac-md5;
 secret "nnuTF/RJEhvmKhttRzIv8w==";
};

zone "metal.fr" {
        type master;
        file "/etc/bind/db.metal";
        allow-update {key "rndc-key"; };
};

zone "0.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.0.168.192";
        allow-update {key "rndc-key"; };
};

Ne pas oublier chmod g+wx /etc/bind (pour le group “bind”).

Finalement, côté client DHCP (nile), dans /etc/dhcp/dhclient.conf :

send host-name "ninile";

Puis :

$ dhclient -v

TP9 WINDOWS

On considère le réseau suivant : une machine Windows 7 (172.16.1.1/16) connectée à une machine Linux Immortal (eth1, 172.16.0.1/16). Immortal est ensuite connectée à deux autres machines Linux Syl (via eth0) et Nile (via eth2).

Configuration des machines Linux
immortal$ ifconfig eth1 172.16.0.1/16                 # connexion à win7
immortal$ echo 1 > /proc/sys/net/ipv4/ip_forward      # mode routeur
immortal$ ifconfig eth0 192.168.0.1/24                # connexion à syl
immortal$ ifconfig eth2 192.168.1.1/24                # connexion à nile
 
syl$ ifconfig eth0 192.168.0.2/24   
syl$ route add default gw 192.168.0.1                    # route par défaut vers la machine windows
 
nile$ ifconfig eth0 192.168.1.2/24               
nile$ route add default gw 192.168.1.1                   # route par défaut vers la machine windows
Configuration de la machine Windows

Configurez l'interface réseaux Windows avec l'IP 172.16.1.1/16 en utilisant l'interface graphique du Control Panel, puis Network/Property/../IPv4/Property. A priori, c'est déjà fait.

En ligne de commande, il faut lancer le Command Prompt dans le menu Windows. Faire un clic droit, Run as Administrator pour avoit un terminal avec les droits “root”.

La machine Windows et déjà configuré : on vérifie :

win$ ipconfig.exe /all 
win$ route.exe print

Si tout est OK, on doit pouvoir faire un ping vers notre UML

win$ ping.exe 172.16.0.1      

Lancer MMC (Microsoft Management Console), qui va permettre de gérer toute la config…

win$ mmc.exe

/* Il faut commencer par ajouter via le menu “File/Add Snap-In”. L'option Windows Firewall with Advanced Security… qui permet également de configurer IPSEC */

Attention, il y a plusieurs “profile” pour les règles du firewall (public, domain, private, all). On vérifiera que la firewall est bien ON avec le profile “public” ACTIVE.

On peut commencer par inactiver le firewall… puis par faire des tests ICMP vers toutes les machines Linux, en ajoutant par exemple 172.16.0.1 comme default gateway dans Windows (interface graphique).

Si on active le firewall, le ping de windows vers linux fonctionne (pas de firewall sur immortal), mais en revanche l'inverse ne marche pas.

Nota Bene: Windows autorise le Established de base !

Il faut rajouter une petite règle ICMP qui va bien via la MMC, pour autoriser le ping. Add “New Inbound Rules” / Custom Rule / et après c'est facile… On peut maintenant, vérifier que le ping fonctionne de manière symétrique.

Pour définir une route par défaut, il faut utiliser 0.0.0.0 comme réseau cible et 255.255.255.255 comme masque !

# route par défaut (gateway immortal)
win$ route add 0.0.0.0 mask 0.0.0.0 172.16.0.1

On va virer la default gateway, pour rajouter à la main… des routes spécifiques vers les réseaux de syl et opeth…

# vers opeth
win$ route add 192.168.0.0 mask 255.255.255.0 172.16.0.1 [if 16]  
# vers syl
win$ route add 192.168.1.0 mask 255.255.255.0 172.16.0.1 [if 16]  

Le numéro d'interface [if x] se trouve avec “route.exe print”

Un peu plus d'aide…

win$ route.exe /?

Un petit test avec Netcat. On lance le programme en mode serveur nc.exe, dans c:\Users\toto\Desktop\ (commandes cd et dir pour naviguer)

win$ nc.exe -l -p 5555     

Windows vous demande si vous souhaitez ajouter une exception dans le firewall pour autoriser les connexions vers le programme nc.exe (all IPs, all ports, TCP & UDP). Si on dit Allow, bah ça marche tout seul !

syl$ telnet 172.16.1.1 5555     # connexion au serveur netcat de la machine windows !

Pour sortir de Telne, faire ctrl-], puis taper telnet> quit ;-)

Nota Bene : Firewall Windows, regarde en premier les règles “block”, ensuite “allow” et ensuite “default”. IPsec se place au dessus.

admin/index.1457687516.txt.gz · Last modified: 2024/03/18 15:04 (external edit)