Openwrt 正确配置 AdguardHome 和 smartdns 和 passwall

折腾了很久,发现不用 smartdns 是无法正确配置 passwall+AdguardHome 的。

某 github 的 issue 说 smartdns 是骗小白的,其实具体还是看使用场景。

这个文章也是记录一下具体设置,下次就方便找了

以下步骤按顺序进行

下面步骤按顺序进行

SmartDNS 设置

  1. 系统->高级设置->SmartDNS 中粘贴下面代码

国内 dns 的 server_group 为 `cn

国外 dns 都设置为 tls 查询 (因为 53 的 udp 会被抢答),且 group 为 passwall,额外参数要加 -exclude-default-group

有喜欢的 dns 可以自己修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
config smartdns
option server_name 'smartdns'
option port '6053'
option tcp_server '1'
option seconddns_tcp_server '1'
option coredump '0'
option seconddns_server_group 'passwall'
option seconddns_no_speed_check '1'
option seconddns_no_dualstack_selection '1'
option prefetch_domain '1'
option force_aaaa_soa '1'
option dualstack_ip_selection '1'
option serve_expired '1'
option redirect 'dnsmasq-upstream'
option rr_ttl_min '300'
option seconddns_port '7913'
option seconddns_enabled '1'
option seconddns_no_rule_nameserver '1'
option seconddns_no_rule_addr '0'
option seconddns_no_rule_soa '0'
option seconddns_no_rule_ipset '0'
option cache_size '300'
option seconddns_no_cache '1'
option enabled '1'
option ipv6_server '1'
list old_redirect 'dnsmasq-upstream'
list old_port '6053'
list old_enabled '1'

config server
option name 'aliyun'
option ip '223.5.5.5'
option port '53'
option type 'udp'
option blacklist_ip '0'
option server_group 'cn'
option enabled '1'

config server
option name '114'
option ip '114.114.114.114'
option port '53'
option type 'udp'
option blacklist_ip '0'
option server_group 'cn'
option enabled '1'

config server
option type 'udp'
option port '53'
option name 'DNSPod'
option ip '119.29.29.29'
option blacklist_ip '0'
option server_group 'cn'
option enabled '1'

config server
option enabled '1'
option name 'cloud'
option ip '1.1.1.1'
option port '853'
option type 'tls'
option server_group 'passwall'
option blacklist_ip '0'
option addition_arg ' -exclude-default-group'

config server
option enabled '1'
option type 'udp'
option name 'CNNIC SDNS'
option ip '1.2.4.8'
option port '53'
option server_group 'cn'
option blacklist_ip '0'


Passwall 设置

DNS 设置中

  • 过滤模式:通过 UDP 请求 DNS
  • 远程 dns: 127.0.0.1:7913 (设置为 smartdns 的国外端口)
  • ChinaDNS-NG 勾上
  • 模式:中国列表以外 或者 GFW列表
    `

这里很混乱,passwall 新版没有了分流选项,会默认读取转发规则。
可以观察日志,如果有如下日志则配置正确

1
+ 过滤服务:ChinaDNS-NG(:7914):国内DNS:127.0.0.1#6053,可信DNS:127.0.0.1#7913
  • 规则列表 -> 直连列表

添加刚刚设置的国内 DNS 的 IP

1
2
3
4
114.114.114.114
223.5.5.5
119.29.29.29
1.2.4.8
  • 规则列表 -> 代理列表

添加刚刚设置的国外 DNS 的域名或者 IP

1
1.1.1.1

AdGuardHome 设置

警告

如果你的 passwall 节点为域名解析型,且 passwall 设置为,那么设置 AdGuardHome 上游 DNS 为本机时,如果 passwall 服务失效或关闭,会导致整个网络死循环。

想要避免此问题,请在 SmartDNS 中,自定义设置里添加制定域名用 cn 组别解析。

例如:

1
nameserver /passwall.com/cn

如果不需要则跳过这步即可。

  1. 转发设置

网络 -> 防火墙 -> 自定义规则:

注释掉 53 转发规则。如果只有两条也没关系,我这里开启了 ipv6 所以有 4 条。

1
2
3
4
#iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
i#ptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
#[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
#[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
  1. 配置 AdguardHome 的 DNS

设置上游 DNS 为 127.0.0.1

  1. 设置重定向 53 到 AdguardHome。

Openwrt 正确配置 AdguardHome 和 smartdns 和 passwall

https://robinxb.com/posts/2022/setting-smartdns-with-adguardhome-and-passwall/

作者

薯条

发布于

2022-04-27

更新于

2024-01-15

许可协议

评论