BIND9 ゾーン データベースの定数 (またはマクロ) 定義

BIND9 ゾーン データベースの定数 (またはマクロ) 定義

Linux システムで BIND9 を使用しています。ゾーン db ファイルでは、複数のエントリに同じ IP が複数回出現していますIN A。たとえば、、wwwなどmailnsエントリは同じ IP アドレスを参照しています。このようなエントリはIN A不要であり、使用できません。IN CNAME

たとえば、DNS ゾーン db ファイルの一部は次のようになります。

...
ns1  IN A    _ip1_
     IN AAAA _ip2_
ns2  IN A    _ip3_
     IN AAAA _ip4_
...
wwwa IN A    _ip1_
     IN AAAA _ip2_
...
wwwb IN A    _ip3_
     IN AAAA _ip4_
...
mail IN A    _ip1_
     IN AAAA _ip2_
     IN A    _ip3_
     IN AAAA _ip4_
...
ntp  IN A    _ip1_
     IN AAAA _ip2_
     IN A    _ip3_
     IN AAAA _ip4_
...

上記の例では、_ip1_例えば入力しなければならない各場所に、aを入力する必要があります。同じIPアドレス. エラーが発生しやすくなります。

「マクロ」または「定数」を定義して、後で BIND9 db ファイルで使用するにはどうすればよいでしょうか?

答え1

Bind9 ゾーン ファイルでは変数や定数を定義することはできません。Bind9 は$ORIGIN、、およびを「プログラム」エントリとしてのみサポートします$TTLが、いずれも必要な機能を果たしません。$GENERATE$INCLUDE

テンプレートのようなシステムを使用するのはかなり簡単です。 を使用した bash スクリプトを使用するheredocか、envsubstユーティリティを使用できます。

  1. 「テンプレート」ゾーン ファイルを作成します。
ns1  IN A    $ip1
     IN AAAA $ip2
ns2  IN A    $ip3
     IN AAAA $ip4
...
wwwa IN A    $ip1
     IN AAAA $ip2
  1. 変数を設定して展開を行う小さなシェル スクリプトを作成します。次に例を示します。
#!/bin/bash

ip1='198.51.100.42'
ip2='2001:db8:1234:100::42'
ip3='198.51.100.17'
ip4='2001:db8:1234:100::17'

envsubst < template_file > real_zone_file.zone

関連情報