写在最前

各位有没有思考过,如果你有几台十几台服务器,你怎么控制域名的解析配置呢?你说通过ansible来控制所有然后再变更/etc/hosts来完成?这样虽然可以但是有点过于杀鸡牛刀了,如果我们配置一台DNS服务器呢?管理多台服务器时,使用DNS服务器集中处理域名解析,既简化了配置又提高了效率,只需在DNS服务器上更新一次所有服务器的域名解析即可同步更新。

1. 前置要求

需要一台全新的linux并为它分配新的ip,为此我就开一个172.31.0.53作为dns服务器。

  1. ✨ubuntu server 22.04 LTS 安装与配置✨

  2. ✨二进制部署任意版本docker✨

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

图片-lshq.png

2.2 主机配置

2.2.1 linux

  1. 如果是 centos 则编辑 /etc/resolv.conf 开头添加一行 nameserver 172.31.0.53 即可。

  2. 如果是 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

image-onpx.png

3. 异常解决

3.1 端口53被占用异常

如果是ubuntu关闭以下服务即可解除对53端口的占用。

sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved

4. 操作总结