Funk-lab/admin/dnsmasq.md
alkatrazz dca71144d6 docs(admin): add ops documentation and fix hermes dashboard service
- Remove admin/ from .gitignore (repo is now private)
- Add --tui flag to hermes-dashboard.service template
- Document hermes-tui wrapper, dashboard access, TUI usage

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 18:50:43 +02:00

2.9 KiB

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

# 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

# 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

# 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 :

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 :

# /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) :

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

# 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"