写在最前
各位有没有思考过,如果你有几台十几台服务器,你怎么控制域名的解析配置呢?你说通过ansible来控制所有然后再变更/etc/hosts来完成?这样虽然可以但是有点过于杀鸡牛刀了,如果我们配置一台DNS服务器呢?管理多台服务器时,使用DNS服务器集中处理域名解析,既简化了配置又提高了效率,只需在DNS服务器上更新一次所有服务器的域名解析即可同步更新。
1. 前置要求
需要一台全新的linux并为它分配新的ip,为此我就开一个172.31.0.53作为dns服务器。
2. 配置流程
2.1 docker部署
https://github.com/jpillora/docker-dnsmasq
# 创建数据目录
mkdir -p /data/dnsmasq/
# 生成配置文件
cat > /data/dnsmasq/dnsmasq.conf <<EOF
# 解析日志
log-queries
no-resolv
# 阿里
server=223.5.5.5
server=223.6.6.6
# 腾讯
server=119.29.29.29
# 百度
server=180.76.76.76
# 移动联通电信通用dns
server=114.114.114.114
# 其他
server=8.8.8.8
server=8.8.4.4
strict-order
# 测试样例
address=/myhost.company/127.0.0.1
EOF
# 启动容器,HTTP_USER和HTTP_PASS是账号密码,用于访问控制台
docker run \
--name dnsmasq \
-d \
-p 53:53/udp \
-p 5380:8080 \
-v /data/dnsmasq/dnsmasq.conf:/etc/dnsmasq.conf \
--log-opt "max-size=100m" \
-e "HTTP_USER=admin" \
-e "HTTP_PASS=123456" \
--restart always \
jpillora/dnsmasq
2.2 主机配置
2.2.1 linux
如果是 centos 则编辑 /etc/resolv.conf 开头添加一行 nameserver 172.31.0.53 即可。
如果是 ubuntu 则编辑 /etc/netplan/00-installer-config.yaml 域名解析部分开头添加172.31.0.53可,别忘了重启网卡
netplan apply
。
2.2.2 window
直接编辑window的VMnet8网卡将部署了dnsmasq的IP填入DNS服务器地址,保存后稍等一会尝试ping可以看到成功将 myhost.company 解析到 127.0.0.1
3. 异常解决
3.1 端口53被占用异常
如果是ubuntu关闭以下服务即可解除对53端口的占用。
sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved