我有两台安装了 Bind 的服务器。一个是用于解析我拥有的域名的公共 DNS。另一个是我想为我的客户使用的另一个 DNS。
在第一个上,我将转发设置为第二个,并且为域创建了一个转发区域,指向第二个绑定服务器。
服务器1:
acl internals {
172.16.0.0/24;
127.0.0.1;
};
acl domain {
192.168.1.0/24;
};
acl externals {
any;
};
dnssec-enable yes;
dnssec-validation yes;
#dnssec-lookaside auto;
version "Not your job";
recursion yes;
allow-transfer { internals; domain;};
// restrict query access
allow-query { internals; externals; domain; };
// restrict recursion
allow-recursion { internals; domain; };
auth-nxdomain no; # conform to RFC1035
forwarders {
8.8.8.8;
8.8.4.4;
};
view "externals" {
match-clients { "externals"; };
recursion no;
zone "my_customer_domain.com" {
type forward;
forwarders {
172.16.0.150;
};
};
};
Server2 具有相同类型的配置,但是如果请求来自“内部”,则仅解析 my_*customer_*domain.com,内部答案为 172.16.0.34;如果请求来自“外部”,则解析公共 IP;如果来自“域”,则解析 192.168.1.4。
如果我从我的电脑(与“内部”相同的子网)到“公共”服务器进行 DIG,我就会得到正确的答案(例如:172.16.0.34)
如果我从域 PC(与“域”相同的子网)到“公共”服务器进行 DIG,我将获得“内部” IP
如果我从外部电脑进行 DIG(dig NS my_*customer_*domain.com @8.8.8.8 )我得到了“内部”ip
即使我尝试从 server2 访问 google.com,所有其他类型的查询都不会出现任何问题。
注意:server1 在“域”和“内部”中具有“根区域”。Server2 仅对“内部”具有“根区域”
服务器1:ubuntu 20.04.05,Bind 9.16
服务器2:ubuntu 20.04.05,Bind 9.16
因此,来自 Internet 的用户可以通过域 my_customer_domain.com 访问我的 server1(server1 是公共的,server2 只是内部的)。然后,server1 应该将查询转发到 server2,但 server2 使用记录中定义的区域的内部 ip 进行解析。我认为这是因为查询来自 server1,而 server1 是 server2 的“内部”,所以主要问题是....如何实现正确的行为?