折腾了很久,发现不用 smartdns 是无法正确配置 passwall+AdguardHome 的。
某 github 的 issue 说 smartdns 是骗小白的,其实具体还是看使用场景。
这个文章也是记录一下具体设置,下次就方便找了
以下步骤按顺序进行
下面步骤按顺序进行
SmartDNS 设置
系统->高级设置->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
AdGuardHome 设置
警告
如果你的 passwall 节点为域名解析型,且 passwall 设置为,那么设置 AdGuardHome 上游 DNS 为本机时,如果 passwall 服务失效或关闭,会导致整个网络死循环。
想要避免此问题,请在 SmartDNS 中,自定义设置里添加制定域名用 cn 组别解析。
例如:
1
| nameserver /passwall.com/cn
|
如果不需要则跳过这步即可。
- 转发设置
网络 -> 防火墙 -> 自定义规则:
注释掉 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
|
- 配置 AdguardHome 的 DNS
设置上游 DNS 为 127.0.0.1
- 设置重定向 53 到 AdguardHome。