%20%E5%AE%9A%E7%BE%A9.png)
Linux システムで BIND9 を使用しています。ゾーン db ファイルでは、複数のエントリに同じ IP が複数回出現していますIN A
。たとえば、、www
などmail
のns
エントリは同じ 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
ユーティリティを使用できます。
- 「テンプレート」ゾーン ファイルを作成します。
ns1 IN A $ip1
IN AAAA $ip2
ns2 IN A $ip3
IN AAAA $ip4
...
wwwa IN A $ip1
IN AAAA $ip2
- 変数を設定して展開を行う小さなシェル スクリプトを作成します。次に例を示します。
#!/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