Skip to content
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

不同NAT端口存活时间不同,为了保活则需要频繁打洞 #5

Open
HopscotchSen opened this issue Mar 18, 2019 · 0 comments

Comments

@HopscotchSen
Copy link

场景1:
例如客户端A处于内网,地址192.168.2.10:8001,第一次发送消息至公网服务S时,客户端A外网端口为10.0.0.1: 52000,有的NAT端口存活时间就30s,30s不持续向发送UDP数据包保活,则端口会被回收,则公网服务S再向62000发送数据时,端口已经被回收,导致客户端A无法正常收到数据,下次客户端A再次发送至S可能端口变为52001 ,服务S只能再向52001才能正常通信。
此处暂时是通过客户端频繁向公网服务S,定时30s发送数据包,保持端口存活,但同时服务S也会收到该数据包,但不进行回复。
请问有别的方式保活吗?能让NAT识别进行保活,但服务器端可不用收到保活消息。

P2P场景2:
服务S公网IP端口(18.181.0.31:1235),客户端A的内网地址(10.0.0.1:1234),外网地址(155.99.25.11:62000),客户端B内网地址(10.1.1.3:12345),外网地址(138.76.29.7:31000)。
当客户端A与服务S建立链接时,映射为18.181.0.31:1235 - 155.99.25.11:62000,客户端B与服务S建立链接映射为18.181.0.31:1235 - 138.76.29.7:31000。
服务S和客户端A和客户端B都可以正常通信,但客户端A和客户端B不能正常通信,当服务S告知客户端A,需要进行打通,打洞的目标地址为客户端B的地址(138.76.29.7:31000),此时客户端B这个外网分配的端口仅仅是NAT分配给客户端B与服务S进行通信的端口,而并不是客户端B应用程序所运行的真实端口,导致双方频繁进行打洞和发送消息,双方也无法进行交互。
请问如何解决?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant