OpenClash icon indicating copy to clipboard operation
OpenClash copied to clipboard

[Feature] 希望可以将“仅允许常用端口流量”支持单独控制 UDP 和 TCP 流量

Open TGSAN opened this issue 10 months ago • 4 comments

Verify Steps

  • [X] Tracker 我已经在 Issue Tracker 中找过我要提出的问题
  • [X] Need 当前 OpenClash 并不包含该功能特性或者还不完善
  • [X] Framework 这是 OpenClash 应包含的特性, 并非 Clash 特性
  • [X] Meaningful 我提交的不是无意义的 催促更新或修复 请求

Describe the Feature

功能描述

OpenClash 中的“仅允许常用端口流量”功能希望可以区分 UDP 和 TCP。

这个功能如何影响到我

由于P2P等流量一般使用 UDP 进行传输,而 TCP 流量一般不需要区分端口进行流量过滤

目前 OpenClash 的行为

目前 OpenClash 中的“仅允许常用端口流量”功能会同时控制 TCP 和 UDP 的流量

Describe the Solution

可以在界面上将“仅允许常用端口流量”分为两个设置项,或者在手动设置里将字符串改为区分 TCP 和 UDP 的格式。
在设置 Linux 本机路由规则的 Lua 脚本里,分开设置 TCP 和 UDP 的流量规则。

Describe Alternatives

把 TCP 相同的端口也过滤掉有什么影响?

  1. 部分游戏/服务为了规避运营商/设备的一些限制,将 STUN 服务端口设置为了比如 443 之类的端口,但由于 HTTP/3 需要经过代理,所以无法将这部分流量独立剔除。
  2. 新版 Google 框架在部分设备上(比如 Android 14 的 Pixel)会往除了 522x 以外的非常规端口发一些 TCP 请求,如果这些请求发送失败,那么即使 generate_204 成功返回,那么手机也会自动切换到蜂窝网络。而这些端口目前没找到 Google 公开的端口列表和明显的规律,所以只能关闭“仅允许常用端口流量”来确保手机正常使用。(部分国行版 GMS 框架也有类似的行为,但是不会导致手机断开 WiFi,而是 Google 服务直接不再请求正常服务接口)

为什么不直接不勾选 UDP 流量转发?

有一些需要走代理才能用的服务支持 HTTP/3(比如 ChatGPT),如果不勾选”UDP 流量转发“转发会直接走 HTTP/3 直连,即使勾选“禁用 QUIC“也不能让 HTTP/3 禁止连接(可能因为不勾选”UDP 流量转发“的话流量根本没进 OpenClash?)

为什么不用 Clash 本身的规则进行过滤?

因为目前 OpenClash 设置流量通过内核后会使 NAT 类型降级,从而影响到 P2P 软件和部分游戏联机(相关 Issue 关联:#2288)
实测即使将 Clash 模式设置为 Direct 仍然会导致 NAT 类型从 FullCone 降级到 PortRestrictedCone。
关于这个问题,Meta 内核本身也存在这个问题,而 Clash Premium 内核如果手动配置并不会导致 NAT 降级,但是无论使用哪个内核,在 OpenClash 中都会导致 NAT 降级。

有没有试过其它流量控制/黑白名单功能来过滤?

试过了,但是发现只有“仅允许常用端口流量”功能可以防止 NAT 降级

Additional Context

No response

TGSAN avatar Aug 27 '23 01:08 TGSAN