Live Debian généré avec live-build : IP OK mais DNS KO

Tags: #<Tag:0x00007f9c84e4fc00> #<Tag:0x00007f9c84e4fb38> #<Tag:0x00007f9c84e4f9f8> #<Tag:0x00007f9c84e4f868>

Bonjour à tous,

Je me permets de vous soumettre un problème que je rencontre avec un live Debian généré via live-build.

Mon fichier config/package-lists/minimal.list.chroot contient :

xserver-xorg
xinit
openbox
lightdm
lightdm-gtk-greeter
network-manager
firefox-esr
console-setup
keyboard-configuration
locales
sudo
curl

J’ai également configuré un autostart pour :

a/ appliquer la disposition du clavier en français,
b/ lancer automatiquement le navigateur web en plein écran (ce live est destiné à fournir un accès web simple à des clients).

Le problème:

À chaque démarrage, j’ai un échec de résolution DNS :

Le clavier est bien configuré en fr et ma page web se lance parfaitement. En revanche, alors que le serveur DHCP fournit bien une adresse IP et un masque, la configuration DNS n’est pas correcte.

Concrètement:

ping 8.8.8.8 → OK
ping google.fr → Échec

Mon fichier /etc/resolv.conf est systématiquement rempli avec :

nameserver dhcp

ce qui est invalide.

Si je remplace manuellement le contenu par :

nameserver 8.8.8.8

alors tout fonctionne parfaitement.

Ce que j’ai tenté (Liste non exhaustive):

a/ Ajout de différents paquets liés au réseau (ex. systemd-resolved, dhclient…),
b/ Création de hooks pour modifier /etc/resolv.conf automatiquement,
c/ Divers essais de configuration de NetworkManager.

Mais pour l’instant, aucun succès.

Ma demande:

Si quelqu’un a une idée, une piste ou même une simple amorce de solution, je suis preneur.
Cela fait déjà quelques jours que je bloque dessus, et je préférerais éviter de bricoler à la main à chaque démarrage.

Merci d’avance

Bonjour,
Tu as une erreur de configuration de ton réseau.
Normalement tu n’as pas à toucher au fichier /etc/resolv.conf, NetworkManager s’en occupe tout seul.

Bonjour Zargos et merci pour ton message. J’ai embarqué dans ma dernière version de minimal.list.chroot NetworkManager afin justement qu’il s’occupe correctement de cela, mais le problème persiste. J’ai tenté d’adopter à la volée d’autres configurations réseaux mais sans succès jusqu’alors.

As tu regardé dans les logs?
Normalement, lors d’une installation, l’installateur laisse des logs dans /var/log/installer

Salut,

En principe, c’est le serveur dhcp du lan qui fourni les adresses des dns.
Ca marche si vous n’essayez pas de forcer 8.8.8.8 ?
ou avec une debian live officielle

Pourt la debian officielle c’est hors sujet vu que c’est justement une live custom :slight_smile:

Pourt la debian officielle c’est hors sujet vu que c’est justement une live custom

Oui, en partie, je proposais cela pour vérifier que le serveur dhcp du lan, fournit une config réseau valide incluant le dns.

Je présume qu’il le saurais déjà à partir du PC sur lequel il customise sa live.

Merci pour vos retours. Ca reste pertinent de repartir sur l’essentiel. J’ai verifié et en effet, j’ai 2 serveurs DHCP (Séparés naturellement) qui fonctionnent parfaitement. J’ai fait un test sur un live officiel et aucun problème.

Niveau log, rien a signalé en particulier, mon live se construit simplement et l’ensemble des fonctions recherchées se lancent. Seul blocage, le DNS.

Par contre, évidemment, si je suis hors sujet, je clôture mon fil. Merci de bien vouloir me le confirmer dans ce cas :slight_smile:

salut
qu’est-ce que ça donne si tu fermes puis rouvre network-manager ?

peux-tu fournir ta config et des commandes ?

je viens d’essayer une live-build avec ta liste en suivant

