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