强制路由器保持空闲 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 端口打开的主要内容,如果未能解决你的问题,请参考以下文章

小米路由器udp设置

如何在路由器上测试远端UDP端口通不通

没有端口/转发的 C# P2P

WAMP 服务器不加载本地主机

win7如何设允许udp组播

如何在没有 NAT 的情况下连接路由器或防火墙后面的客户端 tcp 端口