强制路由器保持空闲 UDP 端口打开
Posted
技术标签:
【中文标题】强制路由器保持空闲 UDP 端口打开【英文标题】:Force a router to keep a an IDLE UDP port open 【发布时间】:2012-09-21 11:22:02 【问题描述】:客户端打开到我的服务器的 UDP 连接,一段时间后(10 分钟到 24 小时),服务器需要将数据发送回客户端,但发现客户端的 UDP 端口已关闭!。
经过测试,我们发现客户端仍然打开了UDP端口,但是路由器(nat)可能因为不活动而关闭了端口!
有什么方法可以强制路由器保持 UDP 端口打开而不发送 keep-alive 数据包? (服务器或客户端)。
在 ICMP 中有类似的东西吗?
谢谢。
【问题讨论】:
【参考方案1】:我遇到了同样的问题,我找到了这个解决方案,不是针对路由器,而是针对服务器:
尝试配置keep alive。
实现方式取决于您使用的服务/程序/操作系统。
例如,在客户端中使用 OpenSSH,您必须在文件 ./ssh/config
或 /etc/ssh/ssh_config
中添加/配置这些行:
ServerAliveInterval 30
ServerAliveCountMax 60
在服务器中(我进行更改的地方)在文件/etc/ssh/sshd_config
中添加/配置此行:
ClientAliveInterval 30
ClientAliveCountMax 60
当然这取决于操作系统等,但想法是在服务中配置保持活动权限。
祝你好运!
【讨论】:
问题是服务总是在 UDP 端口而不是 TCP 上打开,所以当没有数据通过 ROUTER 上的开放端口发送时,路由器将假定 UDP 连接丢失并关闭港口。以上是关于强制路由器保持空闲 UDP 端口打开的主要内容,如果未能解决你的问题,请参考以下文章