linux – 可能的TIME_WAIT问题的解决方法,防止重新建立损坏的SSH
虽然不打算交叉发帖,但在将此问题发送到SecurityFocus的OpenSSH列表后,我注意到该列表的流量相当低(之前的帖子大约是5个月前).话虽这么说,我决定在这里重新发布,因为这个问题可能会得到更多的关注(并且如果得到回答,将更有可能被其他人使用):
问题:我有一个从内部机器到我的DMZ中的主机的反向SSH隧道,它设置为在系统启动时启动并在隧道出现故障时重新启动.但是,当隧道中断时(例如,由于网络中断),由于DMZ主机上的端口正在使用,它无法重新建立.从我读取的OpenSSH邮件列表存档和其他地方来看,这似乎是因为端口处于TIME_WAIT状态.这很好:我可以在设置隧道的脚本中放入一个sleep语句.但是,这导致了两个问题: 长时间睡眠可能“足够好”,但如果可能的话,我更愿意以更有效的方式处理TIME_WAIT条件. 我感谢任何指导或建议! 解决方法
我认为你可以使用各种SSH设置,如TCPKeepAlive,ServerAliveInterval,ServerAliveCountMax等来设置如果连接断开,它将杀死所有内容.我有类似的设置,我对双方的SSHD和SSH进行了很多修改,以配合我想要的.然后我有一个cron作业,如果需要的话,每5分钟运行一次,重启隧道.
#!/bin/bash if ps aux | grep "ssh -fnNTx" | grep -v "grep" then echo "Already Running" else echo "Starting now" ssh -fnNTx -L 1514:127.0.0.1:514 user1@X.X.X.X fi 到目前为止,这个解决方案对我来说很好.您还可以设置某种类型的Nagios检查或其他脚本以查看隧道是否已打开,如果没有,请执行该pid的杀死以便重新启动. 编辑: 以前的文章谈了很多关于TIME_WAIT的问题. How to forcibly close a socket in TIME_WAIT? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux 网络下载命令 wget 使用技巧
- linux – shell脚本(KSH)将文件设置为param并在param和stri
- 在Linux中编写快速n-dirty ad-hoc GUI应用程序的最简单方法
- linux – 配置vsftpd匿名上传.创建文件但冻结为0字节
- linux – 在这种情况下,在fstab中配置UUID会有问题
- regex – 如何使用curl和sed从短json查询中提取单个元素
- Xen映像文件与分区/ LVM卷性能
- linux – 在CentOS 7中更新Yum时的依赖性冲突
- regex – 使用sed扩展环境变量
- linux – 如何在Docker构建期间运行命令,这需要一个tty?