我已经通过/etc/network/interfaces
(分发是 Debian Squeeze)为我的专用主机分配了一个 /64 IPv6 子网
iface eth0 inet6 static
address 2a01:4f8:XXXX:YYYY::2
netmask 64
gateway fe80::1
现在,我想让 cURL (PHP 5.3.22-1~dotdeb.0) 使用该子网的一个特定 IP 地址,pe2a01: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_exec
我得到bind failed with errno 99: Cannot assign requested address
. 为什么会这样?将每个 IPv6 地址定义为 /128 in 时/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 使用::3
IP。但是我的意图是使用我子网中的很多 IP(真的很多 IP),所以这是不切实际的。有谁知道为什么 cURL 不能分配 /64 子网的子 IP?