wget https://github.com/AdguardTeam/dnsproxy/releases/download/v0.18.4/dnsproxy-darwin-amd64-v0.18.4.tar.gz
mkdir dnsproxy-darwin-amd64-v0.18.4-exec-by-adguardteam
mv dnsproxy-darwin-amd64-v0.18.4.tar.gz dnsproxy-darwin-amd64-v0.18.4-exec-by-adguardteam
cd dnsproxy-darwin-amd64-v0.18.4-exec-by-adguardteam
tar zxvf dnsproxy-darwin-amd64-v0.18.4.tar.gz
yudeMacBook-Air:dnsproxy-darwin-amd64-v0.18.4-exec-by-adguardteam brite$ ls
darwin-amd64 dnsproxy-darwin-amd64-v0.18.4.tar.gz
yudeMacBook-Air:dnsproxy-darwin-amd64-v0.18.4-exec-by-adguardteam brite$ cd darwin-amd64
yudeMacBook-Air:darwin-amd64 brite$ ls
LICENSE README.md dnsproxy
yudeMacBook-Air:darwin-amd64 brite$ ./dnsproxy -h
Usage:
dnsproxy [OPTIONS]
Application Options:
-v, --verbose Verbose output (optional)
-o, --output= Path to the log file. If not set, write to stdout.
-l, --listen= Listen address (default: 0.0.0.0)
-p, --port= Listen port. Zero value disables TCP and UDP listeners
(default: 53)
-h, --https-port= Listen port for DNS-over-HTTPS (default: 0)
-t, --tls-port= Listen port for DNS-over-TLS (default: 0)
-c, --tls-crt= Path to a file with the certificate chain
-k, --tls-key= Path to a file with the private key
-b, --bootstrap= Bootstrap DNS for DoH and DoT, can be specified multiple
times (default: 8.8.8.8:53)
-r, --ratelimit= Ratelimit (requests per second) (default: 0)
-z, --cache If specified, DNS cache is enabled
-e, --cache-size= Maximum number of elements in the cache. Default size: 1000
-a, --refuse-any If specified, refuse ANY requests
-u, --upstream= An upstream to be used (can be specified multiple times)
-f, --fallback= Fallback resolvers to use when regular ones are
unavailable, can be specified multiple times
-s, --all-servers If specified, parallel queries to all configured upstream
servers are enabled
--version Prints the program version
Help Options:
-h, --help Show this help message
yudeMacBook-Air:darwin-amd64 brite$ sudo ./dnsproxy -l 0.0.0.0 -p 53 --upstream=208.67.222.222:5353 或:
$ sudo ./dnsproxy -l 0.0.0.0 -p 53 --upstream=vps-ip:dnsmasq-port-number-on-vps
实际使用例子:
sudo wg-quick up wg0
sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1
cd ~/dnsproxy-darwin-amd64-v0.18.4-exec-by-adguardteam/darwin-amd64 && sudo ./dnsproxy -l 0.0.0.0 -p 53 --upstream=208.67.222.222:5353
或:
sudo ./dnsproxy -l 0.0.0.0 -p 53 --upstream=vps-ip:dnsmasq-port-number-on-vps
项目地址:https://github.com/AdguardTeam/dnsproxy
----------
还可以做DOH服务器或DOT服务器的客户端。
先在mac 上安装go1.13环境,然后,
cd $GOPATH
go get -u -v github.com/AdguardTeam/dnsproxy
------------
利用AdGuard Home解决dns污染问题
AdGuard Home二进制文件位于:https://github.com/AdguardTeam/AdGuardHome/releases 可以根据自己的平台选择下载。
在mac机器上。
wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.100.8/AdGuardHome_MacOS.zip
mkdir AdGuardHome_MacOS
mv AdGuardHome_MacOS.zip AdGuardHome_MacOS
cd AdGuardHome_MacOS
unzip AdGuardHome_MacOS.zip
./AdGuardHome
http://127.0.0.1:3000 ,
进行初始化。http://IP:3000
,根据提示,点击下一步即可。首次初始化会要求设置账号、密码(请牢记),下次登录需要使用。利用AdGaurdHome的分流功能搭建无污染DNS
第一步当然是先安装AdGaurdHome啦!
根据官方教程可以很快速的安装好.
无污染DNS实现原理
使用境外DNS虽然可以实现DNS不被污染但是缺点也很明显那就是解析速度慢而且解析境内使用CDN的域名时很可能会将IP解析至境外影响上网体验。
根据官方文档中的说明,我们可以将DNS上游配置写在一个单独的文件当中,那么只需要将已知的境内域名单独使用境内DNS解析其余未知域名全部使用境外DNS进行解析就可以保证解析的结果不被污染。
具体实现
dnsmasq-china-list项目提供了很多属于中国大陆的域名列表。但是由于格式不兼容无法在AdGaurdHome中使用,我们需要对其进行转换。
使用sed
命令我们可以很方便将其转化为AdGaurdHome所支持的格式
sed -E "s#server=(\/.+\/)114\.114\.114\.114#[\1]${CHINADNS}#g"
具体脚本
#!/bin/bash
CHINADNS=223.5.5.5
LIST="$(dirname $0)/dnsrule.txt"
cat <<EOF > ${LIST}
tls://8.8.8.8
tls://8.8.4.4
EOF
curl -s https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf | sed -E "s#server=(\/.+\/)114\.114\.114\.114#[\1]${CHINADNS}#g" >> ${LIST}
将上面的内容保存为dnsrule.sh
文件赋予可执行权限并运行就会在脚本所在的目录生成一个dnsrule.txt
文件,然后在AdGaurdHome.yaml
文件内的upstream_dns_file:
后面填入dnsrule.txt
文件的绝对路径,保存后重启AdGaurdHome就可以了。
当然由于这个项目更新频繁需要经常更新上游文件,这点可以通过
contab
定时脚本解决.)
安卓AdGuard与VPN共存的几种方法
几个好用共存方法。
root通用共存(推荐)
- 需要 root 权限
- 对所有 VPN 软件适用
- 可随时关闭 AdGuard 或 VPN 软件
在 AdGuard 的
设置>网络>过滤方式
中选择本地 HTTP 代理
并开启自动(需要根权限)
注意:如果弹出 root 授权窗口请点击确认。在 AdGuard 内的
应用管理>你的VPN软件名字
找到通过 AdGuard 路由应用流量。
并将其关闭。打开你的 VPN 软件即可。
通过 AdGuard 转发网络流量至代理(无需ROOT权限)
- 无需 root 权限
- 需要代理软件支持在不开启VPN的情况下开启本地 socks4/5 或 http 代理
在 AdGuard 内的
应用管理>你的VPN软件名字
找到通过 AdGuard 路由应用流量。
并将其关闭。将代理软件设置为仅代理模式(在Clash中为关闭
自动路由系统流量
)在 AdGuard 的
设置>网络>代理
中添加代理,代理主机
统一为 127.0.0.1
软件名 | 默认协议 | 默认代理端口 |
---|---|---|
Shadowsocks | SOCKS5 | 1080 |
ShadowsocksRb | SOCKS5 | 1080 |
Clash | SOCKS5 | 7891 |
V2RayNG (1.4.0+) | SOCKS5 | 10808 |
SagerNet | SOCKS5 | 2080 |
Clash的实际端口以配置文件为准,这里的7891只是用的比较多的端口,2.1.1版本后可在覆写设置内修改端口
V2RayNG在1.4.0之后才支持仅代理模式请注意版本
SSR用户请使用支持仅代理模式的shadowsocksRb、Clash或SagerNet
注意:AdGuard内的
检查连接
功能并不能作为判断代理是否工作的依据,请使用浏览器打开对应网页(如:谷歌搜索、维基百科)进行测试
注意:如果遇到谷歌全家桶不走代理的情况,请在AdGuard的应用管理将对应软件的
通过AdGuard路由应用流量
选项打开
- 使用无污染的DNS,防止因DNS污染导致无法正常访问网站
可以在AdGuard内的
设置
>DNS
>选择DNS服务器
>添加自定义DNS服务器
中填写解析结果没有被污染的DNS服务器,也可以在AdGuard内的设置
>DNS
>选择DNS服务器
>推荐的DNS提供商
中进行选择(当然这些DNS服务器均架设在境外,在中国大陆使用速度不佳)如果你使用的是
Clash
,那么可以在Clash中的设置
>覆写
(需要Clash版本2.1.1+)中启用内置的DNS服务器。
然后在AdGuard内的设置
>DNS
>选择DNS服务器
>添加自定义DNS服务器
中填写Clash的内置DNS服务器。
评论
from http://web.archive.org/web/20210823055854/https://www.adgk.net/archives/52/
(AdGuard常见问题Q&A
安卓版
为什么开启过滤后我的网速变慢了
- 你可能打开的DNS过滤并使用了境外DNS,请使用位于境内的DNS,参考国内加密DNS列表
- 你可能使用了太多规则,建议不超过5条规则订阅
- 你可能开启了
钓鱼和恶意软件保护
功能,可以在设置
>安全浏览
中关闭它 - 你可能开启了
隐身模式
,可以在设置
>隐身模式
中关闭它
为什么总是显示XXX应用不接受证书
从安卓7.0开始应用默认情况下将不会信任用户CA证书,如果你有ROOT那么可以在设置
>网络
>HTTPS过滤
>安全证书
中将CA证书移动至系统分区
我使用Magisk模块将证书移动至系统分区了,为什么还是提示不信任
请直接将CA证书移入系统分区,使用Magisk模块移动证书仍会有部分应用不信任AdGuard的证书,原因未知。
可能你对目标应用开启了Magisk Hide
,该功能会对目标应用隐藏Magisk模块
对系统的修改,请对目标应用关闭Magisk Hide
或直接将证书移动至系统分区。
为什么我直接移动证书会提示将证书导入到系统存储区时发生错误
- 你可能使用的是MIUI系统自带的ROOT,这类ROOT通常没有修改system分区的权限,你可以使用Syslock软件来解锁system分区
- 如果你使用的是Magisk,那么你需要打开Magisk的核心模式之后再进行移动,新版
Magisk Manager
移除了Magisk核心模式的开关你可能需要借助Magisk核心模式软件来开启核心模式
AdGuard怎么跟VPN共存
可以看这篇教程《安卓AdGuard与VPN共存的几种方法》
第三方规则添加失败/更新失败
- 第三方规则大多数托管在境外服务器,在中国大陆访问缓慢甚至不能访问,请通过VPN更新规则,或者使用AdBlock-Acceleration项目中的加速源
- 小概率是规则已经停止维护,资源已被作者删除
为什么我的Firefox浏览器不信任证书
Firefox浏览器因为其只信任浏览器内建的CA证书,所以需要单独将证书安装到浏览器。
可以在设置
>网络
>HTTPS过滤
>安装证书至 Firefox 浏览器
进行证书安装
新版Firefox浏览器请根据此官方教程安装证书
AdGuard后台经常被杀怎么办
- 给予AdGuard自启动权限,并在多任务切换界面对AdGuard上锁
- 将
设置
>高级
中的看门狗周期
调整为1 - 如果有ROOT还可以在
设置
>高级
>低级设置
中将pref.root.set.oom_adj
选项打开
为什么经常提示Root+本地HTTP代理冲突
因为AdGuard在ipv6环境中的HTTP代理模式下与DNS过滤不兼容
解决方法:
- 可以在
设置
>高级
>低级设置
中找到pref.proxy.block.ipv6
并打开,缺点是无法使用ipv6 - 关闭DNS过滤
- 使用VPN模式
为什么开启AdGuard后无法使用XX银行APP
这是因为银行APP的安全策略导致的,可以在AdGuard的应用管理
>APP名称
内关闭通过AdGuard路由应用流量
关于YouTube广告
目前AdGuard无法拦截YouTube应用内的广告,你可以尝试使用AdGuard官方给出的解决方案
IOS版
为什么我的AdGuard不能过滤应用内广告
IOS版的AdGuard仅能过滤DNS查询
和Safari浏览器
内的广告
Windows版
为什么我开启了代理软件后AdGuard就无法过滤广告
在设置
>常规设置
>高级设置
中找到过滤 localhost 连接
并开启
为什么在AdGuard中添加的部分油猴脚本不能正常工作
AdGuard不是专业的用户脚本管理器,请尽量使用专业的用户脚本管理器如Tampermonkey
为什么AdGuard不能过滤xxx浏览器的广告
请在设置
>网络
>过滤应用列表
中添加对应的软件
AdGuardHome
为什么我的平均处理时间
那么高
- 你可能使用了境外DNS
- 部分域名解析超时会拉高
平均处理时间
- 你可能开启了
AdGuard 【浏览安全】网页服务
或AdGuard 【家长控制】服务
平均处理时间
仅能作为参考,并不是实际响应时间,无需特别在意
我该用哪个查询模式
建议使用并行请求
模式
Bootstrap DNS 服务器
该填什么
填写任意境内DNS如119.29.29.29
和223.5.5.5
我需不需要打开使用客户端的子网地址 (EDNS)
功能
如果你的AdGuardHome架设在云服务器上,那么建议打开该功能。
如果你的AdGuardHome架设在家庭局域网内如路由器
或树莓派
,那么请不要打开该功能.)
(在安卓手机上运行AdGuardhome
AdGuardHome是一款基于Dns去广告的软件,一般运行在软路由,当然不是所有人家里都有软路由,这里提供一种方法让AdGuardHome运行在闲置安卓手机上
准备
- 带root的闲置安卓手机一部
- Termux
- 科学上网手段(非必要)
下载
到发布页面选择对应架构的安装包进行下载
我这里选择的是arm64
可以用termux的wget
命令下载(需要先安装wget
命令)
也可以使用其他下载软件下载后,使用文件管理器移动到/data/data/com.termux/files/home
目录
解压
打开termux输入tar xvf AdGuardHome_linux_*.tar.gz
进行解压
输入cd AdGuardHome
进入解压好的文件夹
然后输入su
切换root账户,如弹出root授权提示请点击确认
输入./AdGuardHome &
运行AdGuardHome
打开浏览器进入http://127.0.0.1:3000
进行配置
到这里,已经可以关闭termux的后台了
但是,请注意AdGuardHome不会开机自启,重启手机需要重新运行
cd AdGuardHome
./AdGuardHome &
来打开AdGuardHome
如需关闭AdGuardHome可以运行pkill AdGuardHome
即可关闭AdGuardHome进程
2020.09.30更新
使用Magisk模块运行AdGuardHome
- 可开机自启
- 安装卸载方便
使用方法:
- 下载下方的模块
- 安装Magisk模块
- 重启手机使模块生效
- 打开浏览器输入
http://127.0.0.1:3000
进行配置
下载模块
Public DNS resolver that protects you from ad trackers https://adguard.com/adguard-dns/overv…
AdGuard DNS
DNS Privacy
DNS-over-HTTPS
, DNS-over-TLS
, and DNSCrypt
.Additional Features
- Blocking trackers network-wide with no additional software required. You can even set it up on your router to block ads on all devices connected to your home Wi-Fi network.
- Protection from phishing and hazardous websites and malvertising (malicious ads).
- Use the Family protection mode of AdGuard DNS to block access to all websites with adult content and enforce safe search in the browser, in addition to the regular perks of ad blocking and browsing security.
It depends. DNS-level blocking lacks the flexibility of the traditional ad blockers. For instance, there is no cosmetic pages processing. So in general, traditional blockers provide higher quality.
Why is AdGuard DNS free? What’s the catch?
Usage
- Android 9 supports DNS-over-TLS natively
- AdGuard for Android supports
DNSCrypt
in the stable version, and supportsDNS-over-HTTPS
in the nightly update channel - AdGuard for iOS Pro supports
DNSCrypt
- Intra adds
DNS-over-HTTPS
support to Android - Mozilla Firefox supports
DNS-over-HTTPS
- AdGuard Home supports
DNS-over-TLS
andDNS-over-HTTPS
- A lot more implementation can be found here and here
Regular DNS
176.103.130.130
or 176.103.130.131
for "Default"; 176.103.130.132
or 176.103.130.134
for "Family protection".DNS-over-HTTPS
https://dns.adguard.com/dns-query
for "Default" and https://dns-family.adguard.com/dns-query
for "Family protection" mode.DNS-over-TLS
dns.adguard.com
string for "Default" or dns-family.adguard.com
for "Family protection".DNSCrypt
sdns://AQIAAAAAAAAAFDE3Ni4xMDMuMTMwLjEzMDo1NDQzINErR_JS3PLCu_iZEIbq95zkSV2LFsigxDIuUso_OQhzIjIuZG5zY3J5cHQuZGVmYXVsdC5uczEuYWRndWFyZC5jb20
sdns://AQIAAAAAAAAAFDE3Ni4xMDMuMTMwLjEzMjo1NDQzILgxXdexS27jIKRw3C7Wsao5jMnlhvhdRUXWuMm1AFq6ITIuZG5zY3J5cHQuZmFtaWx5Lm5zMS5hZGd1YXJkLmNvbQ
Dependencies
使用DNSProxy搭建一个支持EDNS的DoH服务器
DNSProxy是AdguardTeam开发的一个简单的DNS代理服务器,它支持目前所有的DNS协议。包括DoT/DoH/DNSCrypt等。最最最重要的是还支持EDNS(ECS)。
我最近一直在找一个可以支持EDNS的DoH解决方案,试过很多开源的程序,比如DNSDist/Unbound之类的,但是无一例外要么是支持的不够完善,要么是配置起来太复杂了。。
我知道AdguardTeam这个开发团队其实本身就有一个项目是支持EDNS的:AdGuardHome。但是这个程序跑起来比较重,有很多我不需要用到的功能。
就在我纠结的时候,突然发现AdguardTeam还有一个DNSProxy的项目,这个就非常好了,有所有我需要用到的功能,而且配置起来非常简单,这里就给大家推荐一下吧。
咱毕竟懂的也不多,关于EDNS具体是个啥原理,我也不能随便乱说,如果你想了解这块的话可以看看维基百科或者Google:
https://en.wikipedia.org/wiki/EDNS_Client_Subnet
只是从个人使用体验来说的话,有EDNS支持的话,你访问国内的一些网站就不会慢了,比如B站/163/QQ/斗鱼直播这些。可以省去做国内外分DNS解析的步骤。
目前个人使用感觉良好,废话就不多说了,下面是搭建步骤。
首先装一下需要用到的工具:
apt -y update apt -y install wget nginx python-certbot-nginx supervisor
设置nginx/supervisor开机自启:
systemctl enable --now nginx supervisor
下载解压dnsproxy的预编译文件:
cd /opt wget https://github.com/AdguardTeam/dnsproxy/releases/download/v0.33.8/dnsproxy-linux-amd64-v0.33.8.tar.gz tar -xzvf dnsproxy-linux-amd64-v0.33.8.tar.gz mv linux-amd64 dnsproxy
其实dnsproxy可以直接拿来用,把它监听在443端口就行了,但是我机器上面还要做站或者搞点其他的东西,所以这里我选择用nginx反代dnsproxy的服务。
这里先新建一个nginx站点配置文件:
nano /etc/nginx/conf.d/dnsproxy.conf
写入如下配置:
server { listen 80; server_name urdomain.com; # 换成你的域名 client_max_body_size 0; location /dns-query { proxy_pass https://127.0.0.1:10443; # 后续dnsproxy监听的端口号 proxy_set_header X-Real-IP $remote_addr; # 传递客户端的真实ip到dnsproxy,否则dnsproxy的edns功能不能用 } }
然后用certbot签发一个ssl证书:
certbot --nginx
之后你需要重新编辑这个站点配置文件:
nano /etc/nginx/conf.d/dnsproxy.conf
在如下行加上http2的配置:
listen 443 ssl http2; # managed by Certbot
重载nginx使其生效:
systemctl reload nginx
现在新建supervisor配置文件:
nano /etc/supervisor/conf.d/dnsproxy.conf
写入如下配置:
[program:dnsproxy] priority=1 command=/opt/dnsproxy/dnsproxy -l 127.0.0.1 --https-port=10443 --tls-crt=/etc/letsencrypt/live/urdomain.com/fullchain.pem --tls-key=/etc/letsencrypt/live/urdomain.com/privkey.pem -u https://dns.google/dns-query -f 8.8.8.8:53 -f 8.8.4.4:53 --cache --edns -p 0 autostart=true autorestart=true redirect_stderr=true stdout_logfile=/var/log/supervisor/dnsproxy.log
之前已经用certbot申请好了证书,所以你只需要把上面的证书和私钥换成你自己的就可以了,其他的配置都不需要改动。
现在启动dnsproxy就大功告成啦:
supervisorctl update
经过上面的步骤后,你的DoH服务地址就是:
https://urdomain.com/dns-query
adguard代理显示无法连接,clash开着也没用,求助。方法二。
clash的实际端口需要看你的配置文件设置将端口成多少
http代理可用
非root感觉部分应用打开有点慢是怎么回事 测速很快
像油管打开就很慢 TG ins 奈菲没有问题
理论上来说这样共存不会影响速度,只是把原本要代理软件打开的vpn交给adguard
来打开,检查一下有没有打开adguard的DNS,隐身模式,安全浏览等会影响速度的选项
v2ray与adg,唯独YouTube无法联网,其它正常,求解?!谢谢!
在ag的应用管理里面找到YouTube,看看通过 AdGuard 路由应用流量有没有打开
开着在,同样设置其他的可以翻出去,唯独油管无法联网。你说的这种基本错误我不会忽略的。
第一种有效,感谢.