Konstanten- (oder Makro-) Definition für eine BIND9-Zonendatenbank

Konstanten- (oder Makro-) Definition für eine BIND9-Zonendatenbank

Ich verwende BIND9 auf einem Linux-System. In meinen Zonen-DB-Dateien habe ich mehrere Vorkommen für dieselbe IP in mehreren IN AEinträgen. Beispielsweise beziehen sich meine Einträge www, mail, ns, usw. IN Aauf dieselben IP-Adressen. Ich möchte und kann keine IN CNAMEEinträge dafür verwenden.

Ein Teil meiner DNS-Zonen-Datenbankdatei könnte beispielsweise folgendermaßen aussehen:

...
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_
...

Im obigen Beispiel muss ich an jeder Stelle, an der ich beispielsweise eingeben muss _ip1_, das a eingebengleiche IP-Adresse. Dies ist fehleranfällig.

Wie kann ich ein „Makro“ oder eine „Konstante“ definieren und später in einer BIND9-Datenbankdatei verwenden?

Antwort1

Sie können in einer Bind9-Zonendatei keine Variablen oder Konstanten definieren. Bind9 unterstützt nur $ORIGIN, $TTLund $GENERATEals $INCLUDE„programmgesteuerte“ Einträge, von denen keiner das tut, was Sie brauchen.

Es wäre ziemlich trivial, ein vorlagenähnliches System zu verwenden. Sie könnten ein Bash-Skript mit einem verwenden heredocoder das envsubstDienstprogramm:

  1. Erstellen Sie eine Zonendatei „Vorlage“:
ns1  IN A    $ip1
     IN AAAA $ip2
ns2  IN A    $ip3
     IN AAAA $ip4
...
wwwa IN A    $ip1
     IN AAAA $ip2
  1. Schreiben Sie ein kleines Shell-Skript, das die Variablen setzt und die Erweiterung durchführt, zum Beispiel:
#!/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

verwandte Informationen