终极的分流策略

175 天前
 yyysuo
这里聊的是分流策略,不是 fakeip 、bgp 、ospf 、ipset 、ipt 、nft 等分流用到的技术手段,也不是 sing-box 、mihomo 等核心,更不是 openclash ,小猫咪等集成代理工具。

首先要确定分流的对象,互联网上的访问需要分流的,就是域名,没有对应域名纯 IP 访问的场景极其有限,可以做特殊处理。

分流总体上可以分为 2 类,直连和代理,需要代理的域名就直接引入到 sing-box/mihomo 等代理程序中进一步分流即可,代理程序按域名分流十分成熟了。

那如何判断一个域名需要代理呢?目前有各种域名列表,直连域名列表、gfwlist ,基本上覆盖了大部分常用的域名,重点是那些没在域名列表中的域名,虽然访问的机率小,其实是海量的,永远也无法维护完全的。

于是就产生了白名单和黑名单 2 种模式,即不在列表中的域名,要么全走国内 dns 解析,要么全走国外 dns 解析。可能遇到尴尬的场景,黑名单模式下,某个人个博客不在 gfwlist 列表中,无法访问,需要手动添加域名至 gfwlist ;白名单模式下,某国内购物网站突然定位到了国外,出停车场时扫码付费一直在转圈,因为小程序的域名 xxx.top 只做了国内解析,国外 dns 压根没解析结果。

对于这种尴尬,解决的办法有两种
1:列表外域名国内 dns 解析,解析结果为国外 IP/无 IP 的,使用国外 dns 再解析一次,速度快,dns 有泄露。
2:列表外域名国外 dns 解析,附加上国内 ip 作为 ecs ip ,速度慢,结果可能不够精确,dns 无泄露。

当然还有很多细节问题,比如方法 2 就无法解决国外 dns 无解析结果的情况,需要回落到国内 dns 做 2 次解析,可以添加过期缓存来保存分流结果等等等等,需要慢慢打磨。

以上 2 种方法,对域名列表的依赖度大大降低了,基本上可以自动分流不在列表中的域名,分流精度大大提高,体验极佳。

推荐方法 1 ,速度快,dns 逻辑处理起来更简单。
9283 次点击
所在节点    宽带症候群
83 条回复
yyysuo
173 天前
@lw4free 你说那段带 bssid 的逻辑?就是在不连接家里 wifi 的时候,走 directm 出站,directm 出站绑定了 pdp_ip0 接口,就是 iphone 自带的移动数据接口,可以在连接 wifi 的时候,也走手机流量。
yyysuo
173 天前
@YGBlvcAK 啊,你说 mosdns 还是 sing-box 手机端配置?
yyysuo
173 天前
@YGBlvcAK pull guy 佬?
vokins
173 天前
我的是自己常用国外 app 手机的域名走代里(自己维护了一个列表)剩下的全部直连。
scegg
173 天前
mosdns 用了这个配置后,cloudflared 会挂,报错是域名解析不到 srv 记录。
dig srv _origintunneld._tcp.argotunnel.com
ANSWER SECTION 就没了

可能跟某个 sequence 的处理有影响吧。
yyysuo
172 天前
@scegg 非 a 和 aaaa 的除了 12 和 65 都走了 8888 ,你这个 33 ,走了 8888 ,mosdns 的 socks5 服务器配置了吗,mosdns 的 socks5 ,只支持 tcp ,8888 要用 doh
yyysuo
172 天前
@scegg 实在不行把 8888 改成 1111 吧
scegg
172 天前
@yyysuo 多谢。发现问题就是如你所说,mosdns 的 socks5 只支持 tcp 相关。
scegg
172 天前
@yyysuo 不过可能还有别的问题。用的你在 https://github.com/IrineSistiana/mosdns/discussions/837 中 1199 的方案文件,修改了 forward_google 为 tcp://8.8.8.8 和 tcp://1.1.1.1 ,2 并发均带 socks5 之后,问题依旧:dig srv _origintunneld._tcp.argotunnel.com 没有 answer
scegg
172 天前
@yyysuo 即使把此域名加入 whitelist ,依旧如此。而直接指定从内地 dns 去 dig 可以得到 answer ,所以可能问题不是在国际部分。
metalvest
170 天前
抄 append 作业时 sing-box 的 config.json 报错 lazy_cache 字段 unknown 是怎么回事
daemon.err sing-box[6039]: [31mFATAL [0m[0000] decode config at /etc/sing-box/config.json: dns.lazy_cache: json: unknown field "lazy_cache"
yyysuo
170 天前
@metalvest 用第 1 个压缩包中的核心,不是官方核心,puer fork 版本,有修改。
yyysuo
170 天前
@scegg 这个配置的 dns type 优先级高于 whitelist.txt ,这种情况加白名单无效。默认情况下我试了一下,返回是没问题的。

PaoPao_MosUI:~# dig srv _origintunneld._tcp.argotunnel.com 10.10.10.1:5454

; <<>> DiG 9.18.29 <<>> srv _origintunneld._tcp.argotunnel.com 10.10.10.1:5454
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27316
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1200
;; QUESTION SECTION:
;_origintunneld._tcp.argotunnel.com. IN SRV

;; ANSWER SECTION:
_origintunneld._tcp.argotunnel.com. 143 IN SRV 2 1 7844 region2.argotunnel.com.
_origintunneld._tcp.argotunnel.com. 143 IN SRV 1 1 7844 region1.argotunnel.com.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Mon Nov 25 09:14:02 CST 2024
;; MSG SIZE rcvd: 215

;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 48634
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1200
;; QUESTION SECTION:
;10.10.10.1:5454. IN SRV

;; AUTHORITY SECTION:
. 86399 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2024112401 1800 900 604800 86400

;; Query time: 210 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Mon Nov 25 09:14:03 CST 2024
;; MSG SIZE rcvd: 119
metalvest
170 天前
@yyysuo #72 哦,压缩包里是 x86 的核心,我是硬路由刷机可能不兼容。
yyysuo
170 天前
@metalvest 找一下有没有你的架构 话说 mosdns 你也得自己去找核心啊 https://github.com/PuerNya/sing-box/actions/runs/10412051372
metalvest
170 天前
@yyysuo #75 mosdns 直接 opkg 安装的
metalvest
170 天前
@yyysuo #75
这链接里的 build 好像是失败了?
sing-box-1.10.0-alpha.29-067c81a7-linux-arm64 Expired
Annotations
1 warning
Failed to restore: "/usr/bin/tar" failed with error: The process '/usr/bin/tar' failed with exit code 2
yyysuo
170 天前
@metalvest 需要登陆,拉到最下面。
metalvest
170 天前
@yyysuo #78 最下面就只有一大排过期的 Artifacts
metalvest
170 天前
@yyysuo #78 看了一下大小,30 多 MB ,硬路由总共才 128MB ,overlay 不够用了,还得拆机改容量才装得下,暂时放弃

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/1091065

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX