3

/64 IPv6サブネットを専用ホストに割り当てました/etc/network/interfaces(ディストリビューションはDebian Squeezeです)

iface eth0 inet6 static
  address 2a01:4f8:XXXX:YYYY::2
  netmask 64
  gateway fe80::1

ここで、cURL (PHP 5.3.22-1~dotdeb.0) を取得して、そのサブネットの特定の IP アドレス pe を使用する2a01:4f8:XXXX:YYYY::3ようにしたいので、コードは次のようになります。

curl_setopt($this->_curl, CURLOPT_INTERFACE, '2a01:4f8:XXXX:YYYY::3');
curl_setopt($this->_curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V6);

実行するcurl_execbind failed with errno 99: Cannot assign requested address. なぜこれが起こるのですか?で各 IPv6 アドレスを /128 として定義すると/etc/network/interfaces、次のようになります。

iface eth0 inet6 static
  address 2a01:4f8:XXXX:YYYY::2
  netmask 128
  up ip -6 addr add 2a01:4f8:XXXX:YYYY::3/128 dev eth0 preferred_lft 0
  gateway fe80::1

その後、すべて問題なく、cURL は::3IP を使用します。しかし、私の意図は、サブネットから多くの IP (実際には多くの IP) を使用することであるため、これは実際的ではありません。cURL が /64 サブネットのサブ IP を割り当てられない理由を知っている人はいますか?

4

2 に答える 2

5

cURL は 2a01:4f8:XXXX:YYYY::3 にバインドできません。これは、2a01:4f8:XXXX:YYYY::3 がどのインターフェイスにも割り当てられた IP ローカル アドレスではないためです。ホストは、割り当てられたアドレスでのみパケットを受信できるため、それらのアドレスにのみバインドできます。

あなたが説明したように、を使用してインターフェイスのアドレスとして 2a01:4f8:XXXX:YYYY::3 を追加すると、機能しますip addr add。それは予想されることです。

アドレスを 1 つずつ追加せずに、大量のアドレス グループをローカル システムに割り当てる方法がわかりません。トリックがありますが、一部のオペレーティング システム (おそらく Linux のみ) でのみ機能し、IPv4 とループバック インターフェイスでのみ機能します。

于 2013-03-07T11:55:45.553 に答える
1

ネットマスクの意味を誤解しています。両方の例で、インターフェイスに 1 つのアドレスを構成します。指定するネットマスクは、ネットワーク全体のものです。

複数のアドレスを使用する場合は、それぞれを個別に構成する必要があります。

于 2013-03-07T11:55:28.383 に答える