安卓移动数据使用adguard home+doh

虽然说安卓9.0以上手机可以直接设置私人dns(dns over tls),wifi和数据都可以使用,但是和一些代理软件的内置dns有冲突。

1、虽然也有dnscrypt-proyx的magisk模块可以设置doh[dns over https],用了一下效果好像也不是很理想。

adguard home支持window,linux,mac,Linux MIPS。安卓使用方法:https://zsxwz.com/2020/06/23/

上游dns推荐使用doh,防污染而且保护隐私:https://zsxwz.com/2020/12/09/

无线网使用adguard home比较简单,可以设置静态ip。移动数据稍微比较麻烦一点。

2、配置启动好adguard home之后。终端su获取root权限,使用iptables重定向一下​,wifi和移动数据都可以使用了。一般来说添加删除UDP的iptables规则就可以了,TCP那条可以不用添加。

# 删除规则
iptables -t nat -D OUTPUT -p tcp --dport 53 -j DNAT --to-destination 127.0.0.1:53
iptables -t nat -D OUTPUT -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:53

# 添加规则
iptables -t nat -I OUTPUT -p tcp --dport 53 -j DNAT --to-destination 127.0.0.1:53
iptables -t nat -I OUTPUT -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:53

3、如果想要开机自启,可以考虑使用magisk或者termux的boot自启插件也可以。比如使用termux安装在/data/data/com.termux/files/home/AdGuardHome,安装termux boot(需要关闭省电优化)之后,可以自己写一个自启脚本~/.termux/boot/adguard.sh,termux需要先安装tsu:

#!/data/data/com.termux/files/usr/bin/bash
sudo setsid /data/data/com.termux/files/home/AdGuardHome/AdGuardHome -l ad.log &

#删除
su -s /system/bin/sh -c "iptables -t nat -D OUTPUT -p tcp --dport 53 -j DNAT --to-destination 127.0.0.1:53"
su -s /system/bin/sh -c "iptables -t nat -D OUTPUT -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:53"

#添加
su -s /system/bin/sh -c "iptables -t nat -I OUTPUT -p tcp --dport 53 -j DNAT --to-destination 127.0.0.1:53"
su -s /system/bin/sh -c "iptables -t nat -I OUTPUT -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:53"

或者自己写一个简单的magisk模块,还是比较推荐使用这个方法,制作方法可以参考:https://bbs.zsxwz.com/thread-2042.htm

一个简单的脚本也不一定需要从零开始学,如果已经用termux安装配置好之后,比如安装在/data/data/com.termux/files/home/AdGuardHome/。

也可以随便从magisk下载一个模块比如cloudflaredns4magisk,安装之后修改post-fs-data.sh文件即可,其他的除了module.prop都不需要可以删除。magisk模块安装在:/data/adb/modules。

#!/system/bin/sh
# Please don't hardcode /magisk/modname/... ; instead, please use $MODDIR/...
# This will make your scripts compatible even if Magisk change its mount point in the future
MODDIR=${0%/*}

setsid /data/data/com.termux/files/home/AdGuardHome/AdGuardHome &
#删除
iptables -t nat -D OUTPUT -p tcp --dport 53 -j DNAT --to-destination 127.0.0.1:53
iptables -t nat -D OUTPUT -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:53
#添加
iptables -t nat -I OUTPUT -p tcp --dport 53 -j DNAT --to-destination 127.0.0.1:53
iptables -t nat -I OUTPUT -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:53

4、可能和一些代理软件比如v2的一些客户端冲突,v2也可以使用magisk模块,https://bbs.zsxwz.com/thread-3490.htm,需要先删除dnsccypt的配置文件dnscrypt-proxy.toml,即可禁用dnscrypt-proxy,就可以使用AdGuardHome了。

最后使用nslookup查询一下即可看到效果:

# 需要先安装dnsutils
# raw.githubusercontent.com和github.io目前大部份地区劫持还是比较严重的,如果不使用加密dns就很容易被劫持,然后查不到ip。
nslookup raw.githubusercontent.com 127.0.0.1

虽然说v2内置的dns现在也支持doh了,但是问题可能还比较多。。。但是支持分流,AdGuardHome支持负载均衡和并行请求,还支持拦截一部份广告,v2也可以使用增强版的规则。。。https://bbs.zsxwz.com/thread-3463.htm。想怎么折腾,还要看自己的需求了。。。

题外话,iOS14现在也是支持设置doh的:https://bbs.zsxwz.com/thread-3582.htm

留言

* - 必填