我在一家小学教育办公室工作,我正在使用 Ubuntu Server 20.04 设置本地服务器,供内部和外部使用。所有学校和办公室都属于国家网络“.sch.gr”。网络已为我们的办公室分配了域名 dipe****.sch.gr,我们的外部 IP 是 81.186.21.**。外部一切正常。服务器的内部 IP 是 10.145.252.10。我希望来自 LAN 的计算机在输入 dipe****.sch.gr 时解析为内部 IP 10.145.252.10。这可能吗?我为此安装了 Bind,但找不到正确的配置。有人可以帮忙吗?
答案1
是的,这是可能的。ISC BIND 有一个特殊功能,称为“视图”。例如,这里和这里。
基本上,您要执行以下操作。
您需要两个区域文件,一个用于“外部”客户端,另一个用于“内部”。我假设您已经为“外部”客户端进行了配置。假设配置如下:
zone "dipe****.sch.gr" IN {
type master;
file "pri/dipe****.sch.gr.zone";
};
你将其改成:
view "internal" {
match-clients { 10.0.0.0/8; };
zone "dipe****.sch.gr" IN {
type master;
file "pri/dipe****.sch.gr.zone_int";
};
};
view "external" {
match-clients { any; };
recursion no;
zone "dipe****.sch.gr" IN {
type master;
file "pri/dipe****.sch.gr.zone";
};
};
请注意,您当前的区域配置已迁移到外部视图。另请注意,视图的顺序很重要,内部视图必须出现在外部视图之前,因为外部视图定义在 match-clients 中有一个通配符 catch-all。
然后,来自 10.xxx 的 DNS 查询将从文件“dipe****.sch.gr.zone_int”得到答复,这是您配置私有地址的地方。所有来自与 10.xxx 不匹配的客户端的查询都将从“dipe****.sch.gr.zone”得到答复,该文件用于公共地址。
如果您的内部客户端也存在于其他网络(192.168.xx、172.16.xx)中,请将它们添加到match-clients
内部视图中。您也可以配置 acl 并将其放入 match-clients 中,而不是直接在视图中指定它们。