2016-11-29 13 views
0
  1. 次のように私は、IPv6アドレスを割り当てられた次のインタフェース&でUbuntu Linuxのシステムを構成していますIPV6バインド障害エラー:アドレスに要求割り当てることができません

    のEth0:リンクENCAP:イーサネットのHWaddr 0時50分56秒:8D:57:64
    のinet addrの:192.168.254.10 BCAST:0.0.0.0マスク:255.255.255.0
    INET6 addrの:FE80 :: 250:56ff:fe8d:64分の5764範囲:リンク
    UP BROADCASTのRUNNINGマルチキャスト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ギガバイト)

    Eth1の:リンクENCAP:イーサネットのHWaddr 00:50:56:8D:7C:4C
    INETのADDR: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対象範囲:グローバル
    MULTICAST MTU RUNNING UP BROADCAST 1500メトリック:1
    RXパケット:434933479のエラー:0ドロップ:1つのオーバラン:0フレーム:0
    TXパケット:39666183のエラー:0ドロップ:0オーバラン:0キャリア:0 衝突: 0 txqueuelen:1000
    RXバイト:126065364448(126.0ギガバイト)TXバイト:14437801257(14.4ギガバイト)

    ETH2:リンクENCAP:イーサネットのHWaddr 00:50:56:8D:56:14
    INETのADDR :192.168.2.10 Bcast:0.0.0.0 Mask:255.255.255.0
    inet6 addr:fc00:1234:2 :: 10/120対象範囲:グローバル
    INET6 addrに:FE80 :: 250:56ff:fe8d:64分の5614範囲:リンク
    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ギガバイト)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));
    コンパイルが成功した後、私は次のエラー番号&名前のIPV6バインド障害エラー((バインド(靴下、(sockaddr構造体の*)&罪、はsizeof(罪)))< 0)

  3. を得ている場合:
    EADDRNOTAVAIL 99/*要求されたアドレスを割り当てることができません。
    IPV6バインディングを一定回数試行した後、セグメンテーションフォールトエラーが発生します。

誰かがIPV6失敗している結合なぜ私はここに&をやっているのミスで私を助けることができればそれは素晴らしいことですか?

+1

、アドレス 'fc00:1234:1 :: 10'はあなたが使用できない予約済みの範囲にあります。 ULAのアドレス指定は 'fc00 ::/7'の範囲にありますが、範囲の' fc00 ::/8'の半分はまだ指定されていないグローバル権限を割り当てるために予約されています。範囲の 'fd00 ::/8'の半分はローカル割り当てのためにオープンされていますが、アドレスの次の40ビットを割り当てるために乱数ジェネレータを使用する必要があります。また、ネットワークサイズとして '/ 64'を使用していないという問題があるようです。異なるネットワークサイズを使用すると、IPv6の多くの機能が失敗する可能性があります。いくつかの例外を除いて、 '/ 64'ネットワークを使うべきです。 –

+0

@RonMaupinあなたの提案するように/ 64ネットワークサイズで私のIPV6アドレスを変更しようとしました。また、さまざまな接頭辞と異なるネットワーク設定範囲の異なるinet6アドレスを試しました。スクリプトを実行しても同じ問題が続く。 IPV6 Bind failure:要求されたアドレスを割り当てることができません。親切にも私を同じように助けてください。 – Kushal

+0

私はあなたの質問の問題を解決しようとしていませんでした。私は適切なIPv6アドレッシングにあなたを誘導しようとしていましたが、これはあなたの投稿された問題だとは思えませんが、あなたの現在の問題を解決すれば別の問題を引き起こす可能性があります。 –

答えて

2

あなたのコードに問題が行です:

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

バイナリに人間が読める形式の文字列を変換するなどのsin6_addrするアドレスのバイナリ形式を記憶しておく必要がある:FYI

inet_pton (AF_INET6, "fc00:1234:1::10", sin.sin6_addr.s6_addr); 
関連する問題