Installer Dnsmasq, qui est le logiciel de serveur de transfert DHCP et de serveur DNS léger.
sudo apt-get -y install dnsmasq
Installer les packages suivants
sudo apt-get update sudo apt-get -y install wget sudo apt-get -y install build-essential sudo apt-get -y install apt-utils sudo apt-get -y install pkg-config sudo apt-get -y install idn sudo apt-get -y install libidn11-dev sudo apt-get -y install gettext sudo apt-get -y -t wheezy-backports install nettle-dev sudo apt-get -y -t wheezy-backports install dnsutils
wget http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.73.tar.gz
tar xvzf dnsmasq-2.73.tar.gz
cd dnsmasq-2.73
make all-i18n COPTS="-DHAVE_DNSSEC -DHAVE_DNSSEC_STATIC"
strip ./src/dnsmasq
Le binaire dnsmasq doit se trouver à la base du dossier src
sudo cp ./src/dnsmasq /usr/sbin/dnsmasq
vi /etc/dnsmasq.conf
le fichier dnsmasq.conf ressemble à ceci:
interface=eth0 user=root domain-needed bogus-priv no-resolv local=/mydomain.io/ no-poll server=/server.education/10.0.0.10 no-hosts addn-hosts=/etc/dnsmasq_static_hosts.conf expand-hosts domain=mydomain.io dhcp-range=192.168.2.10,192.168.2.250,255.255.255.0,192.168.2.255,5m # Have windows machine release on shutdown dhcp-option=vendor:MSFT,2,1i # No default route dhcp-option=3
dhcp-range
: La machine hôte a une adresse statique de 192.168.2.2.Démarrer dnsmasq
systemctl start dnsmasq systemctl enable dnsmasq
Ensuite, Dnsmasq souhaite répondre aux requêtes des clients.
vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 # add records 10.0.0.30 dlp.srv.world dlp
Redémarrer le serveur
systemctl restart dnsmasq
firewall-cmd --add-service=dns --permanent success firewall-cmd --reload success
Vérifier la résolution du nom ou de l'adresse IP d'un client du réseau interne.
Installer bind-utils
yum -y install bind-utils
Modifier les paramètres de l'environnement pour pointer vers le serveur Dnsmasq (remplacer “ens3” par l'interface réseau actif
nmcli c modify ens3 ipv4.dns 10.0.0.30 nmcli c down ens3; nmcli c up ens3
Tester la résolution de noms
dig dlp.srv.world. ; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.3 <<>> dlp.srv.world ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11613 ;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;dlp.srv.world. IN A ;; ANSWER SECTION: dlp.srv.world. 0 IN A 10.0.0.30 ;; Query time: 2 msec ;; SERVER: 10.0.0.30#53(10.0.0.30) ;; WHEN: Wed Aug 31 17:22:51 JST 2016 ;; MSG SIZE rcvd: 47
et la résolution inverse
dig -x 10.0.0.30 ; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.3 <<>> -x 10.0.0.30 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61937 ;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;30.0.0.10.in-addr.arpa. IN PTR ;; ANSWER SECTION: 30.0.0.10.in-addr.arpa. 0 IN PTR dlp.srv.world. ;; Query time: 3 msec ;; SERVER: 10.0.0.30#53(10.0.0.30) ;; WHEN: Wed Aug 31 17:24:00 JST 2016 ;; MSG SIZE rcvd: 67
Le conteneur veut avoir ses propres interfaces sur un sous-réseau virtuel (le réseau de ponts docker0). Donc, il veut essayer d'offrir des adresses sur ce sous-réseau.
Utiliser –net host dans la commande docker run
afin de garantir que le conteneur utilise la pile de réseau de l'hôte plutôt que la sienne
docker run --name dnsmasq2 -t -v /vagrant/dnsmasq.conf:/opt/dnsmasq.conf -p 67:67/udp --net host centos