Atelier SysRes SE4 2024/2025 E12
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 réglé grâce à l'aide de M. REDON.
Merci beaucoup !