2016-11-29 176 views
0
  1. 我已经配置与分配的IPv6地址以下接口& Ubuntu Linux操作系统的系统,如下所示:IPv6绑定失败错误:无法分配请求的地址

    的Eth0:链接ENCAP:以太网的HWaddr 00:50:56 :8D:57:64
    INET地址:192.168.254.10 BCAST:0.0.0.0掩码:255.255.255.0
    INET6地址:FE80 :: 250:56ff:fe8d:六十四分之五千七百六十四范围:链接
    UP BROADCAST RUNNING MULTICAST MTU:1500公制:1
    个RX数据包:74231424个错误:0下降:1超支:0帧:0
    TX数据包:400372550个错误:0下降:0超支:0载体:0 碰撞:0 txqueuelen:1000个
    RX字节:24514286488(24.5 GB)TX字节:115992171490(115.9 GB)

    Eth1的:链接ENCAP:以太网的HWaddr 00:50:56:8D:7C:4C
    INET地址:192.168.1.10 BCAST:0.0.0.0掩码:255.255 .255.0
    inet6 addr:fe80 :: 250:56ff:fe8d:7c4c/64范围:链接
    inet6 addr:fc00:1234:1 :: 10/120范围:全球
    UP BROADCAST RUNNING MULTICAST MTU:1500公制:1个
    RX数据包:434933479个错误:0下降:1超支:0帧:0
    TX数据包:39666183个错误:0下降:0超支:0载体:0 碰撞: 0 txqueuelen:1000个
    RX字节:126065364448(126.0 GB)TX字节:14437801257(14.4 GB)

    接口Eth2:链接ENCAP:以太网的HWaddr 00:50:56:8D:56:14
    INET地址:192.168.2.10 Bcast:0.0.0.0 Mask:255.255.255.0
    inet6 addr:fc00:1234:2 :: 10/120范围:全球
    INET6地址:FE80 :: 250:56ff:fe8d:六十四分之五千六百十四范围:链接
    UP BROADCAST RUNNING MULTICAST MTU:1500公制:1个
    RX数据包:480068741个错误:0下降:0超支:0帧:0
    TX包:34145702个错误:0删除:0超支:0载波:0 碰撞:0 txqueuelen:1000
    RX字节:146795537550(146.7 GB)TX字节:10045338657(10.0 GB)

  2. 我想使用IPV6套接字进行套接字编程。我写的代码片段如下:

    结构罪sockaddr_in6的
    Ipv6_fdr =插座(PF_INET6,SOCK_DGRAM,IPPROTO_UDP)

    bzero(&罪,的sizeof(SIN));
    sin.sin6_family = AF_INET6;
    sin.sin6_port = htons(2152);
    如果((setsockopt的(袜子,SOL_SOCKET,SO_REUSEADDR,&选择,的sizeof(INT)))< 0)
    的memcpy(&(sin.sin6_addr), “FC00:1234:1 :: 10”,的sizeof(罪。sin6_addr));
    如果((绑定(袜子,(结构sockaddr *)&罪的sizeof(罪)))< 0)

  3. 编译成功后,我越来越IPV6绑定失败的错误与以下错误数&名:
    EADDRNOTAVAIL 99/*无法分配请求的地址
    经过一定次数的IPV6绑定尝试后,会引发Segmentation Fault错误。

这将是巨大的,如果有人可以帮助我在我在做什么错在这里&为什么IPv6绑定失败的原因?

+1

仅供参考,地址“fc00:1234:1 :: 10”处于您不允许使用的保留范围内。 ULA寻址位于'fc00 ::/7'范围内,但该范围的fc00 ::/8半部分保留给一个尚未命名的全局授权分配。 'fd00 ::/8'范围的一半是为本地分配打开的,但是您必须使用一个随机数发生器来分配地址中的下一个40位。您似乎还有一个问题,即您没有使用'/ 64'作为网络大小。如果您使用不同的网络大小,IPv6中的许多内容可能会失败。除了几个例外,你应该使用'/ 64'网络。 –

+0

@RonMaupin我试着用你建议的/ 64网络大小来改变我的IPV6地址。另外,我尝试了各种前缀和不同网络配置范围的不同inet6地址。运行脚本仍然存在同样的问题。 IPV6绑定失败:无法分配请求的地址。请帮助我一样。 – Kushal

+0

我并没有试图解决你的问题。我试图引导您进行正确的IPv6寻址,我不相信这是您发布的问题,但如果您解决了当前的问题,它可能会带来一系列不同的问题。 –

回答

2

在你的代码的问题是该行:

memcpy(&(sin.sin6_addr), "fc00:1234:1::10",sizeof(sin.sin6_addr)); 

是必要的人类可读的字符串转换为二进制和存储地址的二进制形式sin6_addr像:

inet_pton (AF_INET6, "fc00:1234:1::10", sin.sin6_addr.s6_addr); 
相关问题