首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IPv4到IPv6 UDP Holepunching

IPv4到IPv6 UDP Holepunching
EN

Stack Overflow用户
提问于 2018-11-14 01:43:41
回答 1查看 494关注 0票数 1

所以我正在写一个P2P多人游戏。服务器建立到每个播放器的连接( UDP ),然后让玩家直接连接(使用UDP Holepunching技术)。

然后我在父母家做了测试,结果就停止工作了。

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

问题

有可能在拥有不同ip协议的用户之间进行UDP访问吗?

Aka

  • 用户A:路由器后面有IPv4地址的(不能向IPv6发送UDP消息)。
  • 用户B:有IPv6地址。可以向IPv4和IPv6地址发送UDP消息。

还是这种设置注定要失败?

EN

回答 1

Stack Overflow用户

发布于 2020-08-15 22:39:09

不,在IPv4和IPv6之间建立连接是不可能的。如果这不是一个基于实时的多人游戏,有一些可能的(不必要的复杂)解决办法。

  1. 用户A可以配置像Teredo这样的东西,这样可以有效地为他的设备分配一个IPv6地址。
  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没有互联网接入,但只是略微增强的网络访问。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53291993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档