Le cours est disponible en ligne: 1)
Il y a 3 manières de monter une interface réseau.
Logiciel en ncurses posant les questions pour monter l'interface:
netconfig
Service réseau:
/etc/rc.d/rc.inet1.conf /etc/rc.d/rc.inet1 stop /etc/rc.d/rc.inet1 start
En ligne de commande (standard):
ifconfig eth0 add 192.168.122.14 netmask 255.255.255.0
22/03/2005
Pour observer les connexions établies par la machine, on utilise la commande netstat:
linux@forma312:~$ netstat -a Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:time *:* LISTEN tcp 0 0 *:sunrpc *:* LISTEN tcp 0 0 *:x11 *:* LISTEN tcp 0 0 *:auth *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 *:631 *:* LISTEN tcp 0 0 10.10.3.112:36998 www.hellea.be:5223 ESTABLISHED tcp 0 0 10.10.3.112:45574 www.hellea.be:imaps ESTABLISHED tcp 0 0 10.10.3.112:48940 www.hellea.be:imaps ESTABLISHED udp 0 0 *:biff *:* udp 0 0 *:time *:* udp 20152 0 *:bootpc *:* udp 0 0 *:sunrpc *:* udp 0 0 *:631 *:* Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 5779 /tmp/.X11-unix/X0 unix 2 [ ACC ] STREAM LISTENING 6144 /tmp/orbit-linux/linc-84a-0-1bdacd6b31e59 unix 2 [ ACC ] STREAM LISTENING 5227 /dev/gpmctl unix 6 [ ] DGRAM 4002 /dev/log unix 2 [ ] DGRAM 872 @udevd unix 2 [ ACC ] STREAM LISTENING 5986 /tmp/orbit-linux/linc-81e-0-518e946b501c2 unix 2 [ ACC ] STREAM LISTENING 5992 /tmp/orbit-linux/linc-818-0-396b5a3c51e8d unix 3 [ ] STREAM CONNECTED 6274 /tmp/.X11-unix/X0 unix 3 [ ] STREAM CONNECTED 6273 unix 3 [ ] STREAM CONNECTED 6147 /tmp/orbit-linux/linc-84a-0-1bdacd6b31e59 unix 3 [ ] STREAM CONNECTED 6146 unix 3 [ ] STREAM CONNECTED 6143 /tmp/orbit-linux/linc-81e-0-518e946b501c2 unix 3 [ ] STREAM CONNECTED 6142 unix 3 [ ] STREAM CONNECTED 6132 /tmp/.X11-unix/X0 unix 3 [ ] STREAM CONNECTED 6131 unix 3 [ ] STREAM CONNECTED 6056 /tmp/.X11-unix/X0 unix 3 [ ] STREAM CONNECTED 6055 unix 3 [ ] STREAM CONNECTED 5996 /tmp/orbit-linux/linc-818-0-396b5a3c51e8d unix 3 [ ] STREAM CONNECTED 5995 unix 3 [ ] STREAM CONNECTED 5994 /tmp/orbit-linux/linc-81e-0-518e946b501c2 unix 3 [ ] STREAM CONNECTED 5991 unix 2 [ ] DGRAM 5982 unix 3 [ ] STREAM CONNECTED 5962 /tmp/.X11-unix/X0 unix 3 [ ] STREAM CONNECTED 5961 unix 3 [ ] STREAM CONNECTED 5825 /tmp/.X11-unix/X0 unix 3 [ ] STREAM CONNECTED 5824 unix 3 [ ] STREAM CONNECTED 5823 /tmp/.X11-unix/X0 unix 3 [ ] STREAM CONNECTED 5781 unix 2 [ ] DGRAM 5226 unix 2 [ ] DGRAM 4034 unix 2 [ ] DGRAM 4005
La table de routage permet aux paquets réseaux de savoir où aller.
Il y a toujours une route pas défaut.
On peut voir la table de routage en tapant:
route
ou
netstat -r
Pour rajouter une route statique:
route add ...
Pour rajouter une route au démarrage, l'ajouter dans /etc/rc.d/rc.local (propre à /SlackWare).
Pour activer le routage, il suffit de mettre à 1 le bit /proc/sys/net/ipv4/ip_forward:
echo 1 > /proc/sys/net/ipv4/ip_forward
Il y a un script pour le faire:
/etc/rc.d/rc.ip_forward start
Il suffit de le rendre exécutable pour l'activer au démarrage:
chmod u+x /etc/rc.d/rc.ip_forward
/proc est un répertoire virtuel qui contient différents paramètres (par exemple, du noyau), ces paramètres sont chargés au démarrage, certains peuvent être modifiés à la volée (comme le routage ci-dessus).
Service permettant de distribuer des adresses IP dynamiquement.
Slackware utilise par défaut dhcpcd. Fedora utilise dhclient par défaut. Il en existe d'autres, comme pump.
Le client DHCP va ajouter des entrées dans le fichier /etc/resolv.conf. C'est le fichier qui indique les serveurs DNS auxquels la machine peut se connecter.
C'est dhcpd. Pour le lancer:
dhcpd
Il n'y a pas de script de démarrage dans Slackware. La configuration se fait dans le fichier /etc/dhcpd.conf. On y retrouve les ranges qu'il va utiliser et les options (soit par range, soit globales).
Configurer un serveur DHCP avec dhcpd
On édite /etc/dhcpd.conf
ddns-update-style ad-hoc; subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.1; range 192.168.1.10 192.168.1.100; }
Ensuite, on change son adresse IP pour avoir une adresse dans le range qu'on attribue:
ifconfig eth0 192.168.1.1 netmask 255.255.255.0
Finalement, on lance le serveur DHCP:
dhcpd
Pour vérifier qu'il tourne:
ps ax | grep dhcp 1373 ? Ss 0:00 /sbin/dhcpcd -d -t 10 eth0 2468 ? Ss 0:00 dhcpd
Pour voir les leases attribués:
cat /var/state/dhcp/dhcpd.leases
On peut aussi le voir dans la table ARP:
arp Address HWtype HWaddress Flags Mask Iface 192.168.7.99 ether 00:02:A5:CC:9F:12 C eth0 192.168.7.100 ether 00:02:A5:CC:A6:32 C eth0
Comme client, pour accrocher un serveur (avec Slackware):
root@forma312:/home/linux# /etc/rc.d/rc.inet1 stop root@forma312:/home/linux# /etc/rc.d/rc.inet1 start dhcpcd: MAC address = 00:02:a5:dd:3a:d5 dhcpcd: your IP address = 192.168.6.99
On peut aussi faire: Ceci donne le numéro de processus de dhc
ifconfig eth0 down ps ax | grep dhcpcd 2852 ? Ss 0:00 dhcpcd kill 2852 dhcpcd
ifconfig eth0 10.10.21.12 netmask 255.255.255.0 route add default gw 10.10.21.250 echo "nameserver 194.7.1.4" > /etc/resolv.conf
Domain name server
Sous Linux, on peut résoudre le nom soit avec le DNS (fichier de configuration /etc/resolv.conf), soit avec le fichier hosts (/etc/hosts).
Le fichier /etc/hosts:
# For loopbacking. 127.0.0.1 localhost 127.0.0.1 forma312.tf3.be forma312 10.10.3.111 forma311.ft3.be format311 # End of hosts.
Nous allons créer un serveur local.
Nous verrons uniquement BIND. Cependant, il existe d'autres serveurs de noms (comme 2)).
Le fichier de configuration est /etc/named.conf Les fichiers de configuration de zones se trouve dans /var/named
Les fichiers de zones doivent comporter:
Faire tourner un DNS local. Pour l'exercice: reseau: 192.168.5.0 le nom de la zone: titi.local mon IP: 192.168.5.1 mon nom de machine: forma312
On doit donc d'abord configurer le fichier /etc/named.conf, ensuite les fichiers de zone dans /var/named/.
On ajoute à /etc/named.conf:
zone "titi.local" IN { type master; file "caching-example/titi.local"; allow-update { none; }; }; zone "5.168.192.in-addr.arpa" IN { type master; file "caching-example/revtiti.local"; allow-update { none; }; };
Changer son IP:
ifconfig eth0 10.10.3.200 netmask 255.255.255.0
Ajouter le fichier /var/named/caching-example/titi.local:
$TTL 86400 @ IN SOA forma312.titi.local. root.titi.local. ( 2005032215 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS forma312.titi.local. forma312 IN A 192.168.5.1
et le fichier /var/named/caching-example/revtiti.local:
$TTL 86400 @ IN SOA forma312.titi.local. root.titi.local. ( 2005032215 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS forma312.titi.local. 1 IN PTR forma312.titi.local.
Le 1 au début de la dernière ligne est la partie host de l'adresse IP du serveur (192.168.5.1) Changer le hostname:
hostname forma312
Vérifier la configuration:
root@forma312:/var/named/caching-example# named-checkzone titi.local /var/named/caching-example/titi.local zone titi.local/IN: loaded serial 2005032215 OK root@forma312:/var/named/caching-example# named-checkzone titi.local /var/named/caching-example/revtiti.local zone titi.local/IN: loaded serial 2005032215 OK root@forma312:/var/named/caching-example# named-checkconf /etc/named.conf root@forma312:/var/named/caching-example#
Mettre exécutable le script dans /etc/rc.d/ pour
chmod a+x /etc/rc.d/rc.bind
Changer le nameserver dans /etc/resolv.conf:
echo "nameserver 192.168.5.1" > /etc/resolv.conf
Démarrer le service:
root@forma312:/var/named/caching-example# /etc/rc.d/rc.bind start Starting BIND: /usr/sbin/named
Vérifier qu'il tourne:
root@forma312:/var/named/caching-example# ps ax | grep name 3494 ? Ss 0:00 /usr/sbin/named
Faire une résolution de nom:
root@forma312:/var/named/caching-example# nslookup 192.168.5.1 Server: 192.168.5.1 Address: 192.168.5.1#53 1.5.168.192.in-addr.arpa name = forma312.titi.local. root@forma312:/var/named/caching-example# nslookup forma312.titi.local Server: 192.168.5.1 Address: 192.168.5.1#53 Name: forma312.titi.local Address: 192.168.5.1
Network filesystem
Développé par Sun au début des années 1980.
Permet de partager des partitions.
Sur Slackware, il faut d'abord lancer le service /usr/bin/rpc.mount qui fait partie de /etc/rc.d/rc.nfsd
Ensuite, on peut monter une partition sur une machine distante:
mount -t nfs 10.10.2.110:/home/guest /home/toto/partage
N.B: il faut que le service portmap tourne.
Fichier de configuration: /etc/exports:
/home/serveur 10.10.2.0/255.255.255.0(rw) /home/public *(ro)
Pour obtenir la liste des clients connectés:
cat /var/lib/nfs/rmtab
Créer un répertoire /home/public et le partager. Demander à un camarade de le monter chez lui.
Créer le répertoire à partager:
mkdir /home/public
Modifier /etc/exports:
/home/public *(ro,async)
Démarrer le service nfsd:
root@forma312:/usr/src/linux# /etc/rc.d/rc.nfsd start FATAL: Module nfsd not found. Starting NFS services: /usr/sbin/exportfs -r /usr/sbin/rpc.rquotad /usr/sbin/rpc.nfsd 8 /usr/sbin/rpc.mountd /usr/sbin/rpc.lockd /usr/sbin/rpc.statd
Note: vu que nfsd est en dur dans le noyau, c'est normal qu'il ne soit pas trouvé en module.
Eventuellement, exporter le(s) répertoire(s):
exportfs -a
Quand le camarade s'est connecté, vérifier les connections:
root@forma312:/usr/src/linux# cat /var/lib/nfs/rmtab 10.10.21.107:/home/public:0x00000002 10.10.21.108:/home/public:0x00000001
mount -t nfs 10.10.21.108:/home/milieu /mnt/test mount /dev/sda3 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) /dev/sda1 on /boot type ext3 (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) 10.10.21.108:/home/milieu on /mnt/test type nfs (rw,addr=10.10.21.108,addr=10.10.21.108) root@forma312:~# ls /mnt/test/ -la total 8 drwxr-xr-x 2 root root 4096 2005-03-23 11:29 . drwxr-xr-x 6 root root 4096 2005-03-23 11:51 .. -rw-r--r-- 1 root root 0 2005-03-23 11:28 blabla -rw-r--r-- 1 root root 0 2005-03-23 11:29 bloblo -rw-r--r-- 1 root root 0 2005-03-23 11:29 tralalaaaa
Pour le client, si on reboote, il ne montera pas automatiquement la partition distante. Pour ce faire, il faut rajouter une ligne dans /etc/fstab:
10.10.21.107:/home/fenetre /mnt/test nfs defaults 0 0
Centralisation des mots de passe (pour les logins). C'est un système d'annuaire.
C'est un peu compliqué à configurer.
nisdomainname tagada echo "tagada" > /etc/defaultdomain echo "domain tagada server 10.10.21.1 ypserver 10.10.21.1" >> /etc/yp.conf vi /etc/nsswitch.conf
Ne changer que les lignes suivantes:
# passwd: files nis # shadow: files nis # group: files nis passwd: compat group: compat
en:
passwd: nis files shadow: nis files group: nis files #passwd: compat #group: compat
N.B: les 2 dernières lignes indiquent qu'il y a compatibilité entre les versions NIS (les commenter).
vi /etc/rc.d/rc.yp
Décommenter (enlever les #) pour les 3 lignes suivantes (17-19):
if [ -r /etc/defaultdomain ]; then nisdomainname `cat /etc/defaultdomain` fi
ainsi que ces 3 lignes-ci (53-56):
if [ -d /var/yp ]; then echo "Starting NIS services: /usr/sbin/ypbind -broadcast" /usr/sbin/ypbind -broadcast fi
(propre à Slackware)
Lancer le service NIS:
/etc/rc.d/rc.yp Starting NIS services: /usr/sbin/ypbind -broadcast
Tester: presser les touches ctrl+alt+F3
Login: salle3 Password: salle3
Si ça ne fonctionne pas, vérifier le domaine NIS:
nisdomainname tagada
Vérifier le serveur NIS:
ypwhich 10.10.21.1
Vérifier qu'on arrive à joindre le serveur NIS:
ping 10.10.21.1 -c 2 PING 10.10.21.1 (10.10.21.1) 56(84) bytes of data. 64 bytes from 10.10.21.1: icmp_seq=1 ttl=64 time=0.228 ms 64 bytes from 10.10.21.1: icmp_seq=2 ttl=64 time=0.209 ms --- 10.10.21.1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.209/0.218/0.228/0.017 ms
Vérifier que le le serveur écoute comme client:
ps ax | grep yp 3374 ? S 0:00 /usr/sbin/ypbind -broadcast 3375 ? S 0:00 /usr/sbin/ypbind -broadcast 3376 ? S 0:00 /usr/sbin/ypbind -broadcast 3377 ? S 0:00 /usr/sbin/ypbind -broadcast
Vérifier les fichiers de configuration: /etc/nsswitch.conf, /etc/yp.conf /etc/defaultdomain:
cat /etc/defaultdomain tagada cat /etc/yp.conf | grep -v ^# domain tagada server 10.10.21.1 ypserver 10.10.21.1 cat /etc/nsswitch.conf | grep -v ^# passwd: nis files shadow: nis files group: nis files hosts: files dns networks: files services: files protocols: files rpc: files ethers: files netmasks: files netgroup: files bootparams: files automount: files aliases: files
Vérifier le fichier de démarrage du serveur NIS:
cat /etc/rc.d/rc.yp | grep -v ^# if [ -r /etc/defaultdomain ]; then nisdomainname `cat /etc/defaultdomain` fi if [ -d /var/yp ]; then echo "Starting NIS services: /usr/sbin/ypbind -broadcast" /usr/sbin/ypbind -broadcast fi
Redémarrer le serveur NIS:
/etc/rc.d/rc.yp stop /etc/rc.d/rc.yp start
Mon serveur: domaine titi.
ypdomainname titi echo "titi" > /etc/defaultdomain
/var/yp/securenets: fichier pour configurer les adresses YP qui peuvent se connecter.
N.B: Don't forget to allow localhost access to ypserv! Else ypserv will not work correctly.
Ici, on ne le change pas (pas très sécurisé…)
Générer les maps:
cd /var/yp make
echo "*:passwd.byname:port:yes *:passwd.byuid:port:yes" > /etc/ypserv.conf
Explication: Fichier de configuration sur le serveur: /etc/ypserv.conf
host:map:security:mangle
host: IP map: MAC ou * pour toutes security:
mangle: yes | no …
vi /etc/rc.d/rc.yp
Décommenter (enlever les #) les morceaux de scripts pour le serveur: lignes 24-27:
if [ -x /usr/sbin/ypserv ]; then echo "Starting NIS server: /usr/sbin/ypserv" /usr/sbin/ypserv fi
lignes 34-39 (37-38 restent commentées):
if [ -x /usr/sbin/rpc.yppasswdd ]; then echo "Starting NIS master password server: /usr/sbin/rpc.yppasswdd" /usr/sbin/rpc.yppasswdd # echo "Starting NIS master password server: /usr/sbin/rpc.yppasswdd -e chsh -e chfn" # /usr/sbin/rpc.yppasswdd -e chsh -e chfn fi
Démarrer le service:
/etc/rc.d/rc.yp
Pour tester, nous allons mettre notre machine cliente d'elle-même. (cf. partie cliente)
Ensuite, nous vérifions que nous utilisons bien NIS pour s'identifier:
ypwhich
Vérifions les utilisateurs:
ypcat passwd.byuid linux:$1$oiW0jUWC$htMWb82LoCTTbPSqoxcWs1:1000:100:Linux,,,:/home/linux:/bin/bash
Pour s'assurer que nous n'utilisons pas /etc/passwd et /etc/shadow en local, nous ajoutons * devant le mot de passe encrypté dans /etc/shadow:
linux:*$1$oiW0jUWC$htMWb82LoCTTbPSqoxcWs1:12859:0:99999:7:::
Ensuite, nous ouvrons une console (ctrl+alt+F5) et nous nous identifions comme linux. Si tout se passe bien, on peut s'identifier :)
Je ne sais pas où sont les logs, mais c'est repris comme un login normal dans l'output de la commande:
last
Logiciel qui utilise SMB (Server Message Block) (cf. 3)).
Il permet de partager des répertoires avec des machines Windows, de simuler des contrôleurs de domaines (PDC et BDC en NT4).
Pour se connecter, c'est mieux de le faire avec les adresses IP que les noms (nécessite un serveur DNS configuré).
c'est un shell. Commandes:
Pour partager des répertoires (comme NIS pour un environnement linux-only).
Pour utiliser les imprimantes réseaux avec un serveur d'impression Windows.
configuration: /etc/samba/smb.conf section globale:
Section répertoire partagé:
Pour vérifier la syntaxe du fichier, on peut utiliser la commande:
testparm
smbd (TCP) et nmbd (UDP)
fichier /etc/samba/smbpasswd
pour ajouter un utilisateur:
smbpasswd -a user
Pour vérifier que samba est bien installé sur Slackware, on lance KPackage:
kpackage
Là, on peut voir que le package samba-3.0.10-i486-1 est installé.
Le noyau gère-t-il le filesystem smb?
grep SMB /usr/src/linux/.config # CONFIG_SMB_FS is not set
Non :(
cd /usr/src/linux make menuconfig
Sélectionner SMB en module:
File Systems -> Network File Systems -> SMB file system support (en module: M)
Ensuite, on sauve et on compile:
make make modules_install make install mv /vmlinuz /boot/vmlinuz-2.6.11-smb vi /etc/lilo.conf lilo
Et on reboote:
reboot
Nous allons configurer le /home de l'utilisateur salle3.
copier l'exemple:
cp /etc/samba/smb.conf-sample /etc/samba/smb.conf
Tester:
testparm Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Processing section "[printers]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parameters [global] workgroup = MYGROUP server string = Samba Server log file = /var/log/samba.%m max log size = 50 dns proxy = No [homes] comment = Home Directories read only = No browseable = No [printers] comment = All Printers path = /var/spool/samba printable = Yes browseable = No
Lancer les services:
/etc/rc.d/rc.samba start
Créer l'utilisateur root dans samba:
smbpasswd -a salle3
Pour tester (en temps que client):: Monter /home:
mount -t smbfs //10.10.3.1/homes /mnt/salle3 -o username=salle3
ou
smbmount //10.10.3.1/homes /mnt/salle3 -o username=salle3
Ensuite, /home/salle3 du serveur est accessible sur le client en /mnt/salle3 (comme pour NFS).
Il ne faut pas faire tourner le service samba (il suffit d'avoir dans le noyau ou en module smbfs).
mount -t smbfs -o username=administrator //10.10.3.104/c$ /mnt
Par défaut sous Windows, tous les volumes sont partagés pour le user administrator.
smbclient //10.10.3.104/c$ -U administrator Password: Domain=[FORMA304] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
Pour le faire tourner, cf. le chapitre sur xinetd.
Se connecter en surfant sur http://localhost:901/ Il demande un login et un mot de passe: root et le mot de passe dans /etc/shadow (pas l'utilisateur samba).
Une fois identifié, on peut faire l'administration via le browser.
xinetd est une version améliorée de inetd qui permet de lancer des services réseau.
L'avantage est que c'est inetd qui appelle le daemon correspondant au service lorsqu'on y fait appel.
Configuration dans le fichier /etc/inetd.conf
Pour pouvoir utiliser swat, on décommente (enlever #) la ligne suivante:
#swat stream tcp nowait.400 root /usr/sbin/swat swat
Arrêter le daemon:
/etc/rc.d/rc.inetd stop
Pour le démarrer:
/etc/rc.d/rc.inetd start
Ensuite, on peut se connecter en surfant sur http://localhost:901/
Outil d'administration système via un browser.
Télécharger le package pour la version 10.0:
wget http://linuxpackages.inode.at/Slackware-10.0/Daemon/webmin/webmin-1.160-noarch-1rsa.tgz
Installation:
installpkg webmin-1.160-noarch-1rsa.tgz
Il pose quelques questions (distribution, port, utilisateur, etc.).
Ensuite, on peut s'y connecter à l'adresse http://localhost:10000/
Pour démarrer ou arrêter le service webmin:
/usr/libexec/webmin/webmin-init |start|stop|restart