在我工作的内联网上,我们有一些内部应用程序,这些应用程序不对外开放,例如:app1.example.com、app2.example.com,而 example.com 是面向公众的网站。app1.example.com 和 app2.example.com 都解析为内联网的 IP。
因此,据我搜索,我发现通过在我们的内部网中安装本地 DNS 服务器可以实现这一点。
因此,我想使用 Virtualbox VM 来复制该功能,因此使用了 3 个 Ubuntu 风格的 VM,一个 Xubuntu,一个 Lubuntu 和一个 Ubuntu Budgie 版,都是以前的“实验”留下的。它们都有 2 个网络适配器:
- 一个设置为 NAT,另一个设置为
- 另一个为“内部网络”,具有来自
192.0.0.0/24
网络的静态 IP。
在 Xubuntu 上,我安装了 bind9 和一个网络服务器,并尝试通过在 Xubuntu 和 Budgie Edition Vms 的浏览器中输入 app1.intranet.example.com 和 app2.intranet.example.com 来模拟,以服务于 2 个不同的站点。这些站点在网络之外不可用(这 3 个 Vms 中的)甚至无法解析这两个站点的 DNS 条目。
现在,运行绑定的虚拟机(Xubuntu One)具有以下设置:
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
forwarders {
208.67.222.222;
208.67.220.220;
};
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
acl "intranet" { 192.0.0.1/24; };
view "intranetView" {
match-clients { "intranet"; };
recursion yes;
zone "intranet.example.com" {
type master;
file "/etc/bind/db.intranet"
}
}
view "outside" {
match-clients { any; }
recursion no;
}
我还有/etc/bind/db.intranet
以下条目:
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA intranet.example.com. root.example.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS 192.0.0.2
@ IN A 192.0.0.2
app1 IN A 192.0.0.2
app2 IN A 192.0.0.2
但不知为何,当我尝试重新启动绑定时,它失败了。你能帮我找出问题所在吗?
答案1
NS 记录必须是主机名
你也错过了;
一些}
命令:
named-checkconf /etc/named.conf
named-checkzone example.com example.com
输出:
example.com:12: NS record '192.0.0.2' appears to be an address
zone example.com/IN: NS '192.0.0.2.example.com' has no address records (A or AAAA)
zone example.com/IN: not loaded due to errors.
答案2
进一步听取 Jacob 的答复,您还错过了 ip4 的收听。
还要检查系统日志以查找任何有用的线索
并尝试named-checkconf和named-checkzone。在启动绑定服务之前非常有用的工具。