我正在尝试使用我的ipv4和ipv6地址更新freedns.afraid.org内容,并将请求与相应接口的ip绑定; ipv4没问题,ipv6没有。 遵循ipv6错误代码片段(ipv4是simmetric):
...
conn = http.client.HTTPSConnection("freedns.afraid.org", timeout=10,source_address=(ipv6,0))
req = ("/dynamic/update.php?blablabla&address=%s" % ipv6)
conn.request("GET", req, headers=headers)
...
conn.request返回:
Traceback (most recent call last):
File "./test2.py", line 39, in <module>
conn.request("GET", req, headers=headers)
File "/usr/lib64/python3.4/http/client.py", line 1137, in request
self._send_request(method, url, body, headers)
File "/usr/lib64/python3.4/http/client.py", line 1182, in _send_request
self.endheaders(body)
File "/usr/lib64/python3.4/http/client.py", line 1133, in endheaders
self._send_output(message_body)
File "/usr/lib64/python3.4/http/client.py", line 963, in _send_output
self.send(msg)
File "/usr/lib64/python3.4/http/client.py", line 898, in send
self.connect()
File "/usr/lib64/python3.4/http/client.py", line 1279, in connect
super().connect()
File "/usr/lib64/python3.4/http/client.py", line 871, in connect
self.timeout, self.source_address)
File "/usr/lib64/python3.4/socket.py", line 516, in create_connection
raise err
File "/usr/lib64/python3.4/socket.py", line 506, in create_connection
sock.bind(source_address)
socket.gaierror: [Errno -9] Address family for hostname not supported
ipv6没关系:
ping6 -n afraid.org
PING afraid.org(2604:8b80:2:8::2) 56 data bytes
64 bytes from 2604:8b80:2:8::2: icmp_seq=1 ttl=45 time=173 ms
答案 0 :(得分:1)
您只能将本地地址设置为与遥控器相同的地址系列。为了能够使用IPv6本地地址,需要远程地址作为IPv6 。
不幸的是,情况并非如此; freedns.afraid.org
没有IPv6 DNS条目:
$ host -t AAAA freedns.afraid.org
freedns.afraid.org has no AAAA record
请注意,freedns.afraid.org
与afraid.org
的地址不同;后者确实有一个IPv6地址,这就是你可以ping它的原因:
$ host -t AAAA afraid.org
afraid.org has IPv6 address 2604:8b80:2:8::2