~~SLIDESHOW~~ ====== Debian - Administration de base ====== ==== Avant toute chose ==== * :!: **Unix/Linux** est un système d'exploitation dont les commandes sont **sensibles à la casse** : ces dernières devront être saisies en respectant scrupuleusement la casse sous peine de ne pas fonctionner. * :!: toutes les commandes d'administration nécessitent de disposer des droits **root** pour fonctionner (sauf la commande ''ip'') * les **paramètres système** sont stockés dans des **fichiers texte** faciles à éditer avec un éditeur de texte (**nano**, **vim**, **emacs**, ...) * pour qu'une modification soit opérante, il faudra relancer le **démon/service** pour la prendre en compte (opération **restart**) ===== Les fondamentaux ===== * les 3 fichiers de paramétrage réseau d'une machine Unix/Linux : * **/etc/hosts** * **/etc/resolv.conf** * les interfaces * **/etc/network/interfaces** (Debian/Ubuntu) ===== Les fondamentaux - suite ===== * afficher un fichier : ''cat nomfichier'' * afficher un fichier page par page : ''more nomfichier'' , : Pg-suiv, : Quitter * éditer un fichier : ''nano fichier'' ou bien ''vim'', ... ===== /etc/hosts ===== * permet la **résolution locale** * doit contenir les noms **courts** et les noms **longs** (**FQDN**: Fully Qualified Domain Name - Nom complètement qualifié) 127.0.0.1 localhost 127.0.0.1 localhost ip6-localhost ip6-loopback 127.0.1.1 debian.example.com debian * :!: tout nom de machine référencé dans ce fichier doit être //"pinguable"// par son nom * :!: le nom court de la machine doit être **identique** à celui rendu par la commande **hostname** (dans fichier **/etc/hostname** pour **Debian**) * :!: l'**adresse IP** de la machine doit être **identique** à celle définie dans le fichier d'interface (**interfaces**) ou bien à 127.0.0.1 ou à 127.0.1.1 ===== /etc/resolv.conf ===== * permet la **résolution de nom distante** avec des **serveurs de nom DNS** (c.a.d. trouver l'adresse IP correspondant à un nom) search domaine.lan # on concatene quand on à affaire à un nom court nameserver 192.168.1.1 # premier serveur nameserver 192.168.1.2 # second serveur * les serveurs de noms doivent être **joignables** et **fonctionnels** * on pourra tester avec **host**, **nslookup** ou **dig** * exemple : host monserver host monserver.domain.lan host le monde.fr # pour tester resolution externe ===== /etc/network/interfaces (Debian) ===== * comporte la définition des **interfaces réseau** # Interface de bouclage auto lo #activée au demarrage iface lo inet loopback # premiere interface - adr. statique auto eth0 iface eth0 inet static address 172.16.0.34/16 # adresse / masque gateway 172.16.0.21 # passerelle - facult. # deuxieme interface - adr. dynamique (DHCP) auto eth1 iface eth1 inet dhcp ====== les interfaces ====== * s'appelaient habituellement **eth0**, **eth1** ... * depuis quelque temps, le schéma de nommage à changé **ip addr** permet d'obtenir la liste des interfaces root@debian:~# ip addr 1: lo: mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:0f:b0:7d:8f:fb brd ff:ff:ff:ff:ff:ff inet 192.168.0.12/24 brd 192.168.0.255 scope global eth0 inet6 fe80::20f:b0ff:fe7d:8ffb/64 scope link valid_lft forever preferred_lft forever * obtenir un nouveau bail DHCP : **dhclient** ===== les interfaces - 2 ===== === Afficher la configuration des interfaces : ifconfig === root@debian:~# ifconfig lo Link encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 adr inet6: ::1/128 Scope:Hôte UP LOOPBACK RUNNING MTU:16436 Metric:1 Packets reçus:94 erreurs:0 :0 overruns:0 frame:0 TX packets:94 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 Octets reçus:9819 (9.8 KB) Octets transmis:9819 (9.8 KB) eth0 Link encap:Ethernet HWaddr 00:12:3f:83:d2:5f inet adr:10.121.32.70 Bcast:10.121.32.127 Masque:255.255.255.128 adr inet6: fe80::212:3fff:fe83:d25f/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Packets reçus:3099921 erreurs:0 :0 overruns:0 frame:0 TX packets:3056518 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 Octets reçus:1438610418 (1.4 GB) Octets transmis:1980674821 (1.9 GB) Interruption:16 ===== les services réseau ===== * relancer la couche réseau * sur Redhat/Fedora/Centos : **systemctl restart network** * sur Debian/Ubuntu : **systemctl networking restart** * vérifier les ports en écoute : **ss** ou **netstat** (option **-l** : **listen**, **-t** : **tcp**, **-n** : pas de résolution de noms netstat -ln | more ss -ltn # pour Tcp State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 5 127.0.0.1:631 *:* LISTEN 0 128 :::22 :::* LISTEN 0 5 ::1:631 :::* ss -ltu # pour Udp ===== En cas de problème ===== * commencer par vérifier la connectivité avec **mii-tool** et **ping** * si les **temps de réponse** sont très **longs**, le problème est probablement lié à un **problème de résolution de noms** => **vérifier /etc/hosts** * une passerelle non opérationnelle ou injoignable peut également avoir une influence désastreuse sur les temps de réponse ===== Gérer la couche réseau - 1 ===== * **eth0** est la première interface, **eth1** la seconde, **lo** est l'interface de bouclage (**loopback**) === Afficher la table de routage === root@debian:~# route -n Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface 10.121.32.0 0.0.0.0 255.255.255.128 U 0 0 0 eth0 0.0.0.0 10.121.32.126 0.0.0.0 UG 100 0 0 eth0 ===== Gérer la couche réseau - 2 ===== === Afficher la table de routage - ip route === root@debian:~# ip route default via 10.121.32.126 dev eth0 onlink 10.121.32.0/25 dev eth0 proto kernel scope link src 10.121.32.40 ===== Gérer la couche réseau - 4 ===== === Vérifier la connectivité === La commande **ping** permet pde vériifer la connectivité : root@debian:~# ping 10.121.32.22 PING 10.121.32.22 (10.121.32.22) 56(84) bytes of data. 64 bytes from 10.121.32.22: icmp_req=1 ttl=63 time=774 ms 64 bytes from 10.121.32.22: icmp_req=2 ttl=63 time=0.149 ms 64 bytes from 10.121.32.22: icmp_req=3 ttl=63 time=0.110 ms 64 bytes from 10.121.32.22: icmp_req=4 ttl=63 time=0.139 ms ^C --- 10.121.32.22 ping statistics --- 6 packets transmitted, 6 received, 0% packet loss, time 4998ms rtt min/avg/max/mdev = 0.105/129.171/774.386/288.548 ms La commande **ping** peut se faire avec l'adresse IP ou le nom. Le fait que ping fonctionne avec l'adresse IP mais pas avec le nom est révélateur d'un problème de résolution de nom (DNS) ===== Gérer la couche réseau - 5 ===== === Vérifier la connectivité physique === La commande **mii-tool** permet de vériifer la connectivité physique : root@debian:~# mii-tool eth0: negotiated 100baseTx-FD flow-control, link ok eth1: negotiated 100baseTx-FD, link ok ===== Gérer la couche réseau - 6 ===== === Vérifier la résolution de noms === La résolution de noms est impérative pour l'utilisation du réseau. pour tester la **résolution locale** : root@debian:~# host pipo pipo.ldij-lecastel.lan has address 10.121.32.2 On obtient bien l'adresse du serveur pipo (**10.121.32.2**) pour tester la **résolution externe (internet)** : root@debian:~# host lemonde.fr www.lemonde.fr is an alias for www.lemonde.fr.2-01-271d-000d.cdx.cedexis.net. www.lemonde.fr.2-01-271d-000d.cdx.cedexis.net is an alias for wac.3604.edgecastcdn.net. wac.3604.edgecastcdn.net is an alias for gp1.wac.edgecastcdn.net. gp1.wac.edgecastcdn.net has address 93.184.220.20 On obtient bien l'adresse du serveur www.lemonde.fr (**93.184.220.20**) On peut également utiliser ''nslookup www.lemonde.fr'' ====== Routes et passerelle ====== * **ajouter une route ou passerelle par défaut** root@debian:~# route add default gw adresseIP # ou bien encore root@debian:~# ip route add default via adresseIP * **ajouter une route vers un réseau** route@debin:~# route add -net reseau/CIDR gw adresseIP route@debin:~# ip route add reseau/CIDR via adresseIP * **supprimer une route ou passerelle par défaut** : root@debian:~# route del default root@debain:~# ip route del default * :!: **Attention aux multiples routes par défaut** => comportement imprévisible ====== Gérer les services - 1 ====== Les services habituels se lancent par au moyen du service système **systemd**. On peut en obtenir la liste par ''systemctl''. === Liste des services usuels sur une Debian Buster === * **apache2** : serveur web Apache2 * **vsftpd** : serveur FTP vsftp (en voie d'obsolescence) * **ssh** : serveur ssh * **bind9** : serveur DNS bind * **isc-dhcp-server** : serveur DHCP ISC * **mysql**: SGBD MySql * ====== Gérer les services - 2 ====== === Démarrer un service === root@debian:~# systemctl start nomservice === Arrêter un service === root@debian:~# systemctl stop nomservice === Redémarrer un service === root@debian:~# systemctl restart nomservice ===== Gestion des applications et des paquetages ===== === Préliminaire === Avant d'installer un paquet, il est nécessaire de mettre à jour la liste des paquetages par : **apt update** On peut alors décider de mettre à jour les paquetages dont une nouvelle version est disponible : **apt upgrade** ===== Les commandes usuelles de gestion des paquets ===== * installer : **apt install paquet** * rechercher : **apt search nom** * ou **apt list 'nom'** * rechercher si un paquetage est installé : **dpkg -l "chaine*"** * liste des paquetage installés : **dpkg --list** * afficher la liste des fichiers contenus dans un paquetage : **dpkg -L paquet** * supprimer un paquet : **apt-get remove --purge paquet** * reconfigurer un paquetage : **dpkg-reconfigure paquet** ===== le fichier sources.list ===== * contient les adresses des dépots contenant les paquetages adaptés * chemin : **/etc/apt/sources.list** * nécessaire pour installer des applications * :!: tout changement dans le sources.list doit être suivi d'un **apt update** pour prendre en compte les nouvelles listes de paquetage * exemple de fichier **sources.list** pour une distribution **Debian Buster** deb http://deb.debian.org/debian/ buster main non-free contrib deb http://security.debian.org/debian-security buster/updates main contrib non-free * on peut éditer le **sources.list** avec **apt edit-sources** ===== En cas de problème ===== * si l'installation de paquetages ne fonctionne pas, l'origine du problème provient probablement : * du fichier **sources.list** ou * de l'utilisation éventuelle d'un **proxy** (gw:8080 ou 1.2.3.4:8080) dans **/etc/apt/apt.conf** * de la couche réseau (passerelle, DNS, ...) ===== Arrêter/redémarrer une machine ===== === Arrêter une machine === root@debian:~# sudo poweroff :!: Sur **Debian Jessie, Stretch, Buster** ou toute machine utilisant **systemd**, il faut taper ''halt -p'' ou ''poweroff'' === Redémarrer une machine === root@debian:~# sudo reboot ===== Divers ===== ==== Renommer une machine ==== * lancer sed -i 's/ancien/nouveau/g' /etc/host{s,name} * puis redémarrer ==== Autoriser les connexions root en ssh ==== * :!: opération sensible en matière de sécurité echo "PermitRootLogin yes" >> /etc/ssh/sshd_config systemctl restart ssh