%20%EC%A0%95%EC%9D%98.png)
Linux 시스템에서 BIND9를 사용하고 있습니다. 내 영역 db 파일에는 여러 항목에 동일한 IP가 여러 번 나타납니다 IN A
. 예를 들어 my www
, mail
, ns
등 IN 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
.
- "템플릿" 영역 파일을 만듭니다.
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