造了个试验品,利用频繁更换端口的方式来躲避运营商的 UDP 限速

2022-11-27 18:13:18 +08:00
 cnbatch
为了解决 UDP 限速,目前比较常用的做法是将 UDP 流量伪装成 TCP 流量。

我就想,能否不伪装,继续用 UDP 规避限速?
或许可以,我记得有人提到过,UDP 被限速后只要重新连接,速度就会重新恢复。
这么看来,只要四元组的其中一项发生变化就能打破限速。

于是我造了个试验品,作用类似于 wangyu 的 udp2raw (以及还有 Phantun ),只不过这个试验品全程保持 UDP ,每隔一段时间就自动更换端口。而且是客户端主动更换,无须通知服务器。即使服务器那边使用固定端口,客户端也会建立新的连接连过去。
同时,服务器端也支持同时监听多个端口(可以指定一个范围),让客户端新建连接时可以随机选择目标端口。

试验品在这:
https://github.com/cnbatch/udphop

目前支持三大平台,并提供这三大平台的 x64 可执行文件:
FreeBSD
Windows
Linux

听说重灾区在中国移动,但因为我没开通中国移动的家宽,所以没法在中移动家宽网络内试验。
试过用广东移动的手机网来试验,iperf3 从广东电信家宽发送到广东移动手机(包括手机开启热点给笔记本电脑做测试),发现 UDP 直接被堵死了,收都收不到; UDP 从广东移动手机(及热点下的笔记本电脑)发往电信家宽倒是可以;至于 TCP ,双向畅通无阻。但这样就等于无法开展测试,因为 UDP 无法双向通信。
8504 次点击
所在节点    宽带症候群
44 条回复
cnbatch
2022-11-29 13:34:24 +08:00
@aru 不提供 socks5 功能,也不打算支持。
实际上算下来相当于 NAT 打洞 + 自动转发 + 自动换端口。
毕竟我个人用的场景仅仅是为了辅助 NAT 打洞时的 VPN 回家。
jousca
2022-11-29 15:22:40 +08:00
@bclerdx 传入方向封。如果一定流量后阻止 UDP 包传入。
emma3
2022-11-29 15:41:07 +08:00
@cnbatch 现在最大的特征都是 tcp ,有没有考虑在试试 quic 上加点什么?
hsly109
2022-11-29 15:47:20 +08:00
請問加密方式是否可以考慮增加 stream cipher 這類加密方式? stream cipher ,也就是流加密 目前用的比較多的有 rc4 ,chacha20-ietf-poly1305 ,xchacha20-ietf-poly1305
希望開發者可以考慮一下,並非所有 client 設備或者伺服器默認都啟用或者有 aes-ni 這個指令集
2000wcw
2022-11-29 16:23:44 +08:00
Hysteria 最新版支持端口跳跃,很好用。
cnbatch
2022-11-30 00:25:11 +08:00
@emma3 我个人觉得吧,国内的 QUIC 网站多起来再做会更好些,先看看各大网站能否倒逼运营商善待 UDP 流量
cnbatch
2022-11-30 00:25:58 +08:00
@hsly109 好的,已经加了
lly8666
2022-11-30 13:05:28 +08:00
@cnbatch 感觉很牛逼,玩玩儿。
huangjinjiang20
2022-11-30 17:41:28 +08:00
客户端中的 destination_address 是填服务端的地址?
cnbatch
2022-11-30 18:18:49 +08:00
lly8666
2022-11-30 23:06:48 +08:00
./udphop: error while loading shared libraries: libbotan-2.so.19: cannot open shared object file: No such file or directory

debian10 已经安装了 libbotan2-dev
lly8666
2022-11-30 23:40:40 +08:00
libbotan-2.so.19 解决了,debian 安装的是 libbotan-2.so.9

liburing.so.2 这个在 debian 里找不到
cnbatch
2022-12-01 02:11:56 +08:00
@lly8666 保险起见,我还是再另外弄了个专门用于 botan 2.9 的版本,以防万一
hsly109
2022-12-01 20:31:48 +08:00
debian 11 還是不太行 那個 libbotan 版本 2.so.9 是 debian LTS buster 的 package ,2.so.19 是 testing 的……我是 stable bullseye ,剛好卡在中間
cnbatch
2022-12-01 23:43:51 +08:00
@hsly109 针对最新 Debian 11 弄了个 2.17 的版本,应该够用的了。

原本我是打算全部以 static linking 的方式发布二进制的,奈何 Linux 版本的 Botan 只有动态库方式能用,静态库几乎反倒没法用。其他平台却可以正常用静态库。

我刚刚去看了下作者本人对开发环境的描述 ( https://botan.randombit.net/handbook/support.html ),Linux 是主力,然后是 Windows ,剩下的都靠 Github 自动化工具。既然 Linux 是作者的主力平台,使用起来却最“拉跨”,实在费解。
lly8666
2022-12-03 09:10:34 +08:00
debian10 还是跑不起来,一些依赖版本不对
Neur2n
2022-12-09 17:08:30 +08:00
看 udp2raw 的文档,服务端似乎是要搭建在 VPS 上,udphop 也需要这样吗
cnbatch
2022-12-09 22:27:00 +08:00
@lly8666 前几天更新了静态链接版本,可以再试试
cnbatch
2022-12-09 22:29:17 +08:00
@Neur2n udphop 并非一定要 VPS ,我自己就没把 udphop 放在 VPS 上,而是放在路由器(服务端模式)和自己的电脑(客户端模式)
Neur2n
2022-12-09 22:31:20 +08:00
@cnbatch 请问有文档吗,谢谢

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

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

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

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

© 2021 V2EX