从IPv4到IPv6 UDP穿孔

时间:2018-11-14 01:43:42

标签: udp ipv6 p2p ipv4

所以我正在写P2P多人游戏。服务器建立与每个播放器的连接(UDP),然后使播放器直接相互连接(使用UDP穿孔技术)。

然后我在父母的家中进行了测试-停止了工作。

原因是因为我的父母路由器不兼容IPv6。

问题

是否可以在具有不同ip协议的用户之间进行UDP穿孔?

又是

  • 用户A: 具有IPv4地址的路由器后面(无法将UDP消息发送到IPv6)。
  • 用户B: 具有IPv6地址。可以将UDP消息发送到IPv4和IPv6地址。

还是这种注定要失败?

1 个答案:

答案 0 :(得分:0)

否,不可能直接在IPv4和IPv6之间建立连接。 如果它不是基于实时的多人游戏,那么可能会有一些(非常复杂的)解决方法。

  1. 用户A可以配置Teredo之类的东西,以有效地为其设备分配IPv6地址。[1]
  2. 两个用户都可以连接到VPN,其中负责建立连接的服务器可以通过两个协议(双栈)访问,或者两个用户都使用IPv4进行连接。
  3. 两个用户都可以尝试在IPv4上使用NAT遍历(如果用户A需要这样做)。正如您已经体验过and described in your third comment的UDP打孔(对于用户B,IPv4 CGNAT一样)。
  4. 用户A可以询问其ISP to finish deploying IPv6
  5. 如果用户A能够打开端口,则用户B可以尝试通过IPv4连接到用户A。然后某些CGNAT实现会将连接保持30秒钟,因此您必须确保传输某种保持活动的数据报,例如在25秒的间隔内。
  6. 用户B可以使用portmapper服务。使用您喜欢的搜索引擎:portmapper ds-lite。该服务提供一个IPv4地址,到特定端口的所有连接都“连接”到用户B的IPv6地址(和特定端口)。

[1]根据个人经验,我可以告诉您某些不同的Teredo服务器不可靠。我必须尝试三种不同的Teredo服务器配置,并且实际上需要在两种配置之间进行切换,因为它们均无法访问IPv6互联网的所有设备-某些设备可以通过teredo.trex.fi进行访问,某些设备可以通过teredo进行访问.remlab.net-有时它只是转过来。

我认为最简单的选择是4。

如果5不能正常工作,我会说用户A没有Internet访问权限,而只是稍微增强了Web访问权限。

相关问题