Atelier SysRes SE4 2024/2025 E12

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche

Projet Virtualisation BARRET Maxime

Création / Connexion aux machines virtuelles

Dans un premier temps, nous devons créer nos trois VM. Pour ce faire, nous avons utilisé la commande xen-create-image comme ci dessous:

root@capbreton:~# xen-create-image --hostname=SE4.Rod --dhcp --bridge=Rodripont --dir=/usr/local/xen --size=10GB --dist=daedalus --memory=1024M --force

La commande xen create pour la démarrer

xen create /etc/xen/SE4.Rod.cfg

Et la commande xen console pour s'y connecter

xen console SE4.Rod

Montage /var et /home

Dans cette partie, il était nécessaire de monter le système de fichier /var et /home sur nos deux machines de services.

Création des fichier sur capbreton

Pour attribuer de l'espace pour nos répertoire /home et /var sur nos VM, nous devons commencer une manipulation depuis capbreton.

Il faut tout d'abord créer deux fichier dans le répertoire /dev/virtual de capbreton. Ces deux fichiers sont SE4.Rod.var et SE4.Rod.home. On peut les retrouver ci-dessous:

root@capbreton:/dev/virtual# ls
hawker-home   rex-var		   SE4.ElMordjene.var  SE4.Gyro.var	 SE4.Moon.var	    SE4.Rod.var
hawker-var    SE4.Apollo.home	   SE4.Gaby.home       SE4.jeanluc.home  SE4.Orion.home     SE4.Vi-home
proxmox-disk  SE4.Apollo.var	   SE4.Gaby.var        SE4.jeanluc.var	 SE4.Orion.var	    SE4.Vi-var
proxmox-swap  SE4.Atreus.home	   SE4.Gtr-home        SE4.Jinx-home	 SE4.Poseidon.home
rex-2-disk    SE4.Atreus.var	   SE4.Gtr-var	       SE4.Jinx-var	 SE4.Poseidon.var
rex-2-swap    SE4.Bree.home	   SE4.Gyro-home       SE4.Kratos.home	 SE4.Rigo.home
rex-3-disk    SE4.Bree.var	   SE4.Gyro.home       SE4.Kratos.var	 SE4.Rigo.var
rex-3-swap    SE4.ElMordjene.home  SE4.Gyro-var        SE4.Moon.home	 SE4.Rod.home

Allocation sur les VM

Après l'étape précédente, il faut désormais modifier le fichier .cfg de la VM pour y ajouter les deux répertoires. On modifie la partie Disk devices:

#  Disk device(s).
#
root        = '/dev/xvda2 ro'
disk        = [
                  'file:/usr/local/xen/domains/SE4.Rod/disk.img,xvda2,w',
                  'file:/usr/local/xen/domains/SE4.Rod/swap.img,xvda1,w',
		          'phy:/dev/virtual/SE4.Rod.home,xvda3,w',
		          'phy:/dev/virtual/SE4.Rod.var,xvdb1,w',
              ]

En se plaçant désormais sur la VM concernée, on modifie le fichier fstab pour y ajouter nos disk:

/dev/xvda1 none swap sw 0 0
/dev/xvda2 / ext4 noatime,nodiratime,errors=remount-ro 0 1
/dev/xvdb1 /var ext4 defaults 0 2
/dev/xvda3 /home ext4 defaults 0 2

On fait attention à attribuer la partition associée au bon répertoire. Ici /dev/xvda3 avec /home et /dev/xvdb1 avec /var. Une fois ces deux lignes ajoutées, on peut redémarrer le VM depuis capbreton avec la commande

xen shutdown SE4.Rod

Au redémarrage on peut utiliser la commande lsblk pour vérifier l'appartion de nos partitions:

root@SE4:/var# lsblk
NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda1 202:1    0  512M  0 disk [SWAP]
xvda2 202:2    0   10G  0 disk /
xvda3 202:3    0   10G  0 disk 
xvdb1 202:17   0   10G  0 disk

Montage des fichiers

Dans cette partie, il est demandé de monter nos partitions sur les répertoires /var et /home.

