我为 UDP 打孔开发了一个实现,它适用于我遇到的大多数用例。但是,我们的一个办公室有一个网络配置,我们有两个 ISP 为我们提供互联网以实现冗余。这是为两条线路之间的负载平衡而设置的,因此,每当您与某物建立出站连接时,您都会在哪条线路上建立该连接。显然,每条线路都有自己的外部 IP 地址,而我的软件不知道该地址是什么,或者它正在使用哪个地址。
我相信这会阻止 UDP 打孔工作。我通过一个 IP 地址连接到我在 AWS 上运行的已知连接服务器,但是当我的软件被告知要连接到世界其他地方的对等点时,它可能会尝试连接到与它相同 IP 的对等点对连接服务器做了,或者它可能使用另一个,在这种情况下它不会连接。
是否有解决方案,或者双外部 IP 地址是否意味着 UDP 打孔永远不会可靠?