在 bind9 中返回特定域上的 A 记录但不返回 AAAA 记录

在 bind9 中返回特定域上的 A 记录但不返回 AAAA 记录

我已经使用 bind9 设置了一个缓存 DNS 服务器,使用了根提示方法(例如)。它按预期工作——但是,我们的 IPv6 流量通过我所在国家/地区以外的网关,这让 Netflix 认为我们是从其他国家/地区访问的,这会阻止我的孩子观看他们最喜欢的节目。所以我想,如果我可以阻止 bind9 返回 netflix.com 的任何 AAAA 记录,客户端将仅尝试与 Netflix 建立 IPv4 连接。

也就是说:如何配置 bind9 以便抑制对 netflix.com 的 AAAA 记录查找,同时返回 netflix.com 的有效 A 记录结果?

我意识到我可以创建一个仅包含 Netflix 域的区域文件,并让其包含我能找到的 netflix.com 的所有 A 记录,但不包含 AAAA 记录。但我想知道上述方法是否可行,这样我就不必保持区域文件中的 A 记录更新。

答案1

我知道这是一篇旧帖子,但(至少)在我的 bind 版本(Ubuntu 18.04 上的 9.11)中,我发现你可以在视图中将 filter-aaaa-on-v4 与 match-destinations 结合使用。

它仍然要求您在 2 个 IP 地址上进行绑定监听,但至少您不需要多个实例。

192.168.1.1 是普通的 DNS 服务器。192.168.1.2 是 ipv6 阻止服务器。

我的配置看起来有点像这样(部分):

options {
    listen-on port 53 { 192.168.1.1; };
    listen-on port 5353 { 192.168.1.2; };
};

view "ipv4only" {
  match-destinations { 192.168.1.2/24; };
  filter-aaaa-on-v4 yes;
};

view "normal" {
  match-clients { 192.168.1.1/24; };
  zone "netflix.com" {
    type forward;
    forward only;
    forwarders { 192.168.1.2 port 5353; };
  };
};

当域名与 netflix.com 匹配时,这会使 bind 在另一个 IP 上对自身进行正向查找。

这样就不需要两个实例了,但遗憾的是需要 2 个内部 IP 地址。如果我们还可以在“match-destinations”中指定端口号就好了。

答案2

正如评论所指出的,bind 可能无法做到这一点。不过,我设法通过一种变通方法解决了这个问题:

首先,我添加了第二个绑定服务,监听端口 5353,配置文件如下:

acl mynetworks {
    localhost;
    (And a list with my various LAN networks such as 192.168.0.0/24;)
};

acl everyone {
    any;
};

options {
    directory "/var/cache/bind-ipv4limited";
    filter-aaaa-on-v4 yes;
    #dnssec-validation auto;
    dnssec-enable yes;
    dnssec-validation yes;
    dnssec-lookaside auto;
    dnssec-lookaside . trust-anchor dlv.isc.org.;
    recursion yes;
    allow-query { mynetworks; };

    forwarders {
        8.8.8.8;
        8.8.4.4;
    };
    forward only;

    auth-nxdomain no;    # conform to RFC1035
    listen-on port 5353 { any; };
};

这里的关键是使用“filter-aaaa-on-v4 yes;”这样它会忽略 AAAA 请求。

然后在原始绑定服务中,我为使用上述 DNS 服务的 netflix.com 添加了一个区域:

zone "netflix.com" {
    type forward;
    forward only;
    forwarders {
        127.0.0.1 port 5353;
    };
};

这是一个丑陋的黑客攻击,但它似乎有效。

相关内容