Montage de /var

Il s'agit de la manipulation la plus délicate réalisée jusqu'à présent car en cas de mauvaise manipulation, il sera nécessaire de recréer une nouvelle VM.

Voici les commandes réalisées pour le bon procédé :

mkfs -t ext4 /dev/xvdb1
mount /dev/xvdb1 /mnt
mv /var/* /mnt
umount /mnt
mount -a
Montage de /home

Le montage de /home est similaire à celui du /var. A l'exception que, celui-ci étant vide, il n'est pas nécessaire de réaliser les commandes 2,3 et 4.

mkfs -t ext4 /dev/xvda3
mount -a
Résultat de montage

Pour vérifier le résultat du montage, on peut réaliser un ls dans le répertoire /var pour s'assurer qu'il y ait bien des dossiers à l'intérieur.

Mais également faire la commande df -h :

root@SE4:/var# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            973M     0  973M   0% /dev
tmpfs           199M   64K  199M   1% /run
/dev/xvda2      9.8G  448M  8.8G   5% /
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           500M     0  500M   0% /dev/shm
/dev/xvdb1      9.8G  171M  9.1G   2% /var
/dev/xvda3      9.8G   24K  9.3G   1% /home

On retrouve bien nos partitions montées sur les répertoires associés. C'est un succès.

Adressage IPv4 et IPv6

Il est demandé d'attribuer des adresses IPv4 et IPv6 à nos machines

Machine mandataire

Pour la suite, on va initier une des deux adresses IPv4 sur eth1 or cet interface n'existe pas sur les VM. Il faut donc la créer depuis le fichier .cfg de la machine sur capbreton.

Dans la catégorie Networking, on retrouve une ligne vif à modifier. On la modifie pour créer une interface eth1 sur le bridge de la promotion SE4 en plus du eth0 déjà présent.

#  Networking
#
dhcp        = 'dhcp'
vif         = [ 'mac=00:16:3E:08:13:E7,bridge=RodriPont', 
		        'mac=00:16:3E:08:13:E8, bridge=SE4' ]

Au redémarrage de la machine, l'interface eth1 existera. On peut donc modifier le fichier /etc/network/interfaces sans problèmes.

auto eth0
iface eth0 inet static
        address 172.16.17.1
        netmask 255.255.255.0
#iface eth0 inet dhcp
# post-up ethtool -K eth0 tx off
iface eth0 inet6 auto

auto eth1
iface eth1 inet static
        address 193.48.57.169/28
        gateway 193.48.57.161

On retrouve bien l'adresse Ipv4 utilisée par nos deux machines de services en tant que gateway, une adresse IPv6 et une adresse IPv4 sur un réseau routé. On a attribué en gateway de cette dernière l'adresse 193.48.57.161/28 que l'on a attribué plus tard à l'adresse du Vlan 1 sur le commutateur en E304. Après avoir tapé la commande ip a :

root@SE4:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:08:13:e7 brd ff:ff:ff:ff:ff:ff
    inet 172.16.17.1/24 brd 172.16.17.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:fe08:13e7/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:08:13:e8 brd ff:ff:ff:ff:ff:ff
    inet 193.48.57.169/28 brd 193.48.57.175 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:fe08:13e8/64 scope link 
       valid_lft forever preferred_lft forever

Machines de services

On modifie le fichier /etc/network/interfaces pour lui attribuer une adresse IPv4 et une adresse IPv6. Pour l'adresse IPv6, il n'y a pas de problème. On peut simplement y inscrire la ligne suivante :

iface eth0 inet6 auto

Pour l'adresse IPv4, on a dû choisir une adresse réseau privée que notre binome utilisera. Il s'agit de 172.16.17.0 /24.

Il est également nécéssaire de considérer la machine mandataire comme était la gateway accessible par les deux machines de services. On lui a attribué l'adresse IPv4 172.16.17.1.

Ainsi, on peut compléter notre fichier et rajouter l'adresse static :

iface eth0 inet static
	address 172.16.17.2
 	netmask 255.255.255.0
 	gateway 172.16.17.1

Sur le même principe que la machime mandataire, on peut créer une dexième interface (eth1) sur nos machines de service reliée au bridge SE4. Ainsi, on peut leur attribué une adresse IPv6 sur le bridge SE4.

Séance improvisée du 04/02/2025

Configuration des Vlan

Pendant la séance improvisée du 4/02/2025, nous avons du attribué à chaque personne un réseau Vlan ainsi qu'une adresse réseau associé. On peut retrouver le tableau correspondant à cette attribution sur la page d'accueil.

De plus, nous avons réalisé le Vlan 50, où toutes les machines xen seront connectées mais également le Vlan 530 qui assure l'accès au commutateur SR52 et donc un accès à Internet.

Pour le choix des adresses de réseau utilisées, nous avons choisi les adresses privées en 10.0.0.0 que nous avons adapté (10.0.100+num.0/24) pour chacun.

Connexion SSH au routeur

Le plus important est de pouvoir accéder en SSH au routeur disposé dans la salle E304. La connexion est possible dès la création du Vlan 50 qui comprend le réseau routé présenté dans le sujet.

Il nous a fallu également créé une liste qu'on a ensuite mis dans une classe où l'on autorise les adresses ip routé :

ip access-list standard 10
 10 permit 193.48.57.160 0.0.0.15
 20 deny   any

line vty 0 4
 access-class 10 in
 password g0llum_fr0d0
 transport input ssh
line vty 5 15
 access-class 10 in
 password g0llum_fr0d0
 transport input ssh

Pour se connecter,on éffectue la commande suivante :

ssh admin@193.48.57.161 -o KexAlgorithms=diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1 -o HostKeyAlgorithms=ssh-rsa

Protocole OSPF

Nous utilisons le protocole OSPF pour générer des routes efficaces au sein de nos réseaux.

Avec les personnes présentes, nous avons configuré le routeur pour y ajouter une option pour le mode OSPF.

router ospf 1
 router-id 10.0.101.1
 summary-address 192.168.0.0 255.255.0.0
 summary-address 10.0.0.0 255.0.0.0 not-advertise
 summary-address 192.168.37.0 255.255.255.0 not-advertise
 summary-address 193.48.57.160 255.255.255.240
 redistribute static route-map ospf
 redistribute connected
 network 192.168.222.64 0.0.0.7 area 10
 default-information originate
!

On peut vérifier que le protocole OSPF est bien actif en tapant la commande "show ip route". On retrouve alors des "O" avant certaines lignes, ce qui montre son bon fonctionnement.

O*E2  0.0.0.0/0 [110/1] via 192.168.222.65, 03:59:15, Vlan530
      192.168.222.0/24 is variably subnetted, 4 subnets, 3 masks
O E2     192.168.222.0/29 [110/10] via 192.168.222.65, 03:59:15, Vlan530
C        192.168.222.64/28 is directly connected, Vlan530
L        192.168.222.66/32 is directly connected, Vlan530
O E2     192.168.222.240/28 [110/10] via 192.168.222.65, 03:59:15, Vlan530
      193.48.57.0/24 is variably subnetted, 2 subnets, 2 masks
C        193.48.57.160/28 is directly connected, Vlan50

Test Internet

Avec les commandes ospf réalisées, nous avons accès à internet comme le montre le ping ci-dessous et une interface mise dans le Vlan 530, nous avons désormais accès à Internet. Pour le vérifier, nous avons essayé de ping google depuis la machine mandataire. Au début, le ping ne fonctionnait pas et nous avons alors dû rajouter une route par défaut. On obtient désormais ce résultat en tapant "ip route"

root@SE4:~# ip route
default via 193.48.57.161 dev eth1 onlink 
172.16.17.0/24 dev eth0 proto kernel scope link src 172.16.17.1 
193.48.57.160/28 dev eth1 proto kernel scope link src 193.48.57.169

On retente le ping google :

root@SE4:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=114 time=4.05 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=114 time=3.85 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=114 time=4.04 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=114 time=3.90 ms
^C
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 3.854/3.959/4.052/0.086 ms

Notre machine mendataire à donc bien accès à Internet grâce à sa connexion au SR52.

On peu désormais installer les package demandés comme apache2, bind9 et ssh.

Redirection de port

nft add table ip NAT

nft add chain NAT PREROUTING { type nat hook prerouting priority 0\; }

nft add rule NAT PREROUTING tcp dport 2201 dnat to 172.16.17.2:22

nft add rule NAT PREROUTING tcp dport 2202 dnat to 172.16.17.3:22


Masquarade pour accès à Internet sur les machines de services fonctionnelle.

Serveur DNS

Pour pouvoir accéder aux serveur DNS que l'on va configurer plus tard, nous devons mettre à jour le fichier /etc/resolv.conf :

root@SE4:~# cat /etc/resolv.conf 
search plil.info
nameserver 172.26.188.12
nameserver 193.48.57.48

search sudiste.online
nameserver 172.16.17.2
nameserver 172.16.17.3

on met sur la première ligne le serveur principal et le secondaire sur la deuxième.

On configure désormais le serveur DNS à l'aide des fichiers bind9.

Fichier named.conf.local

zone "sudiste.online" {
	type master;
	file "/etc/bind/zones/db.sudiste.online";

	allow-transfer{secondaries;};  // filtrage des secondaires
	also-notify{hiddensecondaries;}; // pour les secondaires vicieux
 	notify yes; 
};

acl "secondaries" {
	2001:660:4401:60a0:216:3eff:feb9:b5d0;
	2001:660:4401:60a0:216:3eff:fe08:13e8;
};

masters "hiddensecondaries" {
	2001:660:4401:60a0:216:3eff:fe08:13e8;
};

zone "robotech.monster" {
	type slave;
	file "/etc/bind/backup/db.robotech.monster";
	masters{2001:660:4401:60a0:216:3eff:feb9:b5d0;};
};

La typographie présente dans le cours n'est pas correcte. La notation "politiquement correcte" n'est pas valide pour l'utilitaire bind9 et nous devons donc utiliser les notations slave et master.

Dans ce fichier, on introduit une zone principale, notre serveur associé au nom de domaine de la machine de service, et une zone secondaire, liée à la deuxième machine de service.

On utilise les adresses IPv6 des machines.

On peut vérifier la syntaxe de notre fichier de configuration avec la commande named-checkconf.

Fichier de zone principale

On doit désormais réaliser un fichier de zone correspond à notre serveur DNS.

root@Rod:/etc/bind# cat zones/db.sudiste.online 
$TTL    200
@       IN      SOA     ns.sudiste.online. admin.sudiste.online. (
                             12         ; Version
                          21600         ; Refresh secondary
                           3600         ; Retry secondary
                        2592000         ; Expire if no erfresh
                          86400 )       ; Negative Cache
;
	IN	NS	ns.sudiste.online.
	IN	NS	ns.robotech.monster.
ns   	IN      AAAA    2001:660:4401:60a0:216:3eff:feb9:255b
ns	IN	A	193.48.57.169	
@	IN	A	193.48.57.169	
@   	IN      AAAA    2001:660:4401:60a0:216:3eff:feb9:255b
www	IN 	CNAME	ns

Pour charger la version du fichier de zone, on tape la commande "named-checkzone db.sudiste.online db.sudiste.online " en étant dans le répertoire /etc/bind

root@SE4:/etc/bind# named-checkzone db.sudiste.online zones:db.sudiste.online  
zone db.sudiste.online/IN: loaded serial 12
OK

Tester le serveur DNS

On utilise 3 commandes pour gérer le serveur DNS avec bind9.

service bind9 start
service bind9 status
service bind9 stop

On autorise les utilisateurs bind à accéder aux fichiers de zone et de config :

chown bind:bind /etc/bind/zones/db.sudiste.online
chmod 644 /etc/bind/zones/db.sudiste.online
chown bind:bind /etc/bind/named.conf.local
chmod 644 /etc/bind/named.conf.local

Après avoir redémarrer le service bind avec

service bind9 restart

On peut également utiliser l'utilitaire dnsutils qui nous donne accès à la commande dig pour tester l'accès aux serveur DNS. Dans cette exemple, j'essaie de dig le serveur DNS de Rigo avec son nom de domaine depuis la machine Rod :

root@Rod:/etc/bind# dig @localhost sudiste.online

; <<>> DiG 9.11.5-P4-5.1+deb10u11-Debian <<>> @localhost sudiste.online
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19231
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 39f845f1e6fe00141641184067ab8790d4db913c82c50328 (good)
;; QUESTION SECTION:
;sudiste.online.			IN	A

;; ANSWER SECTION:
sudiste.online.		200	IN	A	193.48.57.169

;; AUTHORITY SECTION:
sudiste.online.		200	IN	NS	ns.robotech.monster.
sudiste.online.		200	IN	NS	ns.sudiste.online.

;; ADDITIONAL SECTION:
ns.sudiste.online.	200	IN	A	193.48.57.169
ns.robotech.monster.	200	IN	A	193.48.57.169
ns.sudiste.online.	200	IN	AAAA	2001:660:4401:60a0:216:3eff:feb9:255b
ns.robotech.monster.	200	IN	AAAA	2001:660:4401:60a0:216:3eff:feb9:b5d0

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Feb 11 17:23:28 UTC 2025
;; MSG SIZE  rcvd: 225

Pour l'instant, le serveur n'est capable que de traiter les demande IPv6 et sont donc traité directement par les machines de services. On doit doit configurer un autre serveur sur la machine mandataire pour traiter les demandes IPv4. Le fichier named.conf.local de la service mandataire ressemble donc à ca :

zone "robotech.monster" {
	type slave;
	file "/etc/bind/backup/db.robotech.monster";
	masters{2001:660:4401:60a0:216:3eff:feb9:b5d0;};
};

zone "sudiste.online" {
	type slave;
	file "/etc/bind/backup/db.sudiste.online";
	masters{2001:660:4401:60a0:216:3eff:feb9:255b;};
};


"Publier" le serveur DNS

Pour rendre notre serveur DNS utilisable, je me rend sur le site du registrar Gandi pour y faire quelques manipulations.

Je me rend dans l'onglet "Nameserver" de mon nom de domaine pour y ajouter un "Glue Records" avec les adresses iPv4 (routée de mandataire) et IPv6 (routée de service).

Puis je remplace les Nameserver actuels par le mien.

En se rendant sur le site DNS Checker après quelques temps, mon serveur DNS s'est propagé comme on peut le voir avec les adresses IP indiquées lors de la recherche du nom de domaine "sudiste.online".

DNSSEC

Ajout des parties présentes dans le sujet dans named.conf.local pourle DNSSEC.

Probleme lors de la vérification avec named-checkconf lié à l'utilisation des commandes "dnssec-policy" => version utilisé (9.11) < apparition des options (9.16)

apt upgrade bind9 => rien de plus  ?????????

Serveur Apache

Je commence par rentrer les commandes suivantes :

a2enmod ssl
a2enmod proxy
a2enmod proxy_http

Je me rends également sur le site de Gandi pour télécharger mon certificat ainsi que le fichier indiquant le chemin de certifieurs. Je vais en avoir besoin rapidement.

Je modifie le fichier "/etc/apache2/sites-available/default-ssl.conf" en décommentant ou modifiant les lignes suivantes :

  • SSLEngine
  • SSLCertificationChainFile + chemin du fichier de la chaine des certifieurs
  • SSLCertificateFile + chemin du certificat
  • SSLCertificateKeyFile + Chemin du fichier de la clé générée lors de la demande de certificat

J'ajoute également les lignes suivantes :

  • SSLProxyEngine
  • ProxyPass
  • ProxyPassreverse

L'ensemble des lignes modifiées / ajoutées sont donc celles-ci :

SSLEngine on
SSLCertificateFile	/etc/ssl/certs/sudiste.online.crt
SSLCertificateKeyFile /home/certif/myserver.key
SSLCertificateChainFile /home/certif/GandiCert.pem
SSLProxyEngine on
ProxyPass / http://sudiste.online/
ProxyPassReverse / http://sudiste.online

Je peux désormais accéder à une page web avec le lien https://sudiste.online

Probleme avec apt

Erreur lors de n'importe quelle installation apt

/usr/bin/perl: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
dpkg: warning: 'ldconfig' not found in PATH or not executable
dpkg: error: 1 expected program not found in PATH or not executable
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin
E: Sub-process /usr/bin/dpkg returned an error code (2)

Erreur lors de la reinstallation de dpkg pour avoir ldconfig

root@Rod:/etc/bind# apt install --reinstall dpkg
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libedit2 libwrap0 openssh-client openssh-sftp-server ucf
Use 'apt autoremove' to remove them.
The following additional packages will be installed:
  liblzma5 libmd0 libpcre2-8-0 libselinux1 libzstd1
Suggested packages:
  debsig-verify
The following NEW packages will be installed:
  libmd0 libpcre2-8-0
The following packages will be upgraded:
  dpkg liblzma5 libselinux1 libzstd1
4 upgraded, 2 newly installed, 0 to remove and 200 not upgraded.
1 not fully installed or removed.
Need to get 0 B/2427 kB of archives.
After this operation, 689 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
/usr/bin/perl: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
dpkg: warning: 'ldconfig' not found in PATH or not executable
dpkg: error: 1 expected program not found in PATH or not executable
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin
E: Sub-process /usr/bin/dpkg returned an error code (2)
root@Rod:/etc/bind# apt install --reinstall dpkg
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libedit2 libwrap0 openssh-client openssh-sftp-server ucf
Use 'apt autoremove' to remove them.
The following additional packages will be installed:
  liblzma5 libmd0 libpcre2-8-0 libselinux1 libzstd1
Suggested packages:
  debsig-verify
The following NEW packages will be installed:
  libmd0 libpcre2-8-0
The following packages will be upgraded:
  dpkg liblzma5 libselinux1 libzstd1
4 upgraded, 2 newly installed, 0 to remove and 200 not upgraded.
1 not fully installed or removed.
Need to get 0 B/2427 kB of archives.
After this operation, 689 kB of additional disk space will be used.
Do you want to continue? [Y/n] n
Abort.
root@Rod:/etc/bind# apt install --reinstall dpkg
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libedit2 libwrap0 openssh-client openssh-sftp-server ucf
Use 'apt autoremove' to remove them.
The following additional packages will be installed:
  liblzma5 libmd0 libpcre2-8-0 libselinux1 libzstd1
Suggested packages:
  debsig-verify
The following NEW packages will be installed:
  libmd0 libpcre2-8-0
The following packages will be upgraded:
  dpkg liblzma5 libselinux1 libzstd1
4 upgraded, 2 newly installed, 0 to remove and 200 not upgraded.
1 not fully installed or removed.
Need to get 0 B/2427 kB of archives.
After this operation, 689 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
/usr/bin/perl: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
dpkg: warning: 'ldconfig' not found in PATH or not executable
dpkg: error: 1 expected program not found in PATH or not executable
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin
E: Sub-process /usr/bin/dpkg returned an error code (2)

Fichier /etc/apt/sources.list

#	/etc/apt/sources.list
#

#beowulf
#
deb     http://fr.deb.devuan.org/merged daedalus main contrib non-free
deb-src http://fr.deb.devuan.org/merged daedalus main contrib non-free


# 
#  Security updates
# 
deb     http://fr.deb.devuan.org/merged daedalus-updates main contrib non-free
deb-src http://fr.deb.devuan.org/merged daedalus-updates main contrib non-free

deb     http://fr.deb.devuan.org/merged daedalus-security main contrib non-free
deb-src http://fr.deb.devuan.org/merged daedalus-security main contrib non-free

# 
#  Backports updates
# 
#deb     http://fr.deb.devuan.org/merged beowulf-backports main contrib non-free
#deb-src http://fr.deb.devuan.org/merged beowulf-backports main contrib non-free

Problème avec la version de bind9 réglé grâce à l'aide de M. REDON.

Merci beaucoup !