hysteria
hysteria copied to clipboard
[功能请求] 增加单个 UDP 连接设置自动过期时间
功能描述
你好,我查阅了wiki,当前Hysteria似乎没有“单个 UDP 连接设置自动过期时间”这个设置项,因为如果使用UDP协议长时间单一端口进行通讯,容易引起运营商对UDP协议的Qos,我也是最近尝试使用Hysteria来进行上网的,之前我一直用的Kcptun(https://github.com/xtaci/kcptun)进行上网,Kcptun 有一个功能,--autoexpire,这个参数可以设置UDP连接自动断开的时间,我之前用Kcptun配合iptables 来实现动态端口的功能,效果如下图
昨晚在尝试Hysteria配合iptables也想实现同样的功能时,发现并没有,我设置Hysteria端口为50000,iptables设置Hysteria动态端口范围为50001-59999。发现Hysteria长时间只会使用一个端口进行通讯,并未断开连接更换端口。效果图如下。
这个功能的必要性
避免长时间使用同一个端口进行通讯而被运营商QoS而断流。
当前可用的替代方案
重启Hysteria服务,重新连接,然后就可以实现自动更换端口。
补充
No response
see this 好的,谢谢。我刚刚也看到这个issue了。
我也想发这个帖子, 设置udp链接自动过期时间, 然后会话平滑转移到新链接, 然后就可以避免某个链接被qos, 只能重启才恢复速度
我这边是遇到了好几次, 必须重启客户端才恢复速度的情况。。。
支持增加这个功能,尤其对UDP QOS有意义。我现在改代码可以定时reconnect,但上层应用同时也会断开,无法做到无缝迁移
@koolca quic支持会话平滑转移,你继续加油,你离牛逼就差一步了,
支持增加这个功能,尤其对UDP QOS有意义。我现在改代码可以定时reconnect,但上层应用同时也会断开,无法做到无缝迁移
非常感谢大神。
@mailsex 我不是大神 @f4nff 平滑转移只能期待作者了。 我的改动很简单,只需要在文件pkg/core/client.go第117行(return nil前)增加一行,给有需要的同学参考:(900表示900秒,可以改为自己需要的值)
116 c.quicConn = quicConn
117 c.pktConn.SetDeadline(time.Now().Add(time.Second * time.Duration(900)))
118 return nil
@mailsex 我不是大神 @f4nff 平滑转移只能期待作者了。 我的改动很简单,只需要在文件pkg/core/client.go第117行(return nil前)增加一行,给有需要的同学参考:(900表示900秒,可以改为自己需要的值)
116 c.quicConn = quicConn 117 c.pktConn.SetDeadline(time.Now().Add(time.Second * time.Duration(900))) 118 return nil
根据我使用kcptun的多年的经验,设置成60秒,对预防UDP Qos 效果比较好。
#https://github.com/HyNetwork/hysteria/issues/458#issuecomment-1290938901 平滑转移看来短时间没希望
HY有动态端口功能吗? 我的也是固定端口, 服务器是比如443的话, 客户端连接服务器就一直是443这个端口...
自己动手写了一个定时切换端口的程序,地址https://github.com/koolca/udpmux 初步测试通过,但每个client只支持一个连接,测试对性能也有影响。有动手能力的,可以配合iptables做到随机端口而不断连 期待作者更新1.3版本
感觉可以把v2ray xray里面那个动态端口的功能抄过来... https://guide.v2fly.org/advanced/dynamicport.html
https://github.com/HyNetwork/hysteria/tree/v1.3.0
作者牛逼。已经实现了这个功能。