0

背景

对于我的 Windows 项目,我创建了 RFC7217 ip 全球单播地址。使用Winsock2和微软的IpHelper函数,这些地址被输入到 PC 的本地表中,然后绑定最终成为监听套接字。我可以从另一台 PC 连接到这些监听端点。

问题

然而,ISP 不能很好地完成 IPv6,如果有的话。使用带有 /48 前缀的免费隧道路由器服务进入Hurricane Electric (阅读:大量可能的 IPv6 地址)。但是我必须以编程方式将我的地址端点放入他们的隧道中。

问题

这让我想到了我的问题。我可以看到我的项目可能的解决方案是编写RFC4213中描述的封装和解封装函数,称为6in4。但是,我的问题是,我还没有想出如何在我的SOCKADDR_IN结构中获取完整的 6in4 数据报,以便将其转换为侦听或连接套接字。我没有看到诸如协议和有效负载长度之类的标头字段,必须为具有 Ipv6 内容的 Ipv4 数据报设置这些字段才能工作。也许还有另一组 iphelpers 甚至更原始的函数可以让我设置标题字段?如果是这样,我还没有找到它们。

编辑1

适用于 Windows 的 Hurricane Electric 隧道的典型配置语句:

netsh interface teredo set state disabled
netsh interface ipv6 add v6v4tunnel interface=IP6Tunnel localaddress=mmm.mmm.mmm.mmm remoteaddress=216.66.22.2
netsh interface ipv6 add address interface=IP6Tunnel address=2001:jjj:kkk:lll::2
netsh interface ipv6 add route prefix=::/0 interface=IP6Tunnel nexthop=2001:jjj:kkk:lll::1
4

0 回答 0