我有一台 bind9 DNS 服务器,上面分配了两个 IP 地址。我们把它们称为 IP#1 和 IP#2。我需要一种方法来知道客户端正在使用哪个 IP 地址,并在它们的 nslookup 中响应不同的结果。我将尝试用下面的两个例子来解释。
用户“X”使用 NS 服务器 IP#1 对 domainname.com 进行 nslookup。服务器应返回一个特定地址。
用户“Y”使用 NS 服务器 IP#2 对 domainname.com 执行相同的 nslookup。服务器应该为他返回一个不同的地址。
关于从哪里开始寻找的任何指导都会有很大帮助。
答案1
请参阅绑定“视图”功能https://ftp.isc.org/isc/bind9/cur/9.18/doc/arm/html/reference.html#view-statement-grammar
您可以将特定区域内容与特定视图进行匹配,并且可以根据目标 IP 地址的使用(即您的服务器 IP 地址)定义视图。
view view_name [ class ] {
match-clients { address_match_list } ;
match-destinations { address_match_list } ;
match-recursive-only yes_or_no ;
[ view_option ; ... ]
[ zone_statement ; ... ]
} ;
view 语句是 BIND 9 的一个强大功能,它允许名称服务器根据请求者以不同的方式回答 DNS 查询。它对于实施拆分 DNS 设置(无需运行多个服务器)特别有用。
每个视图语句定义一个 DNS 命名空间视图,该视图可供客户端子集查看。如果客户端的源 IP 地址与视图的 match-clients 子句的 address_match_list 匹配,并且其目标 IP 地址与视图的 match-destinations 子句的 address_match_list 匹配,则该客户端与视图匹配。
虽然此功能存在且正在使用,但请注意,除了在各个视图之间同步数据的所有问题之外,它还会使故障排除变得更加复杂。所以要格外小心。