dns 分流,国内 ip 直连, fakeip 转发到 clash

2023-11-06 19:16:43 +08:00
 xjx0524

最近开始用上了 RouterOS ,科学上网通过旁路由 openwrt ,具体方案参考了站内一些大佬 fakeip 的方案。

具体方案如下:

  1. ROS 基础配置参考了这个文档 https://gitee.com/callmer/routeros_toss_notes
  2. 旁路由部署了 mosdns 和 openclash ( fakeip 模式),mosdns 国内域名查询阿里腾讯 dns 返回真实 ip ,国外域名请求 clash 的 dns 端口返回 fakeip 。
  3. 主路由 ROS 设置 dns 指向旁路由,增加 to_op 路由表默认网关为旁路由,通过 mangle mark-routing 将目的地址为 fakeip 和 telegram ip 的流量 指向 to_op 路由表

有一些疑问希望大佬们能帮忙解答一下

  1. 对于一些国外 ip (非域名)的连接,如果不像 telegram 那样特别配置,是不是就没法走科学线路,不知道这种 ip 直连的情况多不多?
  2. 我的 clash 直接用的机场的配置,我是希望 clash 保留原有域名规则的情况下,不去进行 dns 查询。我现在手动把所有 ip 规则配上了 no-resolve ,不知道这样是否有用,或者有没有更好的解决办法?
  3. 现在的配置下,打开国外网站不够丝滑,以谷歌为例,具体表现为
    1. 浏览器首次打开谷歌或过了较长一段时间后再打开,会白屏约 1 秒,后续再打开正常。推测应该是 dns 问题,没有了缓存就会这样?
    2. 无论是否首次打开,显示出页面后,网页 tab 处仍然会转圈一段时间

上面 3 的这个情况,在我将设备网关手动设置成旁路由的时候,基本不会出现,希望大佬能提供一些排查思路。

目前网络知识还是半吊子水平,有些问题不好直接搜索到,希望大佬们能帮忙解答一下

6858 次点击
所在节点    宽带症候群
24 条回复
hsj1992
2023-12-23 11:12:00 +08:00
@imKiva 我切换了旁路网关,改为 tun 模式,经过旁路网关的 stun 服务器做 NAT 类型探测 ,mapping 仍然是 AddressDependent Mapping 。

尝试使用局域网的一台 linux 设备进行测试(使用 stun-client),发现了问题:
执行命令 stun stunserver.stunprotocol.org -v ,然后按常理,如果是 NAT1 的 EIM NAT 的话,显示的数个 mapped address 应该都会是同一个 proxy 的 ip 地址。但是其中的一个 mapped address 出现了 direct 的 ip 地址。
我做了个尝试,在主路由 ros 里将该 stun 服务器的国外 ip 地址网段 3.132.0.0/16 和 3.132.0.0/16 静态路由指向旁路网关,对该国外 stun 服务器再次进行测试,就好了,mapping 和 filter 都是 endpoint-independent 了。

所以应该是 fakeip DNS 分流的问题。就像在我的使用场景里,要使用 tg 还需要给它的 CIDR 网段写静态路由指向旁路网关一样,NAT 类型探测也会有设备直接指向 IP 而没经过 fakeip DNS 的场景?
然后导致 mapped address 有不同,导致 mapped IP same = 0 ,从而显示 AddressDependent Mapping 。
所以当我设备的网关地址直接设置为旁路网关时候是 EIM NAT ,因为此时设备没经过域名指向 IP 也是走的旁路网关。

我后续可能结合使用 ROS 的 IP 分流。
imKiva
2023-12-23 12:53:36 +08:00
@hsj1992
> 要使用 tg 还需要给它的 CIDR 网段写静态路由指向旁路网关一样,NAT 类型探测也会有设备直接指向 IP 而没经过 fakeip DNS 的场景?

是的。我上面的最近一条回复里也提到了:是静态路由配置不全的问题
imKiva
2023-12-23 12:56:50 +08:00
@hsj1992 我后来找了一些常用 stun server 的服务器地址,把他们都加入静态路由,具体是下面几个

# STUN server
# stunserver.stunprotocol.org
route 3.132.228.249/32 via "utun";
route 3.135.212.85/32 via "utun"; # STUN OtherAddress
# stun.hot-chilli.net
route 49.12.125.53/32 via "utun";
route 49.12.125.24/32 via "utun"; # STUN OtherAddress
# stun.syncthing.net
route 139.59.84.212/32 via "utun";
route 139.59.49.16/32 via "utun"; # STUN OtherAddress
route 198.211.120.59/32 via "utun";
route 188.166.128.84/32 via "utun"; # STUN OtherAddress
# stun.fitauto.ru
route 195.208.107.138/32 via "utun";
route 195.208.107.140/32 via "utun"; # STUN OtherAddress
# stun.l.google.com
route 108.177.125.127/32 via "utun";
bluaze
116 天前
@xjx0524 #9 因为科学流量只有去程经过了主路由,回程直接从旁路由就回了设备,对于主路由来说,这些流量都是有问题的,如果手动将设备网关都设成旁路由,那么去程回程都只经过旁路由,那当然没问题,其实还可以将静态路由通过 dhcp 推送给设备,这样设备 fakeip 段直接与旁路由通信,而不用经过主路由,也可以规避这个问题

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

https://www.v2ex.com/t/989243

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

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

© 2021 V2EX