, soit

  • lb clean && lb config
  • remplissage de config/package-lists/minimal.list.chroot avec tes fichiers
  • lb config && lb build

mais ça marche direct

Bonjour et merci pour les réponses. Voici la config utilisée:

FIchier auto/config:

#!/bin/sh

set -e

lb config noauto
–mode « debian »
–system « live »
–distribution « bookworm »
–architecture « amd64 »
–archive-areas « main contrib non-free non-free-firmware »
–security « true »
–updates « true »
–backports « false »
–binary-images « iso-hybrid »
–bootloaders « syslinux grub-efi »
–apt-indices « true »
–apt-recommends « true »
–apt-secure « true »
–apt-source-archives « false »
–linux-package « linux-image linux-headers »
–debian-installer « live »
–debian-installer-distribution « bookworm »
–debian-installer-gui « true »
–firmware-binary « true »
–firmware-chroot « true »
–iso-publisher « Tag; ch******@*******.com »
–memtest « none »
–win32-loader « false »
–clean
–debug
–verbose
–source « false »
« ${@} »

Fichier config/package-lists/minimal.list.chroot

X11 et minimal

xserver-xorg
xinit
openbox
lightdm
lightdm-gtk-greeter

Reseau

network-manager

Navigateur

firefox-esr

Pour le clavier FR et la config

console-setup
keyboard-configuration
locales

Outils utiles

sudo
curl

et j’ai mis en place un hook comme tentative supplementaire:

#!/bin/sh
nmcli device set eth0 managed yes 2>/dev/null || true

for IFACE in $(nmcli device status | awk '/ethernet/ {print $1}'); do
	nmcli device set "$IFACE" managed yes
	nmcli connection modify "$IFACE" ipv4.dns "8.8.8.8 1.1.1.1"
	nmcli connection modify "$IFACE" ipv4.ignore-auto-dns no
	nmcli connection up "$IFACE" 2>/dev/null || true
done
rm -f /etc/resolv.conf
ln -s /run/NetworkManager/resolv.conf /etc/resolv.conf

Mais une fois le systeme booté, ca ne fait rien de bien probant coté DNS, meme si je relance NetworkManager. Je vais tenter de mon coté de refaire le tout de A a Z avec ton tuto, j’ai peut-etre loupé un truc.

Tu devrais utiliser les variables DHCP pour faire ça.

N’utilises pas de lien symbolique ça ne se fait pas. utilises plutôt un sed
D’autant plus que tu modifies les paramètres de l’interface, ce qui va avoir un effet sur le resolv.conf.
Où places-tu ton hook?

Je le place dans config/hooks/live/

Ca marchera peut etre avec l’installation, mais pour la suite ça ne marchera pas. Ton Hook doit être dans /etc/NetworkManager/dispatcher.d
Mais revois ton hook.

Voici un exemple avec le NTP:

~$ cat /etc/NetworkManager/dispatcher.d/10-update-timesyncd
#!/bin/sh

[ -z "$CONNECTION_UUID" ] && exit 0
INTERFACE="$1"
ACTION="$2"

case $ACTION in
up | dhcp4-change | dhcp6-change)
	[ -n "$DHCP4_NTP_SERVERS" ] || exit 0
	mkdir -p /etc/systemd/timesyncd.conf.d
	cat <<-THE_END >"/etc/systemd/timesyncd.conf.d/${CONNECTION_UUID}.conf"
		[Time]
		NTP=$DHCP4_NTP_SERVERS
	THE_END
	systemctl restart systemd-timesyncd.service
	;;
down)
	rm -f "/etc/systemd/timesyncd.conf.d/${CONNECTION_UUID}.conf"
	systemctl restart systemd-timesyncd.service
	;;
esac

le principe est le bon, mais dans le cas précis du NTP il ne marche pas avec NetworkManager car le client standard de NM ne sait pas gérer l’option du serveur NTP, je suis passé au client dhcpcd pour le faire.