HTTPSConnection无法绑定特定的ipv6源地址python3

时间:2017-05-21 18:13:59

标签: python ipv6

我正在尝试使用我的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

1 个答案:

答案 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