前言
DNS服务其实一般来说不需要我们自己的动手搭建, 用处不是很大!
如果我们想自己解析一个指定的域名, 无论是Linux, Windows, 还是Mac都提供了hosts文件!
但是如果你想要在手机上, 解析指定的域名, 那就比较复杂了!
目前我找到了两个简单方案:
修改安卓的hosts
其实这是通过一个软件实现的, 这个软件使用了VPN的方法:
源码地址:Virtual-Hostsgithub.com/x-falcon/Virtual-Hosts.git
至于如何使用, 就不展开了!
它问题就是只能在安卓上使用
自定义DNS服务器
原理就是让手机使用我们自定义的DNS服务器, 这样我们就可以在自定义的服务器上, 任意的添加我们指定解析的域名.
修改DNS服务器, 对于Iphone而言很容易:

因此我们只需要搭建一个DNS服务器, 然后将其IP填入此处即可!
注意, 如果你的DNS服务器必须要保证能够被手机访问到!
搭建DNS服务器
借助Docker带给我们的极大便利, 我们可以非常轻松的搭建各种服务:
创建工作目录和配置文件
mkdir DNS-Server && cd DNS-Server
vim dnsmasq.conf
# 复制如下内容到dnsmasq.conf中:
#dnsmasq config, for a complete example, see:
# http://oss.segetech.com/intra/srv/dnsmasq.conf
#log all dns queries
log-queries
#dont use hosts nameservers
no-resolv
#use cloudflare as default nameservers, prefer 1^4
server=1.0.0.1
server=1.1.1.1
strict-order
#serve all .company queries using a specific nameserver
server=/company/10.0.0.1
#explicitly define host-ip mappings
address=/myhost.company/10.0.0.2
启动容器
docker run \
--name dnsmasq \
-d \
-p 53:53/udp \
-p 80:8080 \
-v `pwd`/dnsmasq.conf:/etc/dnsmasq.conf \
--log-opt "max-size=100m" \
-e "HTTP_USER=use" \
-e "HTTP_PASS=passwd" \
--restart always \
jpillora/dnsmasq
上述执行的执行, 需要在上一步创建的DNS-Server目录中
在这里, 我们需要两个端口, 53和80, 其中53是用于DNS服务器, 这个最好不要动, 80是一个web的管理UI可以任意修改.
如果出现端口冲突, 可以:
sudo lsof -i:53
如果是systemd-resolved进程, 那么可以直接关掉:
sudo systemctl stop systemd-resolved
此外, 你还需要打开防火墙的53端口, 注意是UDP协议!
HTTP_USER和HTTP_PASS是登录web UI的账户和密码
访问web UI管理端
浏览器打开 http://host_ip

其实配置文件的内容呢, 就是我们之前定义的 dnsmasq.conf ,可以通过添加如下的内容来指定解析特定的域名:
#serve all .company queries using a specific nameserver
server=/company/10.0.0.1
#explicitly define host-ip mappings
address=/myhost.company/10.0.0.2
然后点击重启按钮即可!
测试

后记
上述方法的项目地址是:jpillora/docker-dnsmasqgithub.com/jpillora/docker-dnsmasq