# dnsmasq — DNS local lab.local dnsmasq tourne sur **storage-01** (`192.168.10.1:53`). Il répond pour `*.lab.local` et forward le reste vers `8.8.8.8`. --- ## Statut et logs ```bash # Statut du service ssh s01 "sudo systemctl status dnsmasq" # Logs en temps réel ssh s01 "sudo tail -f /var/log/dnsmasq.log" # Logs systemd ssh s01 "sudo journalctl -u dnsmasq -f" ssh s01 "sudo journalctl -u dnsmasq --since '10 minutes ago'" ``` --- ## Tester la résolution DNS ```bash # Depuis le poste perso — tester via storage-01 directement dig @192.168.1.200 gpu-01.lab.local +short dig @192.168.1.200 storage-01.lab.local +short dig @192.168.1.200 google.com +short # Depuis storage-01 ssh s01 "dig @192.168.10.1 gpu-01.lab.local +short" ssh s01 "nslookup gpu-01.lab.local 192.168.10.1" # Depuis gpu-01 (doit utiliser 192.168.10.1 automatiquement) ssh g01 "dig gpu-01.lab.local +short" ssh g01 "dig storage-01.lab.local +short" ssh g01 "dig google.com +short" # Tester un service k8s futur (ex: open-webui) dig @192.168.10.1 open-webui.lab.local +short ``` --- ## Config et rechargement ```bash # Voir la config actuelle ssh s01 "cat /etc/dnsmasq.conf" # Tester la config sans redémarrer ssh s01 "sudo dnsmasq --test" # Recharger après modif manuelle ssh s01 "sudo systemctl restart dnsmasq" # Via Ansible (idempotent, recommandé) cd /mnt/nvme0n1/nvme0n1p3/Projets/lab/ansible ../.venv/bin/ansible-playbook playbooks/storage-01.yml --tags dnsmasq ``` --- ## Ajouter une entrée DNS (ex: nouveau service k8s) Modifier `ansible/roles/dnsmasq/defaults/main.yml` : ```yaml dns_cluster_hosts: - name: storage-01 ip: 192.168.10.1 # ... ajouter ici - name: mon-service ip: 192.168.10.200 # IP MetalLB ``` Puis : `make apply-storage` Pour les services k8s exposés via Traefik/MetalLB, une seule entrée wildcard suffira : ``` address=/.lab.local/192.168.10.200 ``` (à ajouter dans le template quand MetalLB sera en place) --- ## Problème connu — crash au boot (interface USB ethernet) L'interface cluster `enp6s0f3u2c2` est un adaptateur USB ethernet qui prend plus de temps à apparaître que `network.target`. dnsmasq peut démarrer avant qu'elle soit disponible et crasher avec `unknown interface enp6s0f3u2c2`. **Fix permanent** : override systemd déployé via Ansible : ```ini # /etc/systemd/system/dnsmasq.service.d/wait-for-network.conf [Unit] After=network-online.target Wants=network-online.target ``` **Fix immédiat** (si dnsmasq est en état `failed` après un reboot) : ```bash sudo systemctl reset-failed dnsmasq sudo systemctl start dnsmasq ``` **Symptôme** : les machines du LAN cluster (gpu-01...) ne peuvent plus résoudre de noms DNS → `yum makecache` bloque, `nslookup` timeout. --- ## Vérifier le DNS configuré sur chaque machine ```bash # storage-01 ssh s01 "cat /etc/resolv.conf && nmcli dev show enp6s0f3u2c2 | grep DNS" # gpu-01 (doit pointer sur 192.168.10.1) ssh g01 "cat /etc/resolv.conf && nmcli dev show enp4s0 | grep DNS" ```