Docker 下搭建 DNS 服务器 dnsmasq

有时候会碰到需要修改手机hosts的情况,可是IOS没越狱实在是不好办。之前的解决方法是,修改电脑hosts,然后手机设置代理到电脑,间接实现了hosts的修改,然而这也是件很麻烦的事,所以决定利用docker环境手动搭建一个DNS服务器。

1.配置容器

docker search dnsmasq

QQ20190103142416.png

这里选择andyshinn/dnsmasq的docker镜像

# 下载andyshinn/dnsmasq镜像
docker pull andyshinn/dnsmasq
# 运行镜像
docker run -d --restart=always --name dns-server -p 53:53/tcp -p 53:53/udp --cap-add=NET_ADMIN -v /usr/share/dnsmasq:/etc/dnsmasq  andyshinn/dnsmasq
# 查看容器启用情况
docker ps -a

查看,容器启动成功。

QQ20190103142727.png

2.配置DNS服务

  1. 为 dnsmasq 配置一个真正的dns服务器地址:
vim /usr/share/dnsmasq/resolv.conf

# 这里我使用的是阿里云的DNS
nameserver 223.5.5.5
nameserver 223.6.6.6
  1. 配置本地解析规则:
vim /usr/share/dnsmasq/dnsmasqhosts

# 这里配置自定义解析
127.0.0.1 master
  1. 修改dnsmasq配置文件,指定使用上述两个我们自定义的配置文件:

因为我们在启动docker的时候设置了挂载卷-v /usr/share/dnsmasq:/etc/dnsmasq,所以我们只需要进入dns-server的命令行,就会看到dns-server内部对应路径文件夹内出现了刚刚配置的两个文件

docker exec -it dns-server /bin/sh

QQ20190103144521.png

vi /etc/dnsmasq.conf

# 修改下述两个配置
resolv-file=/etc/dnsmasq/resolv.conf
addn-hosts=/etc/dnsmasq/dnsmasqhosts
  1. 回到宿主,重启dns-server容器服务。
docker restart dns-server
  1. 记得开放服务器的53/tcp53/udp

3.通过本机验证

修改本机dns服务器地址:

QQ20190103144830.png

通过ping命令查看配置是否生效:

ping master

QQ20190103144936.png

参考地址:

Comments