侧边栏壁纸
博主头像
运维贼船的技术小站 博主等级

行动起来,活在当下

  • 累计撰写 35 篇文章
  • 累计创建 21 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

使用Docker快速搭建DNS服务器

aoarasi
2026-03-09 / 0 评论 / 0 点赞 / 1 阅读 / 0 字

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缓存大小,提升解析速度
​
# 上游 DNS
server=223.5.5.5
server=223.6.6.6
#域名与IP映射
address=/node1/172.16.2.100
address=/node2/172.16.2.101
​
# 可选:启用DNSSEC(安全验证)
# dnssec
# 可选:日志(排查问题用)
log-queries
log-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 --permanent
firewall-cmd --add-port-53/udp --permanent
firewall-cmd --reload

这样便完成轻量化DNS服务器的搭建。

0

评论区