0%

软路由折腾记-下篇

本篇讲述,如何通过OpenClash实现IPv4和IPv6的双栈支持,并结合SmartDNS进行DNS分流和优选,可以显著提升网络体验和应用性能,并记录关键的配置要点。由于版本的不同,请根据自己的实际情况调整;✓代表勾选 ✕代表取消勾选;若未提及的设置,一般保留默认值。

准备

  1. 基于NanoPi-R5s-LST版 + Lean固件QWRT-R24.02.26(R24.3.3)
  2. OpenClash, TUN内核:v1.18.0-13-gd034a40,Meta内核:alpha-g0d4e57c,客户端版本:v0.46.001-beta
  3. SmartDNS Release 45, 即1.2024.02.08-0828版本, 注意Luci需要下载luci-compat-all.ipk,才能在Web界面显示配置菜单

SmartDNS配置

在折腾过MosDNS之后,还是用回SmartDNS,使用OpenClash的白名单分流国内外DNS查询。SmartDNS 国内分组使用的端口是:6053,第二组的DNS服务器端口是:6553,注意端口号不能跟已运行的服务相冲突。DNS 上游服务器配置如下图(自动设置 Dnsmasq❌),根据官方建议,上游DNS不宜超过10个:alt text
alt text
可以参考这个网址[https://dns.icoa.cn/],挑选符合自己网络的国内外DNS服务器。
当然,你也可以直接vi编辑"/etc/config/smartdns"文件,批量将DNS服务器加入(最上方Tencent作为运营商解析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
config server
option enabled '1'
option type 'udp'
option exclude_default_group '1'
option addition_arg '-bootstrap-dns'
option ip '119.29.29.29'
option name 'Tencent'

config server
option enabled '1'
option name 'cn-Ali-DOH'
option ip 'https://dns.alidns.com/dns-query'
option type 'https'
option server_group 'cn'

config server
option enabled '1'
option name 'cn-Ali'
option server_group 'cn'
option ip 'dns.alidns.com'
option type 'tls'

config server
option enabled '1'
option name 'cn-Tencent'
option server_group 'cn'
option ip 'https://doh.pub/dns-query'
option type 'https'

config server
option enabled '1'
option server_group 'cn'
option name 'cn-Tencent'
option ip '1.12.12.12'
option type 'tls'
option tls_host_verify 'dot.pub'

config server
option enabled '1'
option name 'us-g1'
option server_group 'us'
option exclude_default_group '1'
option ip 'https://dns.google/dns-query'
option type 'https'

config server
option enabled '1'
option name 'us-cf2'
option type 'https'
option server_group 'us'
option exclude_default_group '1'
option tls_host_verify 'cloudflare-dns.com'
option ip 'https://1.0.0.1/dns-query'

config server
option enabled '1'
option type 'tls'
option server_group 'us'
option exclude_default_group '1'
option name 'us-Quad9'
option ip '9.9.9.9'
option tls_host_verify 'dns.quad9.net'

SmartDNS高级设置

  • 测速模式:默认
  • TCP服务器:✖️
  • DOT服务器:✖️
  • DOH服务器:✖️
  • IPV6服务器:✔
  • 绑定到设备:✔
  • 双栈IP优选:✔
  • 域名预加载: ✔
  • 缓存过期服务:✖️
  • 缓存大小:10000 (这个根据实际性能调整)
  • 持久化缓存:✖️
  • 解析本地主机名:✔
  • 停用IPV6地址解析:✖️
  • 停用HTTPS记录解析:✖️
    alt text
    alt text

SmartDNS第二DNS服务器

  • 启用:✔
  • 服务器组:us
  • 跳过测速:✔
  • 跳过双栈优选:✔
  • 跳过cache:✔
  • 停用IPV6地址解析:✔
    alt text

自定义配置

1
2
#iOS系统解析缓慢
force-qtype-SOA 65

域名规则

域名地址,添加自定义配置

1
2
3
4
5
# Stop ipv6 for google,停止谷歌的ipv6解析
#address /google.com/#6
#address /dns.google/#6
#DDNS pointed to internal server,将ddns域名转换成实际内网服务器ip
address /example.example.com/192.168.xx.xx

至此,SmartDNS部分配置完毕。

OpenClash配置

先准备好订阅地址,我使用CF通过Worker部署了定制汇聚订阅,可以将多个订阅或者节点汇聚在一起,并能加载分流规则,方便在多设备上同步配置文件。
alt text
保存配置,不要应用

插件设置

  1. 模式设置
  • 使用 Meta 内核:✔
  • 运行模式:Redir-Host (TUN-混合)模式
  • 延迟启动(秒):10
    alt text
  1. 流量控制
  • 禁用QUIC: ✔
  • 仅允许常用端口流量:默认常用端口
  • 绕过中国大陆IP:✔
  • 绕过中国大陆IPv4黑名单:添加以下网站(我理解的是即使该网站解析的IP识别为大陆,仍然用代理)
1
2
## 方便使用Bing的Copilot
bing.com

alt text

  1. DNS设置
  • 本地DNS劫持:使用Dnsmasq转发
  • 禁止Dnsmasq缓存:✔
  1. 黑白名单:
    使用黑名单,即只有添加IP或mac的设备不走代理,其他设备都走代理。添加设备的mac效果更好,一次性把设备的IPv4和IPv6都包含其中
  2. IPv6设置
  • IPv6 流量代理:✔
  • IPv6 代理模式:TUN模式
  • 允许 IPv6 类型 DNS 解析:✔
  • 绕过中国大陆 IPv6:✔
  • 绕过中国大陆IPv6黑名单:添加以下网站
1
2
## 方便使用Bing的Copilot
bing.com
  1. GEO数据库订阅
  • 自动更新 GeoIP Dat 数据库:✔
  • 自动更新 GeoSite 数据库:✔
    避开重启的时段,选择更新时间。
  1. 大陆白名单订阅自动更新:✔

覆写设置

DNS设置

  • 自定义上游 DNS 服务器:✔
  • 追加上游DNS:×
  • 追加默认DNS:×
    设置自定义上游 DNS 服务器:
  • NameServer 和 Default-NameServer 使用127.0.0.1,6053,UDP, 即SmartDNS 第一服务器
  • FallBack使用127.0.0.1, 6553,UDP, 即使用 SmartDNS 第二服务器
    至此,SmartDNS 就会接管所有的 DNS 请求。
    alt text

规则管理

添加一个不走代理的白名单,强制这些域名走本地直连。

  • 规则集文件列表->新建文件,文件名为CN-Whitelist.yaml
1
2
3
4
payload:
## > Ubiquiti
- DOMAIN-SUFFIX,ui.com
- DOMAIN-SUFFIX,uwn.com

规则附加

添加自定义规则集附加,顺序选择优先(覆盖)。但是我实际使用下来未能生效,后来还是在线分流规则中新建了国内直连的分组。alt text
在Openclash中点击保存配置应用配置,启动其客户端后,即可正常使用。
alt text

参考文档