如何在纯 IPv4 主机上禁用 DNS AAAA 查询?

如何在纯 IPv4 主机上禁用 DNS AAAA 查询?

我观察到至少三种不同 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

相关内容