返回文章列表
服务器

如何使用Docker快速搭建DNS服务器?

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

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服务器的搭建。


本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。

分享文章
合作伙伴

本站所有广告均是第三方投放,详情请查询本站用户协议