Ole*_*olf 5 domain-name-system bind
我已经使用 root-hints 方法(像这样)设置了一个带有 bind9 的缓存 DNS 服务器。它按预期工作 - 但是,我们的 IPv6 流量通过我所在国家/地区之外的网关,这使 Netflix 认为我们是从另一个国家/地区访问的,这会阻止我的孩子观看他们最喜欢的节目。因此,我在想,如果我可以阻止 bind9 返回 netflix.com 的任何 AAAA 记录,客户端将只尝试 IPv4 连接到 Netflix。
也就是说:如何配置bind9,以便在为 netflix.com 返回有效的 A 记录结果时抑制对 netflix.com 的 AAAA 记录查找?
我意识到我可以创建一个仅包含 Netflix 域的区域文件,并让它包含我能找到的 netflix.com 的所有 A 记录,而不包含 AAAA 记录。但我想知道上面的情况是否可行,这样我就不必更新区域文件中的 A 记录。
小智 5
我知道这是一篇旧文章,但是(至少)在我的 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; };
};
};
Run Code Online (Sandbox Code Playgroud)
当域与 netflix.com 匹配时,这使得 Bind 在另一个 IP 上对其自身进行正向查找。
这消除了对两个实例的需要,但遗憾的是需要 2 个内部 IP 地址。如果我们还可以在“match-destinations”中指定端口号,那就太好了。
正如注释所示,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; };
};
Run Code Online (Sandbox Code Playgroud)
这里的关键是使用“filter-aaaa-on-v4 yes;” 所以它会忽略 AAAA 请求。
然后在原来的绑定服务中,我为 netflix.com 添加了一个使用上述 DNS 服务的区域:
zone "netflix.com" {
type forward;
forward only;
forwarders {
127.0.0.1 port 5353;
};
};
Run Code Online (Sandbox Code Playgroud)
这是一个丑陋的黑客,但它似乎有效。
归档时间: |
|
查看次数: |
8096 次 |
最近记录: |