好好活就是有意义的事,有意义的事就是好好活
为手机提供DNS服务, 实现指定域名的解析
为手机提供DNS服务, 实现指定域名的解析

为手机提供DNS服务, 实现指定域名的解析

前言

DNS服务其实一般来说不需要我们自己的动手搭建, 用处不是很大!

如果我们想自己解析一个指定的域名, 无论是Linux, Windows, 还是Mac都提供了hosts文件!

但是如果你想要在手机上, 解析指定的域名, 那就比较复杂了!

目前我找到了两个简单方案:

修改安卓的hosts

其实这是通过一个软件实现的, 这个软件使用了VPN的方法:

源码地址:Virtual-Hosts​github.com/x-falcon/Virtual-Hosts.git

下载地址:Virtual Hosts (com.github.xfalcon.vhosts) 2.1.1 APK Download – Android APK – APKsHub​www.apkshub.com/app/com.github.xfalcon.vhosts

至于如何使用, 就不展开了!

它问题就是只能在安卓上使用

自定义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-dnsmasq​github.com/jpillora/docker-dnsmasq

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注