clash fake-ip 模式处理 UDP 和 TCP 协议时遇到的奇怪问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
caneman
V2EX    DNS

clash fake-ip 模式处理 UDP 和 TCP 协议时遇到的奇怪问题

  •  
  •   caneman 2023-07-17 16:44:53 +08:00 8966 次点击
    这是一个创建于 866 天前的主题,其中的信息可能已经有所发展或是发生改变。

    软路由,透明代理,fake-ip 模式

    个人理解,不知道有没有错误的地方

    a. 浏览器访问一个网址必须有对应的 IP 地址,没有的话就会自动发起 DNS 查询请求

    b. clash 对 DNS 请求( UDP )有区别与其他 UDP 协议的处理

    TCP 协议,从浏览器开始

    禁用 QUIC 、浏览器、电脑、clash 都没有任何 DNS 缓存记录

    1. 浏览器输入 google.com ,首先浏览器发送一个 DNS ( UDP )请求,查询 google.com 对应的 IP 地址

    2. clash 收到 DNS 请求,直接返回给浏览器一个假的 IP 地址(假设为 192.1.1.1 ),并记录这个假的 IP 地址对应的网址

    3. 浏览器发起 TCP 请求,访问 google.com ,目标地址为:192.1.1.1

    4. clash 收到来自于浏览器的数据包,查看数据包的目标 IP ,在自己的记录表里面查询 IP 有没有对应的域名

      • 有对应域名

        走域名匹配规则,如果没有匹配到任何规则,进行 DNS 查询,用拿到的 IP 进行 IP 匹配(这里不会拿上面的假 IP 进行匹配,而是要进行一次真正的 DNS 查询,这个过程可能会导致 DNS 泄露),DNS 查询会多路并发,主要分为:nameserver 指定的 DNS 服务器(国内的,快,但是有泄露和篡改风险),fallback 指定的 DNS 服务器(国外,慢,一定不会篡改),如果是国外的 IP 信任 fallback 结果,国内的信任 nameserver 。用查询到的 IP 做 IP 规则匹配

      • 没有对应的域名

        进行 IP 规则匹配

    5. 用匹配到的代理进行处理后续的流程....

    发现的问题

    1. Ping 命令不好使(因为 fake-ip 的原因,ping googele.com ,ping 到的是 192.1.1.1 )
    2. 基于 UDP 的游戏连不上(看网上说是因为有些基于域名连接的 UDP 必须用真实 IP ,这一点我不懂为什么??)

    我的需求

    1. 国内游戏能够正常连接,Direct
    2. 国外游戏能够走代理

    我想到的解决方案

    1. fake-ip ,UDP 转发,绕过中国大陆 IP [验证可行]

      但是我并不知道原理,功能上写的是来自中国大陆的流量不再经过内核,可是中国大陆的流量的判定不也是 Domain-DNS-GEOIP?

      不开启这种方案的时候,因为我的规则列表没有任何游戏相关的规则,走域名匹配不通,然后走 IP 匹配的道路不也是 Domain-DNS-GEOIP ,为什么就进不去游戏了?

    2. fake-ip-filter 添加游戏域名 [猜想可行]

      相当于给指定游戏不走 fake-ip 模式,回退到 redir-host

      缺点:一个游戏一个游戏添加,域名收集是个大问题

    3. fake-ip ,不进行 UDP 转发 [猜想可行]

      不知道 DNS 解析会不会受影响,根据我上面的理解 b, 应该不会受影响吧

      缺点:国外游戏想走代理的也走不了,而且走 UDP 的也不止游戏啊

    4. 关于国外游戏代理 [不知可行与否]

      fake-ip, UDP 转发,规则列表添加国外游戏域名,Proxy ,是不是就可以了?

    18 条回复    2024-07-16 15:47:03 +08:00
    murchef
        1
    murchef  
       2023-07-17 16:48:47 +08:00
    我用 meta 内核,现在还支持 redir-host ,因为我直接用 mosdns 管理 dns ,所以 fakeip 对我来说是副作用
    caneman
        2
    caneman  
    OP
       2023-07-17 16:51:42 +08:00
    @murchef #1 meta 内核是分出去的,如果想在原版内核 fake-ip 的基础上,解决我上面提出的问题,有没有什么比较好的方案?为什么绕过大陆 IP ,游戏就可以了?大陆 IP 咋判定的?不也是需要通过 DNS 解析获得的吗?这一点我没想通。
    murchef
        3
    murchef  
       2023-07-17 16:53:05 +08:00
    @murchef #1 游戏用加速器好一点,之前试过走代理,延迟也高,我也不开 UDP 转发,基本上国内游戏都能直连,走加速器的也不会被代理
    murchef
        4
    murchef  
       2023-07-17 17:08:25 +08:00
    @caneman #2 先从 dns 获得 ip ,然后基于 GeoIP 来判断
    游戏基本上直接访问 IP ,ip 在 geoip 内就是直连
    caneman
        5
    caneman  
    OP
       2023-07-17 17:10:43 +08:00
    @murchef #3 其实初衷就是嫌多搞一个游戏加速器麻烦。想着直接上一个高质量机场,所有网络的活都全包了。fake-ip 的优点是,规则列表里面的域名少一次 DNS ,打开网页是真的丝滑。如果能在 fake-ip 的模式下把已有问题解决了,感觉就很舒服,我的需求也不多主要是。
    murchef
        6
    murchef  
       2023-07-17 17:15:35 +08:00
    @caneman #5 我之前也有这个想法,但目前高质量机场从江浙沪到 HK 的延迟都远不如垃圾加速器,然后有些游戏平台的或者说游戏的域名或 IP 这种分流很难弄。而且就是规则列表里不全,不如要打游戏时直接全局或在电脑上单独装个 clash 走全局,平时关了
    mohumohu
        7
    mohumohu  
       2023-07-17 17:23:17 +08:00
    fake-ip 就不应该做全局 DNS ,按需分流给 fake-ip ,然后做静态路由是比较清晰合理的。可以参考这个文章的拓扑: https://blog.03k.org/post/paopaogateway.html
    yukinomiu
        8
    yukinomiu  
       2023-07-17 18:10:36 +08:00
    分流这个问题, 我觉得目前没有特别好的方案, 非常容易把网路搞的特别复杂, 还要维护一系列规则.

    我的选择是, 两个网关, 一个 direct, 一个 proxy. 自己根据需求切下网关就行. 分流判断的开销的省了.
    移动设备直接通过 wifi 区别, 有线 PC 麻烦一点, 要手动切换网关.
    zbatman
        9
    zbatman  
       2023-07-19 10:17:05 +08:00
    具体是啥游戏?
    我也是通过 clash+fake-ip 做游戏加速,PS5 的战地 1 、Xbox 的暗黑 4 联机都是没问题的
    caneman
        10
    caneman  
    OP
       2023-07-19 10:40:32 +08:00
    @zbatman #9

    主要是国内的一些游戏,我目前测试的是穿越火线有问题,网上还有王者荣耀、吃鸡遇到问题的

    问题表现形式都一样:登录、仓库、商店这些界面都没问题,游戏开始,加载不进去,我这边的具体情况是

    开启插件看不到 ping 值,进游戏卡 45%(不是登录的那个进游戏,是要开始对战的进游戏)然后提示网络连接异常,断掉。回到主界面(仓库、商店之类的依然可以点击没有任何问题,大厅也可以正常浏览进入)
    caneman
        11
    caneman  
    OP
       2023-07-19 10:45:44 +08:00
    @zbatman #9

    fake-ip , [关闭] [实验性:绕过中国大陆 IP], [关闭] UU 加速器,游戏加载失败
    fake-ip , [关闭] [实验性:绕过中国大陆 IP], [开启] UU 加速器,UU 加速器显示丢包率 100%,游戏加载成功
    fake-ip , [关闭] [实验性:绕过中国大陆 IP],fakeip-filter 加入 QQ 相关域名(*.qq.com/tencent.com ),游戏加载失败
    fake-ip , [开启] [实验性:绕过中国大陆 IP], [关闭] UU 加速器,游戏加载成功

    redirhost , [关闭] [实验性:绕过中国大陆 IP],游戏加载失败
    zbatman
        12
    zbatman  
       2023-07-19 10:51:16 +08:00
    @caneman 那可能是 fake-ip 的问题。

    我的方案跟你的不太一样,不是全局 fake-ip 。我是在主路由上用 mosdns 国内外分流,国内的域名走国内的 DNS ,获取真实 ip 直连(不经过 Clash);国外的域名走软路由 Clash 的 fakeDNS ,获取 fake-ip 。

    主路由配置静态路由(fake-ip 段 -> 软路由 ip)把 fake-ip 段的流量导向软路由

    可以参考下这个方案,全局 fake-ip 应该就是会有奇奇怪怪的问题
    caneman
        13
    caneman  
    OP
       2023-07-19 10:51:41 +08:00
    @zbatman #9 主机游戏我没测试,看了下 switch 的网络类型是 F ,节点是支持 UDP 的,但是好像不是 fullcone ,对了我关闭了所有 IPV6 相关的功能,但是跟这个应该没关系吧。
    caneman
        14
    caneman  
    OP
       2023-07-19 11:00:10 +08:00
    @zbatman #12

    这方面了解的不是很多,我去查查看。感觉你的方案更合理一些。
    frankilla
        15
    frankilla  
       2023-08-25 17:47:43 +08:00
    @zbatman 有作业抄吗-。-
    zbatman
        16
    zbatman  
       2023-10-16 14:46:39 +08:00
    @frankilla 点我头像看第一个主题帖吧,被判定为敏感信息移到 Chamber 了
    frankilla
        17
    frankilla  
       2023-10-22 19:23:03 +08:00
    @zbatman 有点久我都忘了我复习一下。谢谢这么久还回复我~
    xcjyearth6
        18
    xcjyearth6  
       2024-07-16 15:47:03 +08:00
    试试 Fake-IP ( TUN-混合)模式 [ UDP-TUN ,TCP-转发] ,网络栈选择混合 (仅 Meta 内核)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2365 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 01:38 PVG 09:38 LAX 17:38 JFK 20:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86