Je teste la configuration pour mon dnsmasq DHCP sur ma machine Debian Virtualbox. En production, je veux que dnsmasq fournisse des adresses IP statiques aux systèmes invités fonctionnant via qemu + libvirt + openvswitch (j'ai couvert cela, ils fonctionnent via docker et ils fonctionnent)
Configuration de dnsmasq :
# J'ai essayé avec eth0 et br0 comme interface - plus d'informations en bas
interface=br0
domain-needed
bogus-priv
no-resolv
local=/mydomain.io/
no-poll
no-hosts
domain=mydomain.io
dhcp-range=192.168.1.129,192.168.1.254,255.255.255.128,192.168.1.255,12h
dhcp-option=3
log-queries
log-dhcp
Dockerfile :
FROM alpine:3.5 MAINTAINER dev@jpillora.com
# paramètres de la version de webproc RELEASE ENV WEBPROC_VERSION 0.1.7 ENV WEBPROC_URL https://github.com/jpillora/webproc/releases/download/$WEBPROC_VERSION/webproc_linux_amd64.gz
# récupérer les binaires de dnsmasq et webproc RUN apk update \
&& apk add --no-cache dnsmasq \
&& apk add --no-cache --virtual .build-deps curl \
&& curl -sL $WEBPROC_URL | gzip -d - > /usr/local/bin/webproc \
&& chmod +x /usr/local/bin/webproc \
&& apk del .build-deps
# configurer dnsmasq run mkdir -p /etc/default/ RUN echo -e "ENABLED=1\nIGNORE_RESOLVCONF=yes" > /etc/default/dnsmasq
# lancer! CMD ["webproc","--config","/etc/dnsmasq.conf","--","dnsmasq","--no-daemon","--dhcp-broadcast"]
Commandes pour construire et exécuter le container :
docker build -t dnsmasq .
docker run -d --name=dnsmasq --volume=/data/dnsmasq.conf:/etc/dnsmasq.conf -p 53:53/udp -p 192.168.56.101:5380:8080 --net host -e "USER=foo" -e "PASS=bar" dnsmasq
journaux de docker dnsmasq
[webproc] 2017/01/11 07:17:09 configurations chargées depuis le disque
[webproc] 2017/01/11 07:17:09 agent écoute sur http://0.0.0.0:8080...
dnsmasq: démarré, version 2.76 cachesize 150
dnsmasq: options de temps de compilation : IPv6 GNU-getopt no-DBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ipset auth no-DNSSEC loop-detect inotify
dnsmasq-dhcp: DHCP, plage IP 192.168.1.129 -- 192.168.1.254, temps de bail 12h
dnsmasq: utilise uniquement des adresses locales pour le domaine mydomain.io
dnsmasq: cache vidé
dnsmasq-dhcp: aucune plage d'adresses disponible pour la demande DHCP via eth0
dnsmasq-dhcp: aucune plage d'adresses disponible pour la demande DHCP via eth0
dnsmasq-dhcp: aucune plage d'adresses disponible pour la demande DHCP via eth0
commande check_dhcp (à partir du package monitoring-plugins-basic)
/usr/lib/nagios/plugins/check_dhcp -v -s 192.168.1.129 -r 192.168.1.130
Adresse du serveur demandé : 192.168.1.129
Socket DHCP : 3
Adresse matérielle : 08:00:27:b6:c1:90
DHCPDISCOVER vers 255.255.255.255 port 67
DHCPDISCOVER XID : 984913524 (0x3AB49674)
DHCDISCOVER ciaddr : 0.0.0.0
DHCDISCOVER yiaddr : 0.0.0.0
DHCDISCOVER siaddr : 0.0.0.0
DHCDISCOVER giaddr : 0.0.0.0
Résultat de l'envoi du paquet DHCP : 548
résultat_recv_1 : 548
résultat_recv_2 : 548
résultat_receive_dhcp_packet() : 548
résultat_receive_dhcp_packet() source : 10.0.2.2
Résultat=OK
DHCPOFFER de l'adresse IP 10.0.2.2 via 10.0.2.2
DHCPOFFER XID : 984913524 (0x3AB49674)
DHCPOFFER chaddr : 080027B6C190
DHCPOFFER ciaddr : 0.0.0.0
DHCPOFFER yiaddr : 10.0.2.15
DHCPOFFER siaddr : 10.0.2.4
DHCPOFFER giaddr : 0.0.0.0
Option : 53 (0x01)
Option : 1 (0x04)
Option : 3 (0x04)
Option : 6 (0x08)
Option : 15 (0x04)
Option : 51 (0x04)
Option : 54 (0x04)
Temps de bail : 86400 secondes
Temps de renouvellement : 0 secondes
Temps de réattribution : 0 secondes
Offre ajoutée du serveur @ 10.0.2.2 de l'adresse IP 10.0.2.15
Aucune (autre) donnée reçue (nfound : 0)
Résultat=ERREUR
Total des réponses vues sur le fil : 1
Réponses valides pour cette machine : 1
CRITIQUE : Reçu 1 DHCPOFFER(s), 0 sur 1 des serveurs demandés ont répondu, l'adresse demandée (192.168.1.130) n'a pas été offerte, délai de bail maximal = 86400 sec.
Lorsque attaché à br0 avec interface=br0 après la commande check_dhcp je n'obtiens même pas
dnsmasq-dhcp: aucune plage d'adresses disponible pour la demande DHCP via eth0
... dans les journaux. Contrairement à quand dnsmasq est attaché à eth0 On dirait que mon dnsmasq est ignoré et je reçois une réponse du serveur dhcp docker.
Enfin, mon route -n
0.0.0.0 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.1.128 0.0.0.0 255.255.255.128 U 0 0 0 br0
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
~ merci pour votre aide, grandement appréciée