1 votes

Exécution de dnsmasq dans un conteneur Docker sur Debian - check_dhcp ignore dnsmasq

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

1voto

waldauf Points 121

J'avais résolu le même "défi". À la fin, j'ai découvert que je n'avais pas défini l'adresse IP de mon serveur hôte. Après avoir défini manuellement l'adresse IP, dnsmasq a fonctionné.

ip addr add  dev

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X