有没有用于 DNS 重写的工具?

有没有用于 DNS 重写的工具?

我有内部区域old-internal-domain.local。我们有像server1.old-internal-domain.local和 这样的记录www.server1.old-internal-domain.local

我想使old-internal-domain.local区域中的所有记录都可访问,而new-internal-domain.company.tld无需server1.new-internal-domain.company.tld将记录从旧区域复制到新区域。

我想要类似的东西DNS 重写规则,因此当客户端向服务器查询 时server1.new-internal-domain.company.tld,服务器内部将其重写为server1.old-internal-domain.local并解析为 。作为响应,它响应为server1.new-internal-domain.company.tld A 10.20.30.40

关键时刻是在不创建记录副本的情况下完成此操作。

最好能用Windows DNS,不过其他软件也可以。请指教。

  • 这不是 ActiveDirectory 域,只是一个普通的 DNS 域。

答案1

我使用 BIND 解决了类似的用例。在我的场景中,内部部门名称发生了变化(并且仍然经常变化)。但我不想维护 old-dept-name 和 new-dept-name 区域文件。

因此,在我的主 DNS 服务器上,我的区域文件定义如下:

        zone "old-dept.companyname.net" {
            type master;
            file "GEN/companyname.net";
            allow-query { GEN-CLIENTS; };
            allow-transfer { 
                    key "GEN-KEY";
            };
            // also-notify avoids problems about NS complaints
            also-notify {
                    10.x.x.x key GEN-KEY;
                    10.x.x.x key GEN-KEY;
            };
    };

    zone "new-dept.companyname.net" {
            type master;
            file "GEN/companyname.net";
            allow-query { GEN-CLIENTS; };
            allow-transfer { 
                    key "GEN-KEY";
            };
            also-notify {
                    10.x.x.x key GEN-KEY;
                    10.x.x.x key GEN-KEY;
            };
    };

请注意,两个区域使用相同的文件名。注意:视图被大量使用,这就是 GEN* 的内容。

那么关键就在于从属服务器上不要多次使用“file”指令 - 否则复制期间会遇到锁定问题。对于此类区域,数据仅驻留在 RAM 中。甚至可能根本不需要使用它 - 已经有一段时间了,我不记得了:

    zone "old-dept.companyname.net" {
            type slave;
            masters port 53 { 10.x.x.x key GEN-KEY; };
            file "GEN/companyname.net";
            allow-query { any; };
            notify no; 
    };

    zone "new-dept.companyname.net" {
            type slave;
            masters port 53 { 10.x.x.x key GEN-KEY; };
            // Notice there's no 'file' listed here - this prevents locking problems during replication
            allow-query { any; };
            notify no; 
    };

这不是一个完美的解决方案,但我几乎有无限的相同区域的“镜像”。基于 RAM 的区域不是问题,因为它们会在从属服务器重新启动/重新加载或区域更新时从主服务器重新加载。

一些缺点:

  • 您可能会(取决于其配置方式)收到一些关于 NS 记录超出区域的粗略警告。
  • 我只使用静态记录——我还没有测试过使用动态更新。
  • 您必须对反向查找做出决定。您希望 PTR 记录指向 old-dept?new-dept?简称?全部?任何选项都很容易实现,但它一个考虑。

祝你好运!

相关内容