2016-11-29 171 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); 
相關問題