BIND9 구역 데이터베이스에 대한 상수(또는 매크로) 정의

BIND9 구역 데이터베이스에 대한 상수(또는 매크로) 정의

Linux 시스템에서 BIND9를 사용하고 있습니다. 내 영역 db 파일에는 여러 항목에 동일한 IP가 여러 번 나타납니다 IN A. 예를 들어 my www, mail, nsIN A의 항목은 동일한 IP 주소를 나타냅니다. 나는 이것을 원하지 않으며 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

관련 정보