-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
连接有时会在10分钟内掉线 #6
Comments
很奇怪,我在登入之前有问题的centos7的桌面后,现在这台不掉线了。另一台centos7桌面没有退出,现在远程SSH进入启用hilldust也不掉线。 只有一台远程xrdp进去(没有登陆:0的桌面)的centos8还是会掉。 感觉还是和keepalive之类的东西有关。 |
会不会是新版的网关要求 host_id:str, host_name:str 两个参数填入? 另外建议留意一下这个断线指的是什么引发的,是 tun 被关闭了还是通信连接被 FIN/RST 了? |
我还正在试。我不是很懂网络这方面的,怎么看是tun被关闭了还是被reset了? |
应该不是参数的问题,这个客户端已经很多年不更新了,现在其他两台都没问题,只有centos8的还不行。我明天登陆桌面试试。 |
我在centos8的机器上挂了一个chrome后不再掉线了……挂chrome的时候send, recv一直都有数据传输,不挂的话只有我在终端执行ping这类命令的时候才有。 会不会是没有数据的时候send, recv等待时间太久了? |
我在程序里加了一段代码,每隔1分钟用curl请求一次公司的内网网页就不再有掉线问题了。但这个方法不怎么通用,不知道有什么好的办法代替么?ping试过,不能保持连接 |
目前是每两分钟向VPN的DNS服务器发送一次DNS请求,效果不错。谢谢~ |
如果是这样的话,可能是网络连接设置了一个比较短的超时。 我大概知道问题在哪里了,可能是你的 SSL 端太久没有访问就 timeout 退出了。hilldust.py 的 def inbound_handle():
while True:
raw = c.recv()
platform_linux.write(raw)
def outbound_handle():
while True:
raw = platform_linux.read()
c.send(raw) 这个地方是转发 tun 流量到 SSL 隧道,可能给 c.send 不够勤快。 我建议用 ICMP Echo,目标地址就随便填一个,TTL 填个位数别让包走出去太远。 |
如果你发现确实能解决问题,建议你开一个 PR 或者重新打开这个 issue,合入一下你的解决方案后再关闭。 |
我目前是每两分钟通过subprocess调用nslookup请求一次dns,还是会有掉线的情况,不过一般都能维持一天以上。我可以修改一下提交PR。 |
好的,非常感谢✨ |
我花了点时间对照OpenConnect的代码结构。 不知道Hillstone的原版client是采用什么方式来啊保活的... |
另外,我注意到代码的message-type里包含如下定义: |
从官方windows 客户端里抓了一些信息,其中有keeplive包的内容。
|
另外,官方客户端的keeplive间隔大致是30秒 |
之前看到的keeplive packet因为长度为44,所以发生变化的部分其实不是有效载荷。找了一个解包网站看了一下格式,发现其实是从0.0.0.0 发往0.0.0.0的ping request,附带16个0的payload。之前lainme说Ping没有效果,不知道是不是因为Ping包里的格式不太符合预期... |
感谢,我最近比较忙,没时间再看这个问题,等我有时间了再试试 |
你好,我最近对hilldust做了一些修改并尝试用来连接公司内网,但发现在我的三台电脑中,只有一个可以持续的保持在线 (CentOS7),另外两台(一台centos7一台centos8)都会在十分钟内掉线。
我最初以为是自己的修改有问题,但使用原本的版本(仅修改了路由设置,和官方客户端的设置一致)也有同样的情况。
我尝试了打印发送和接收的raw data,没得到什么有用的信息,就是突然的服务器就不再返回任何数据了,也没有任何的报错。另外还检查了ip addr, ip route, nmcli conn show tun0的设置,有问题的电脑和没问题的电脑都是一致的,两台centos7上所有其他软件的版本也都一致,不清楚为什么结果这么不同。我还尝试了设置socket的tcp_keepalive,也没有什么用。
咨询了公司的IT,他说公司的VPN也没有什么特殊的连接设置,同帐号多设备登陆是可以的,空闲超过30分钟服务器才会中断。
不知道你有什么建议么?
The text was updated successfully, but these errors were encountered: