我观察到至少三种不同 Linux 的安装(Ubuntu 16.04、2017 年 6 月 28 日最新的 Antergos、Debian 9.0)具有以下行为:
- IPv6 已取消配置(未分配地址)
- DNS 服务器同时接收 A 和 AAAA 查询以获取要执行的任何结果。
我已经搞乱了nsswitch.conf
(选项ipnodes
),resolv.conf
(不存在的选项no-ipv6
),gai.conf
没有任何成功。
我从中获取的C程序这个网站不执行 AAAA 查询。
这个简单而愚蠢的 PHP 程序确实同时执行 AAAA 和 A DNS 查询:
<?php
$ch = curl_init($argv[1]);
curl_exec($ch);
由于可能有数十个客户端(也在 LXC 容器内)通过向 DNS 服务器抛出无用的查询而出现此问题,我想问是否有一种方法可以防止通过这些标准系统调用(getaddrinfo
等)进行 AAAA DNS 查询。
请注意,这些 AAAA 查询是通过 IPv4 执行的,因为客户端和 DNS 服务器没有配置 IPv6:
$ ip addr show dev venet0
2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/void
inet 127.0.0.2/32 scope host venet0
inet 192.168.8.40/32 brd 192.168.8.40 scope global venet0:0