使用 Ubuntu Server 20.04 正确绑定内部和外部网络的 DNS 配置

使用 Ubuntu Server 20.04 正确绑定内部和外部网络的 DNS 配置

我在一家小学教育办公室工作,我正在使用 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 中,而不是直接在视图中指定它们。

相关内容