Docker下搭建DNS服務器DNSmasq


https://www.linuxidc.com/Linux/2016-08/134538.htm

為方便Hadoop集群管理,決定利用Docker環境手動搭建一個DNS服務器。

1. 配置容器

選擇andyshinn/dnsmasq的docker鏡像,2.75版本。執行命令

docker run -d -p 53:53/tcp -p 53:53/udp --cap-add=NET_ADMIN --name dns-server andyshinn/dnsmasq:2.75 

本以為順利完成,結果報錯:

docker: Error response from daemon: failed to create endpoint dns-server on network bridge: Error starting userland proxy: listen tcp 0.0.0.0:53: bind: address already in use.

dns服務默認是用的53端口被占用了。查看本機端口占用情況:

netstat -lnp|grep 53

發現在宿主機器上有一個dnsmasq服務。google一番了解到,原來是Ubuntu默認安裝了dnsmasq-base服務。官網提到:

Note that the package “dnsmasq” interferes with Network Manager which can use “dnsmasq-base” to provide DHCP services when sharing an internet connection. Therefore, if you use network manager (fine in simple set-ups only), then install dnsmasq-base, but not dnsmasq. If you have a more complicated set-up, uninstall network manager, use dnsmasq, or similar software (bind9, dhcpd, etc), and configure things by hand.

通過kill 停掉該服務。再次執行上述命令,通過

docker ps

查看,容器啟動成功。

2. 配置DNS服務

進入容器

docker exec -it dns-server /bin/sh 

首先配置上行的真正的dns服務器地址,畢竟你只是個本地代理,不了解外部規則。創建文件:

vi /etc/resolv.dnsmasq

添加內容:

nameserver 114.114.114.114
nameserver 8.8.8.8

配置本地解析規則,這才是我們的真實目的。新建配置文件

vi /etc/dnsmasqhosts

添加解析規則

172.20.2.14 master
172.20.2.15 slave15
172.20.2.16 slave16

修改dnsmasq配置文件,指定使用上述兩個我們自定義的配置文件

vi /etc/dnsmasq.conf

修改下述兩個配置

resolv-file=/etc/resolv.dnsmasq
addn-hosts=/etc/dnsmasqhosts

回到宿主,重啟dns-server容器服務。

docker restart dns-server

通過本機驗證

修改本機dns服務器地址:

通過dig命令查看

dig master

一切如願。

 

https://www.cnblogs.com/xiao987334176/p/13491341.html

 

基於docker搭建DNSmasq

 

一、概述

DNSmasq是一個小巧且方便地用於配置DNSDHCP的工具,適用於小型網絡,它提供了DNS功能和可選擇的DHCP功能。它服務那些只在本地適用的域名,這些域名是不會在全球的DNS服務器中出現的。DHCP服務器和DNS服務器結合,並且允許DHCP分配的地址能在DNS中正常解析,而這些DHCP分配的地址和相關命令可以配置到每台主機中,也可以配置到一台核心設備中(比如路由器),DNSmasq支持靜態和動態兩種DHCP配置方式。

 

二、安裝

環境說明

操作系統:centos 7.6

docker版本:19.03.12

ip地址:192.168.31.74

 

下載鏡像

docker pull jpillora/dnsmasq

 

配置文件

新建配置文件

mkdir -p /data/dns/
vi /data/dns/dnsmasq.conf

內容如下:

#dns解析日志
log-queries
#域名與IP映射
address=/lb.guxin.com/172.16.91.165

說明:

將lb.guxin.com解析成172.17.205.28

 

啟動

復制代碼
docker run -d\
    --name dnsmasq \
    --restart always \
    -p 53:53/udp \
    -p 8080:8080 \
    -v /data/dns/dnsmasq.conf:/etc/dnsmasq.conf \
    --log-opt "max-size=100m" \
    -e "HTTP_USER=admin" \
    -e "HTTP_PASS=123456" \
    jpillora/dnsmasq
復制代碼

參數解釋:

--log-opt 指定docker容器日志大小

HTTP_USER web ui 用戶名

HTTP_PASS web ui 密碼

web登錄

http://192.168.31.74:8080/

輸入用戶名:admin,密碼:123456

效果如下:

 

 

可以直接在網頁上,新增一條

 

 點擊左側的save按鈕,就會保存並加載。

三、測試

安裝dns解析工具

yum -y install bind-utils

 

解析域名lb.guxin.com,指定dns服務器為192.168.31.74

復制代碼
# nslookup lb.guxin.com 192.168.31.74
Server:        192.168.31.74
Address:    192.168.31.74#53

Name:    lb.guxin.com
Address: 172.16.91.165
復制代碼

可以發現,解析記錄,正是我們所配置的。

 

 

本文參考鏈接:

https://www.jianshu.com/p/10a47b59853e

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM