有时候会碰到需要修改手机hosts的情况,可是IOS没越狱实在是不好办。之前的解决方法是,修改电脑hosts,然后手机设置代理到电脑,间接实现了hosts的修改,然而这也是件很麻烦的事,所以决定利用docker环境手动搭建一个DNS服务器。
1.配置容器
docker search dnsmasq
这里选择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
查看,容器启动成功。
2.配置DNS服务
- 为 dnsmasq 配置一个真正的dns服务器地址:
vim /usr/share/dnsmasq/resolv.conf
# 这里我使用的是阿里云的DNS
nameserver 223.5.5.5
nameserver 223.6.6.6
- 配置本地解析规则:
vim /usr/share/dnsmasq/dnsmasqhosts
# 这里配置自定义解析
127.0.0.1 master
- 修改dnsmasq配置文件,指定使用上述两个我们自定义的配置文件:
因为我们在启动docker的时候设置了挂载卷-v /usr/share/dnsmasq:/etc/dnsmasq
,所以我们只需要进入dns-server
的命令行,就会看到dns-server
内部对应路径文件夹内出现了刚刚配置的两个文件
docker exec -it dns-server /bin/sh
vi /etc/dnsmasq.conf
# 修改下述两个配置
resolv-file=/etc/dnsmasq/resolv.conf
addn-hosts=/etc/dnsmasq/dnsmasqhosts
- 回到宿主,重启
dns-server
容器服务。
docker restart dns-server
- 记得开放服务器的
53/tcp
和53/udp
3.通过本机验证
修改本机dns服务器地址:
通过ping
命令查看配置是否生效:
ping master