批量创建 BIND 区域

批量创建 BIND 区域

如何在 Ubuntu 12 VPS 上为 50 个域创建区域?我有 webmin(允许我使用 BIND 创建/管理区域)。我能够弄清楚创建了什么才能成功添加区域。

但是为 50 个域创建记录非常耗时,而且我会犯错误。

快速添加相同内容的最佳方法是什么?有人可以分享一个 shell 脚本示例或其他实现方法吗?或者一些第三方工具可以帮助我实现相同功能?

每个区域的格式如下:

File 1: /etc/bind/named.conf.local

zone "dummy.org" {
    type master;
    file "/var/lib/bind/dummy.org.hosts";
    };

----------------------
File 2: /var/lib/bind/<dummy.org.hosts>


$ttl 38400
dummy.org.       IN      SOA     abc.com. dns.abc.com (
                        1366568118
                        10800
                        3600
                        604800
                        38400 )
dummy.org.       IN      NS      ns1.abc.com.
dummy.org.       600     IN      A       <MyIP>    
www.dummy.org.   600     IN      A       <My IP>

答案1

首先,你应该调整你的区域书写方法,使其可以在区域之间重复使用。避免使用以点结尾的 RR除非你明确需要

  1. 您没有利用@代表当前原点的字符。默认情况下,区域文件的原点范围将与 named.conf 中的“zone”声明相同。(更简单地说,该@字符将始终默认为您在 named.conf 中的“zone”后指定的字符,如果尚未出现,则会在末尾附加一个句点)
  2. 您没有利用这样一个事实:以制表符或空格开头的行(必须省略记录的名称)被视为具有与前面的记录相同的名称范围。
  3. 如果您需要定义大量区域,而这些区域没有任何唯一区分记录,并且唯一改变的是区域名称,则它们都可以共享同一个区域文件。您只需确保对区域本身的任何引用都遵循提示 #1。(使用@
  4. 仅当引用当前区域之外的数据时才需要包含尾随的点。www将引用www.dummy.org.此区域的内部。ns1.abc.com.需要在末尾添加点,因为它位于dummy.org.区域之外并且应该保持不变。

将上述内容运用到您当前的示例中:

  • 记录SOA可以列出@而不是dummy.org.(提示 1)
  • 记录NS和第一条A记录可以完全省略记录名称(提示 #2),或替换dummy.org.@(提示 #1)
  • www.dummy.org.可以只是www(提示#4)

如上所述删除唯一标识数据。此时,此区域文件将成为共享相同数据的任何其他区域的起点。将区域文件复制到其他区域文件,次数应适当,然后关注每个区域特有的数据。

相关内容