This is an old revision of the document!
Table of Contents
Administration des Réseaux
Site Web : http://dept-info.labri.fr/~guermouc
Quelques notes sur les TPs.
Pour tester les TPs sur votre machine, c'est ici
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.