服务器
如何使用Docker快速搭建DNS服务器?
夏至
2026-01-20
2周前

1.背景
在研发业务应用过程中,经常会使用到DNS解析,我们最常使用的方法是直接修改Windows/Linux系统中的host文件达到离线解析的效果。但当多台主机需要使用域名时,修改host的方式尤为不便,特别是当主机地址有变化时,所有主机均需要修改,耗时费力。
下面使用介绍使用docker快速搭建DNS服务,在使用前确保已经安装好docker以及docker-compose应用
2.搭建内网
创建docker-compose.yml,放置在/opt/docker/dnsmas文件夹下,可根据自己的实际需要放在目录下面。
version: '3'services: dns: image: andyshinn/dnsmasq container_name: dnsmasq command: --no-daemon environment: DNS1: "61.139.2.69" DNS2: "8.8.8.8" ports: - "53:53/tcp" - "53:53/udp" cap_add: - NET_ADMIN restart: always volumes: - ./dnsmasq.conf:/etc/dnsmasq.conf - ./logs:/var/log/创建配置文件:
touch ./dnsmasq.conf在内容中加入需要解析的域名:
# 基础配置port=53 # 监听53端口(DNS默认端口)interface=eth0 # 监听网卡(容器内默认eth0)no-resolv # 禁用默认的resolv.conf读取no-hosts # 可选:是否忽略容器内hosts文件cache-size=1000 # DNS缓存大小,提升解析速度# 上游 DNSserver=223.5.5.5server=223.6.6.6#域名与IP映射address=/node1/172.16.2.100address=/node2/172.16.2.101# 可选:启用DNSSEC(安全验证)# dnssec# 可选:日志(排查问题用)log-querieslog-facility=/var/log/dnsmasq.log基础配置项目中,对其中的项目不进行任何修改。上游DNS可修改为服务商提供的DNS地址,或使用公共DNS,以提高响应速度。
启动服务:
docker-compose up -d测试解析
安装测试工具:
yum -y install bind-utils执行测试命令,解析域名node1,指定dns服务器为本机127.0.0.1(实际可换为你本机对外的IP)。可以看到所有域名已经正常完成数据解析。
# 解析内部域名nslookup node1 127.0.0.1
# 解析公共域名nslookup baidu.com 127.0.0.1
对外提供服务时,服务器还需要对外开放53端口的TCP和UDP端口,参考如下:
firewall-cmd --add-port=53/tcp --permanentfirewall-cmd --add-port-53/udp --permanentfirewall-cmd --reload这样便完成轻量化DNS服务器的搭建。
本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。
分享文章



