背景
1. 部分时候,反向代理因为路由重启,或者其他断网原因,等网络恢复后,无法对隧道重连。
2. 增加了心跳机制
在DEBUG调试过程中,发现禁用网卡后,在反向代理重连时候,服务器没有释放掉占用的端口,导致反向代理规则一直无法正常启动。
经过摸索,增加相关命令后可恢复正常。
// 在重新连接前执行清理命令
var cleanupCommand = _sshClient.RunCommand("sudo fuser -k {remotePort}/tcp");
// 或者使用更通用的方法
var killCommand = _sshClient.RunCommand($"sudo ss -tulnp | grep {remotePort} | awk '{{print $7}}' | cut -d'=' -f2 | cut -d',' -f1 | xargs -r kill");
测试效果如下