Le but de l'opération est d'obtenir un serveur de fichier pour les dossiers de départ (home) de machines MacOS X, Linux et Windows. Une contrainte de notre environnement est que toutes les machines ne sont pas sur le même réseau. C'est le cas de machines MacOS X qui se trouvent sur un réseau différent.
Dans cet environnement, le serveur d'administration Admin est connecté sur le réseau A (réseau Ethernet sur la carte mère). Il offre les services :
Nous allons décrire plusieurs essais de configuration de MacOS X server afin d'optenir
C'est la partie la plus facile et elle fonctionne parfaitement.
Le serveur AdminA.lip6.fr (nom du serveur Admin sur le réseau A) publie un point de montage Invites en AFP contenant les dossiers de départ. Dans l'exemple expliqué sur la page Configuration de MacOS X Server et Client, le point de montage des comptes invités se situe sur un disque nommé D1 dans le répertoire Utilisateurs/Invites
Sur le poste client, le dossier de départ de l'utilsateur TP1 est monté à l'adresse : /Network/Servers/AdminA.lip6.fr/Volumes/D1/Utilisateurs/Invites/TP1 voici un extrait de l'arborescence des fichiers sur le poste de travail :
Comme on peut le constater, c'est un peu compliqué et il est difficile de comprendre ce que sont tous ces liens Network, _Network_, automount, Server, ... Il faut dire que la machine cliente a été utilisée pour faire pas mal d'essais.
Pour éclaircir la situation, reprenons un système 10.3.9 2005-005 fraîchement installé. Voici ce qui existe :
Par contre
En supprimant AppleTalk, Rendezvous (Bonjour), SMB et SLP par l'utilitaire Format de répertoire, il ne reste plus que le lien vers Servers dans /Network.
En mettant en place la connexion LDAP sur le serveur AdminA.lip6.fr, il y a création de
Un PowerMac, sur le réseau C est connecté au serveur AdminA.lip6.fr
(nom du serveur Admin sur le réseau A) via AFP. En première approche, cela semble marcher mais le montage afp ne se fait pas correctement. En effet, cela marche si la personne est connectée directement sur le serveur mais si on se connecte an ssh, le compte est monté en invité. Bien qu'il soit possible d'utiliser la commande mnthome, cela n'est pas satisfaisant car il n'y a qu'une personne à la fois qui peut monter son dossier de départ.
Pour le montage AFP, la base LDAP contient, dans cn=mounts :
D'après ce que l'on peut trouver au fond des forums, pour que cela fonctionne, il faut effectuer un montage NFS et pas AFP. Effectivement, le montage NFS doit se faire en root et il va monter tous les dossiers de départ avec leurs autorisations.
Pour cela on modifie le point de montage pour rajouter du NFS uniquement dans le sous-réseau C.
Normalement, le fait de mettre un point de montage NFS doit activer automatiquement NFS (car on ne peut pas l'activer ni le désactiver comme les autres services ?)
Pour le montage NFS, la base LDAP contient, dans cn=mounts :
Associer le point de montage comme dossier de départ pour l'utilisateur :
Lorsque l'on revient sur le point de montage comme dossier de départ pour l'utilisateur, on trouve maintenant trois entrées. La dernière est sélectionné.
Dans l'inspecteur (Onglet Inspector visible si on a coché Show "All Records" tab and inspector dans les Préférences de Workgroup Manager), on retrouve : /Network/Servers/AdminA.lip6.fr:/Volumes/.../Point_de_montage/login dans les champs NFSHomeDirectory et homeDirectory.
Dans cette configuration, le dossier Départ est introuvable car le client est sur le réseau C et le serveur sur le réseau A. Le montage NFS ne fonctionne pas à travers le routeur.
Dans l'arborescence de fichier le chemin /private/Network/Servers/AdminA.lip6.fr:/Volumes/.../Point_de_montage existe bien mais il ne contient pas les répertoires utilisateurs.
Le fichier de log /var/log/system.log
contient :
automount[pid]: Can't mount AdminA.lip6.fr:/Volumes/.../Point_de_montage on /private/Network/Servers/AdminA.lip6.fr:/Volumes/.../Point_de_montage: Unknown error: -1 (-1)
automount[pid]: Attempt to mount /automount/Servers/AdminA.lip6.fr:/Volumes/.../Point_de_montage returned -1 (Unknown error: -1)
...
loginwindow[pid]: Failed to stat homedir: sleeping 1 second: chdir return -1 for /Network/Servers/AdminA.lip6.fr:/Volumes/.../Point_de_montage/login: Attempt 1
loginwindow[pid]: Failed to stat homedir: sleeping 1 second: chdir return -1 for /Network/Servers/AdminA.lip6.fr:/Volumes/.../Point_de_montage/login: Attempt 2
...
Pour que le montage NFS fonctionne, il faut que la machine Admin soit directement sur le réseau du client. Dans notre exemple le réseau C. En attendant de faire fonctionner le multi-homing sur la carte Ethernet et sur le commutateur associé, nous choisissions de rajouter une carte Ethernet connecté au câble C2. La machine a donc maintenant deux adresses IP : AdminA.lip6.fr et AdminC.lip6.fr.
Dans l'inspecteur je modifie les champs NFSHomeDirectory et homeDirectory en mettant AdminC.lip6.fr
à la place de AdminA.lip6.fr
.
Lorsque l'on revient sur le point de montage comme dossier de départ pour l'utilisateur, on trouve maintenant trois entrées. La dernière est sélectionné.
Le dossier de départ est correct mais les points de montage contiennent toujours AdminA et le répertoire reste donc introuvable.
Nous allons changer AdminA.lip6.fr en AdminC.lip6.fr dans le cn=mounts. (j'ai laissé le dn inchangé)
>ldapsearch -v -x -b "cn=mounts,dc=lip6,dc=fr"
# AdminA.lip6.fr:/Volumes/Point_de_montage, mounts, lip6.fr
dn: cn=AdminA.lip6.fr:/Volumes/Point_de_montage,cn=mounts,dc=lip6,dc=fr
objectClass: mount
objectClass: top
mountDirectory: /Network/Servers/
mountType: nfs
mountOption: net
cn: AdminC.lip6.fr:/Volumes/Point_de_montage
Et cela marche parfaitement.
Truc: Si vous utilisez LDAP Browser Editor ou phpLDAPadmin, pour effectuer des modifications, il faut etre administrateur LDAP. En mettant uid=root,cn=users
(issue de la ligne rootdn du fichier /etc/openldapslapd_macosxserver.conf
) pour LDAP Browser sans Anonymous bind et avec append base DN dans le champs User DN. Dans certaines configurations, ce n'est pas root
mais Manager
.
Il s'agit ici de combiner le montage NFS local à un montage AFP distant. En fonction de la localisation de la machine, il faudrait soit utiliser NFS si on est sur le sous-réseau C et AFP si on est dans les autres sous-réseaux.
Je n'ai pas trouvé de moyen simple de faire ceci. La solution proposée consiste à utiliser deux comptes différents : A-login
et C-login
(un associé à chaque protocole AFP et NFS) avec le même User ID et un lien symbolique d'un compte vers l'autre.
Au niveau du serveur :
Lorsqu'un utilisateur doit avoir un compte visible sur les deux réseaux, on crée un compte C-login
et un compte A-login
. Lors de la création du compte A-login
, il faut attribuer à ce compte le même User ID que le compte C-login
et créer manuellement un lien symbolique dans le répertoire Mont-AFP vers le répertoire C-login
de Mont-NFS.
Lorsque l'on est sur le réseau A, si on utilise le compte C-login
, l'authentification fonctionne mais le dossier de départ est introuvable car la partition Mont-NFS ne peut pas être montée.
Dans l'option précédentes, outre le double login (avec même UID) et donc double mot de passe, la création du dossier de départ sur le serveur ne marchait pas pour les utilisateurs NFS. En effet, n'ayant pas les droits root NFS, il était impossible de créer le dossier car le serveur pensait que partie NFS était sur une autre machine alors que c'était la même sur l'autre interface. Il fallait donc créer le dossier de départ dans la zone Mont-AFP puis se connecter sur le serveur (en root) pour déplacer le dossier vers Mont-NFS et faire le lien symbolique.
Dans l'option avec un seul login, tous les comptes sont sur un volume AFP donc montables partout et ne posant pas de problème de création. Il sont exportés sur le sous-réseau A. Le point de montage est afp mais le dossier est exporté en afp, smb et nfs.
Sur les clients des sous-réseaux A, B et C, le montage passe en AFP. Les dossiers de départ sont donc sur /Network/Servers/AdminA.lip6.fr:/Volumes/Point_de_montage/login
.
>ldapsearch -v -x -b "cn=mounts,dc=lip6,dc=fr"
# AdminA.lip6.fr:/Volumes/Point_de_montage, mounts, lip6.fr
dn: cn=AdminA.lip6.fr:/Volumes/Point_de_montage,cn=mounts,dc=lip6,dc=fr
cn: AdminA.lip6.fr:/Volumes/Point_de_montage
objectClass: mount
objectClass: top
mountDirectory: /Network/Servers/
mountType: url
mountOption: net
mountOption: url==afp://;AUTH=NO%20USER%20AUTHENT@AdminA.lip6.fr/Point_de_montage
Par contre si on veut se connecter sur un poste en ssh, la seul solution consiste à passer en montage NFS. La solution consiste à indiquer au poste du réseau C de monter automatiquement en NFS sur l'interface C2. Pour cela rajouter une section une arborescence LDAP nommée mountsNFS
par exemple.
mountsNFS
en duplicant la section mounts par exemple.
|
cn=mountNFS
.Dans certains cas, en particulier lorsque la négociation Ethernet n'est pas assez rapide, il arrive que le dossier départ ne soit pas monté au démarrage de la machine. L'identification se fait bien mais une fenêtre de dialogue apparaît avec un des messages suivants :
Ce cas est mis en évidence sur des PowerMac G4/733 connectés à des commutateurs cisco avec négociation. En redémarrant la machine, cela marche un coup sur deux.
"Network"
dans sur la ligne Requires = ("Disks", "SecurityServer") de /System/Library/StartupItems/LoginWindow/StartupParameters.plist
.
Lors de la configuration de MacOS X Server (10.4), différents noms d'ordinateurs sont indiqués :
/etc/hostconfig
. MacOS X détermine ce nom par l'un des moyens suivants (dans l'ordre)
/etc/hostconfig
/Network/Local/
(icône Réseau du la barre d'icône à gauche des fenêtres du Finder).
A voir le problème de FireWall lors des lock NFS car les ports sont dynamiques :
rpcinfo -p localhost
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 1020 status
100024 1 tcp 1015 status
100021 0 udp 1008 nlockmgr
100021 1 udp 1008 nlockmgr
100021 3 udp 1008 nlockmgr
100021 4 udp 1008 nlockmgr
100021 0 tcp 1014 nlockmgr
100021 1 tcp 1014 nlockmgr
100021 3 tcp 1014 nlockmgr
100021 4 tcp 1014 nlockmgr
100005 1 udp 989 mountd
100005 3 udp 989 mountd
100005 1 tcp 1012 mountd
100005 3 tcp 1012 mountd
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
Voir aussi l'optimisation: Improve NFS client performance sur MacOS X Hints.
(*) Les photos d'écran de la partie configuration de MacOS X server sont en anglais car il est plus facile de trouver de la documentation en anglais sur ce sujet.
2005
|