跳转到内容
彼岸论坛
欢迎抵达彼岸 彼岸花开 此处谁在 -彼岸论坛

[宽带症候群] 终极的科学方案,还得是 fakeip 网关+mosdns,体验极好。


小天管理

已推荐帖子

原理: https://blog.03k.org/post/paopaogateway.html
这里说的终极,是指体验,影响体验的因素,主要有以下几方面。
1:分流正确、精确,国外的域名代理访问,国内的域名直连访问,不进代理核心。
2:根据域名分流,而不是根据 ip 分流。

dns 分流逻辑
1:国内域名列表直接向 223.5.5.5 请求,发 realip
2:国外域名列表向 sing-box/mihomo 请求 fakeip
3:不在域名列表中的域名,带 ecs 向 8888 请求,如果返回中国 ip 就采用,如果返回非中国 IP ,则抛弃,再次向 sing-box/mihomo 请求 fakeip 。

策略路由与 iptables 操作,只处理需要代理的 IP 段
#fakeip 段
ip route add local 28.0.0.0/8 dev lo table 100
#公共 dns ip 段
ip route add local 8.8.8.8/32 dev lo table 100
#电报、奈飞等 IP 直连的 IP 段
ip route add local 23.23.189.144/28 dev lo table 100
ip rule add fwmark 1 table 100
#电报、奈飞等 IP 直连的 IP 段
ip -6 route add local 2001:b28:f23d::/48 dev lo table 200
ip -6 rule add fwmark 1 table 200

iptables 操作,只劫持需要代理的 IP 段
iptables -t mangle -N SING_BOX
ip6tables -t mangle -N SING_BOX_V6
iptables -t mangle -A SING_BOX -p tcp -j TPROXY --tproxy-mark 1 --on-ip 127.0.0.1 --on-port 7895
iptables -t mangle -A SING_BOX -p udp -j TPROXY --tproxy-mark 1 --on-ip 127.0.0.1 --on-port 7895
ip6tables -t mangle -A SING_BOX_V6 -p tcp -j TPROXY --on-port 7895 --on-ip ::1 --tproxy-mark 1
ip6tables -t mangle -A SING_BOX_V6 -p udp -j TPROXY --on-port 7895 --on-ip ::1 --tproxy-mark 1
iptables -t mangle -A PREROUTING -m set --match-set singboxset dst -j SING_BOX
ip6tables -t mangle -A PREROUTING -m set --match-set singboxset6 dst -j SING_BOX_V6


mosdns 代码示例
- tag: main_sequence
type: sequence
args:
- matches: qname $blocklist 如果是黑名单域名
exec: reject 0 屏蔽,流程结束
- matches: "!qtype 1 16 28" 如果不是 A 和 TXT 类型的 dns 请求 (只允许 A 、AAAA 、TXT 记录)
exec: reject 0 屏蔽,流程结束
- matches: "qname $geosite_apple" 如果是苹果域名
exec: $forward_local 发送到国内 dns
- matches: has_resp 如果有结果
exec: accept 流程结束
- matches: qname $whitelist 如果是白名单域名
exec: $forward_local 发送到国内 dns
- matches: has_resp 如果有结果
exec: accept 流程结束
- matches: qname $greylist 如果是灰名单域名
exec: $forward_remote 发送到 sing-box dns 请求 fakeip
- matches: has_resp 如果有结果
exec: accept 流程结束
- matches: qname $geosite_cn 如果是国内列表的域名
exec: $forward_local 发送到国内 dns
- matches: has_resp 如果有结果
exec: accept 流程结束
- matches: qname $geosite_no_cn 如果是国外列表的域名
exec: $forward_remote 发送到 sing-box dns 请求 fakeip
- matches: has_resp 如果有结果
exec: accept 流程结束
- exec: $forward_cf 以上都没 match ,说明是表外的域名,直接发送到国外 dns 取 real ip
- matches: "!resp_ip 0.0.0.0/0 2000::/3" 如果没有 real ip 返回
exec: reject 0 直接返回 rcode 0 ,客户端收到 no error 信息,但是没有 ip
- matches: "!resp_ip $geoip_cn" 如果有非中国 IP 返回
exec: $forward_remote 发送到 sing-box dns 请求 fakeip ,抛弃 real ip
如果是中国 IP ,则不会向 sing-box dns 请求 fakeip ,流程已结束,中国 ip 被接受。
意见的链接
分享到其他网站

加入讨论

您现在可以发表并稍后注册. 如果您是会员,请现在登录来参与讨论.

游客
回复主题...

×   粘贴为富文本.   粘贴为纯文本来代替

  只允许使用75个表情符号.

×   您的链接已自动嵌入.   显示为链接来代替

×   您之前的内容已恢复.   清除编辑器

×   您无法直接粘贴图片.要从网址上传或插入图片.

  • 游客注册

    游客注册

  • 会员

  • 最新的状态更新

    没有最新的状态更新
  • 最近查看

    • 没有会员查看此页面.
×
×
  • 创建新的...