Python:无法在AWS上使用socket.getaddrinfo()检索ipv6

时间:2017-05-09 07:00:28

标签: python sockets amazon-web-services networking

在我的笔记本电脑上,我可以运行

import socket
print(socket.getaddrinfo('yahoo.com', 80))

非常好,它将返回ipv4地址和ipv6。但是,一旦我在我的Amazon Web服务服务器上执行此操作,它似乎无法返回ipv6地址,但它确实适用于少数几个站点。这是DNS问题吗?我该如何解决?

1 个答案:

答案 0 :(得分:1)

除非最近发生了某些变化,否则除了美国东俄亥俄州数据中心外,AWS不支持IPv6。 (并且要正确配置也不容易!)

但是如果你真的想要IPv6 DNS,你可以使用socket.getaddrinfo。

print(socket.getaddrinfo("yahoo.com", 80, socket.AF_INET6))

不保证后续与该IPv6地址的套接字连接是否有效 -  因为您可能不在IPv6网络上。您可以将其与socket.has_ipv6属性组合。但即使这样,在大多数具有自动配置的Terredo地址的Windows机器上也会返回True。