尝试使用IPv6地址创建TCP套接字连接时,使用绑定的本地地址fe80::850***,出现“网络不可达(操作系统错误101)”错误。可能是因为fe80***是由操作系统生成的本地IPv6地址。是否有一种方法可以为系统提供正确的配置,以通过IPv6进行调用?
由于需要花费相当长的时间来找出问题的主要原因,因此将尝试共享解决方案/调查步骤:
为了确保未正确配置ipv6,请运行“ping6 ipv6.google.com”。它应该返回一些错误消息,例如“connect: Network is unreachable”或者卡住。
AWS ec2实例默认未分配ipv6全局路由地址(仅分配ipv4)。像“fe80:*”这样的ipv6地址是本地路由,并且不能用于全局请求。要检查IP地址列表,请检查eth0配置/sbin/ifconfig。顺便说一句,AWS提供接口为ec2实例生成全局可路由的ipv6地址(只需检查vpc/ec2控制台页面 - https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html)
检查ec2实例的安全组,并确保在路由表中允许ipv6流量。具体来说,入站和出站规则应包括“::/0”用于ipv6(或根据需要选择其中一个)。
再次尝试“ping6 ipv6.google.com”
ip addr
如果只显示IPv4地址,则IPv6已禁用。请参考此tutorial启用它。
如果显示链路本地地址(以fe80开头),则IPv6已启用,但未启用IPv6地址的动态分配。
如果显示除fe80之外的IPv6地址,则IPv6已启用并已分配IPv6地址。
如果显示一个以fe80开头的本地链接地址
,在检查了我的主机面板后,我发现他们没有为我的VPS服务器分配IPv6。 - Salem