1.5. BIND DNS 서버의 영역 구성
DNS 영역은 도메인 공간의 특정 하위 트리에 대한 리소스 레코드가 있는 데이터베이스입니다. 예를 들어 example.com
도메인을 담당하는 경우 BIND에서 해당 도메인에 대한 영역을 설정할 수 있습니다. 결과적으로 클라이언트는 이 영역에 구성된 IP 주소로 www.example.com
를 확인할 수 있습니다.
1.5.1. 영역 파일의 SOA 레코드
SOA(권한 시작) 레코드는 DNS 영역에 필수 레코드입니다. 예를 들어 여러 DNS 서버가 영역에 대해 권한이 있지만 DNS 확인자에게도 이 레코드가 중요합니다.
BIND의 SOA 레코드에는 다음 구문이 있습니다.
name class type mname rname serial refresh retry expire minimum
읽기 쉽도록 관리자는 일반적으로 영역 파일의 레코드를 세미콜론(;
)으로 시작하는 주석을 사용하여 여러 행으로 분할합니다. SOA 레코드를 분할하면 괄호는 레코드를 함께 유지합니다.
@ IN SOA ns1.example.com. hostmaster.example.com. ( 2022070601 ; serial number 1d ; refresh period 3h ; retry period 3d ; expire time 3h ) ; minimum TTL
정규화된 도메인 이름(FQDN) 끝에 있는 후행 점을 확인합니다. FQDN은 점으로 구분된 여러 도메인 레이블로 구성됩니다. DNS 루트의 레이블은 비어 있으므로 FQDN은 점으로 끝납니다. 따라서 BIND는 후행 점이 없는 이름에 영역 이름을 추가합니다. 후행 점이 없는 호스트 이름(예: ns1.example.com
)은 ns1.example.com으로 확장됩니다. .
이는 기본 이름 서버의 올바른 주소가 아닙니다.
다음은 SOA 레코드의 필드입니다.
-
Name
: 영역의 이름, 소위origin
. 이 필드를@
로 설정하면 BIND에서/etc/named.conf
에 정의된 영역 이름으로 확장합니다. -
클래스
: SOA 레코드에서는 이 필드를 항상 인터넷(IN
)으로 설정해야 합니다. -
type
: SOA 레코드에서 이 필드를 항상SOA
로 설정해야 합니다. -
mname
(마스터 이름): 이 영역의 기본 이름 서버의 호스트 이름입니다. -
R
NAME
(responsible name): 이 영역을 담당하는 사람의 이메일 주소입니다. 형식은 다릅니다. at 기호(@
)를 점(. )으로 교체해야 합니다.
serial
: 이 영역 파일의 버전 번호입니다. 보조 이름 서버는 기본 서버의 일련 번호가 더 높은 경우에만 영역의 복사본을 업데이트합니다.형식은 모든 숫자 값일 수 있습니다. 일반적으로 사용되는 형식은 <
year><month><two-digit-number>입니다
. 이 형식을 사용하면 이론적으로 영역 파일을 하루에 백 번까지 변경할 수 있습니다.-
새로 고침
: 영역이 업데이트된 경우 기본 서버를 확인하기 전에 보조 서버가 대기하는 시간입니다. -
재시도
: 보조 서버에서 실패한 시도 후 기본 서버를 쿼리하도록 다시 시도한 후의 시간입니다. -
만료
됨: 이전 시도가 모두 실패한 경우 보조 서버가 주 서버 쿼리를 중지한 후의 시간입니다. -
minimum
: RFC 2308은 이 필드의 의미를 부정 캐싱 시간으로 변경했습니다. 호환 확인자는 이를 사용하여NXDOMAIN
이름 오류를 캐시하는 기간을 결정합니다.
새로 고침
의 숫자 값,재시도
,만료
및 최소
필드는 시간(초)을 정의합니다. 그러나 가독성을 높이기 위해 m
for minute, h
for hours, d
for days과 같은 시간 접미사를 사용합니다. 예를 들어, 3h
는 3 시간 동안 서 있습니다.
1.5.2. BIND 기본 서버에서 전달 영역 설정
영역의 이름을 IP 주소 및 기타 정보로 전달합니다. 예를 들어 도메인 example.com
을 담당하는 경우 BIND에 전달 영역을 설정하여 www.example.com
과 같은 이름을 확인할 수 있습니다.
사전 요구 사항
- BIND가 이미 구성되어 있습니다(예: 캐싱 이름 서버).
-
named
또는named-chroot
서비스가 실행 중입니다.
절차
/etc/named.conf
파일에 영역 정의를 추가합니다.zone "example.com" { type master; file "example.com.zone"; allow-query { any; }; allow-transfer { none; }; };
이러한 설정은 다음을 정의합니다.
-
이 서버는
example.com
영역의 기본 서버(마스터 유형
)로 구성됩니다. -
/var/named/example.com.zone
파일은 영역 파일입니다. 이 예에서와 같이 상대 경로를 설정하면 이 경로는options
문의 디렉터리에 설정한디렉터리를
기준으로 합니다. - 모든 호스트는 이 영역을 쿼리할 수 있습니다. 또는 IP 범위 또는 BIND ACL(액세스 제어 목록) nickname을 지정하여 액세스를 제한합니다.
- 호스트를 통해 영역을 전송할 수 없습니다. 보조 서버를 설정하고 보조 서버의 IP 주소에 대해서만 영역 전송을 허용합니다.
-
이 서버는
/etc/named.conf
파일의 구문을 확인합니다.# named-checkconf
명령이 출력을 표시하지 않으면 구문이 올바른지.
/var/named/example.com.zone
파일을 생성합니다(예: 다음 콘텐츠를 포함).$TTL 8h @ IN SOA ns1.example.com. hostmaster.example.com. ( 2022070601 ; serial number 1d ; refresh period 3h ; retry period 3d ; expire time 3h ) ; minimum TTL IN NS ns1.example.com. IN MX 10 mail.example.com. www IN A 192.0.2.30 www IN AAAA 2001:db8:1::30 ns1 IN A 192.0.2.1 ns1 IN AAAA 2001:db8:1::1 mail IN A 192.0.2.20 mail IN AAAA 2001:db8:1::20
이 영역 파일:
-
리소스 레코드의 기본 TTL(Time-to-live) 값을 8시간으로 설정합니다.
h
for hour과 같은 시간 접미사가 없으면 BIND에서 값을 초로 해석합니다. - 영역에 대한 세부 정보와 필수 SOA 리소스 레코드가 포함되어 있습니다.
-
ns1.example.com
을 이 영역에 대한 권한 있는 DNS 서버로 설정합니다. 작동하려면 영역에 하나 이상의 이름 서버(NS
) 레코드가 필요합니다. 그러나 RFC 1912를 준수하려면 두 개 이상의 이름 서버가 필요합니다. -
mail.example.com
을example.com
도메인의 메일 교환기(MX
)로 설정합니다. 호스트 이름 앞에 있는 숫자 값은 레코드의 우선 순위입니다. 더 낮은 값이 있는 항목은 우선 순위가 높습니다. -
www.example.com
,mail.example.com
,ns1.example.com
의 IPv4 및 IPv6 주소를 설정합니다.
-
리소스 레코드의 기본 TTL(Time-to-live) 값을 8시간으로 설정합니다.
명명
된 그룹만 읽을 수 있도록 영역 파일에서 보안 권한을 설정합니다.# chown root:named /var/named/example.com.zone # chmod 640 /var/named/example.com.zone
/var/named/example.com.zone
파일의 구문을 확인합니다.# named-checkzone example.com /var/named/example.com.zone zone example.com/IN: loaded serial 2022070601 OK
BIND를 다시 로드합니다.
# systemctl reload named
변경 루트 환경에서 BIND를 실행하는 경우
systemctl reload named-chroot
명령을 사용하여 서비스를 다시 로드합니다.
검증
example.com
영역의 다른 레코드를 쿼리하고 출력이 영역 파일에 구성한 레코드와 일치하는지 확인합니다.# dig +short @localhost AAAA www.example.com 2001:db8:1::30 # dig +short @localhost NS example.com ns1.example.com. # dig +short @localhost A ns1.example.com 192.0.2.1
이 예에서는 BIND가 동일한 호스트에서 실행되고
localhost
인터페이스의 쿼리에 응답하는 것으로 가정합니다.
1.5.3. BIND 기본 서버에서 역방향 영역 설정
역방향 영역은 IP 주소를 이름에 매핑합니다. 예를 들어 IP 범위 192.0.2.0/24
를 담당하는 경우 BIND에서 역방향 영역을 설정하여 이 범위의 IP 주소를 호스트 이름으로 확인할 수 있습니다.
전체 분류 네트워크의 역방향 영역을 생성하는 경우 해당 영역의 이름을 적절하게 지정합니다. 예를 들어 C 클래스의 경우 192.0.2.0/24
클래스의 경우 영역의 이름은 2.0.192.in-addr.arpa
입니다. 다른 네트워크 크기에 대한 역방향 영역을 생성하려면(예: 192.0.2.0/28
) 영역 이름은 28-2.0.192.in-addr.arpa
입니다.
사전 요구 사항
- BIND가 이미 구성되어 있습니다(예: 캐싱 이름 서버).
-
named
또는named-chroot
서비스가 실행 중입니다.
절차
/etc/named.conf
파일에 영역 정의를 추가합니다.zone "2.0.192.in-addr.arpa" { type master; file "2.0.192.in-addr.arpa.zone"; allow-query { any; }; allow-transfer { none; }; };
이러한 설정은 다음을 정의합니다.
-
이 서버는
2.0.192.in-addr.arpa
역방향 영역의 기본 서버(마스터
)로 구성됩니다. -
/var/named/2.0.192.in-addr.arpa.zone
파일은 영역 파일입니다. 이 예에서와 같이 상대 경로를 설정하면 이 경로는options
문의 디렉터리에 설정한디렉터리를
기준으로 합니다. - 모든 호스트는 이 영역을 쿼리할 수 있습니다. 또는 IP 범위 또는 BIND ACL(액세스 제어 목록) nickname을 지정하여 액세스를 제한합니다.
- 호스트를 통해 영역을 전송할 수 없습니다. 보조 서버를 설정하고 보조 서버의 IP 주소에 대해서만 영역 전송을 허용합니다.
-
이 서버는
/etc/named.conf
파일의 구문을 확인합니다.# named-checkconf
명령이 출력을 표시하지 않으면 구문이 올바른지.
예를 들어 다음 콘텐츠를 사용하여
/var/named/2.0.192.in-addr.arpa.zone
파일을 생성합니다.$TTL 8h @ IN SOA ns1.example.com. hostmaster.example.com. ( 2022070601 ; serial number 1d ; refresh period 3h ; retry period 3d ; expire time 3h ) ; minimum TTL IN NS ns1.example.com. 1 IN PTR ns1.example.com. 30 IN PTR www.example.com.
이 영역 파일:
-
리소스 레코드의 기본 TTL(Time-to-live) 값을 8시간으로 설정합니다.
h
for hour과 같은 시간 접미사가 없으면 BIND에서 값을 초로 해석합니다. - 영역에 대한 세부 정보와 필수 SOA 리소스 레코드가 포함되어 있습니다.
-
ns1.example.com
을 이 역방향 영역에 대한 권한 있는 DNS 서버로 설정합니다. 작동하려면 영역에 하나 이상의 이름 서버(NS
) 레코드가 필요합니다. 그러나 RFC 1912를 준수하려면 두 개 이상의 이름 서버가 필요합니다. -
192.0.
2.1 및
주소에 대한 포인터(19
2.0.2.30PTR
) 레코드를 설정합니다.
-
리소스 레코드의 기본 TTL(Time-to-live) 값을 8시간으로 설정합니다.
명명
된 그룹만 읽을 수 있도록 영역 파일에서 보안 권한을 설정합니다.# chown root:named /var/named/2.0.192.in-addr.arpa.zone # chmod 640 /var/named/2.0.192.in-addr.arpa.zone
/var/named/2.0.192.in-addr.arpa.zone
파일의 구문을 확인합니다.# named-checkzone 2.0.192.in-addr.arpa /var/named/2.0.192.in-addr.arpa.zone zone 2.0.192.in-addr.arpa/IN: loaded serial 2022070601 OK
BIND를 다시 로드합니다.
# systemctl reload named
변경 루트 환경에서 BIND를 실행하는 경우
systemctl reload named-chroot
명령을 사용하여 서비스를 다시 로드합니다.
검증
역방향 영역에서 다른 레코드를 쿼리하고 출력이 영역 파일에 구성한 레코드와 일치하는지 확인합니다.
# dig +short @localhost -x 192.0.2.1 ns1.example.com. # dig +short @localhost -x 192.0.2.30 www.example.com.
이 예에서는 BIND가 동일한 호스트에서 실행되고
localhost
인터페이스의 쿼리에 응답하는 것으로 가정합니다.
1.5.4. BIND 영역 파일 업데이트
예를 들어 서버의 IP 주소가 변경되면 영역 파일을 업데이트해야 합니다. 여러 DNS 서버가 영역을 담당하는 경우 기본 서버에서만 이 절차를 수행하십시오. 영역 사본을 저장하는 다른 DNS 서버는 영역 전송을 통해 업데이트를 받습니다.
사전 요구 사항
- 영역이 구성되어 있습니다.
-
named
또는named-chroot
서비스가 실행 중입니다.
절차
선택 사항:
/etc/named.conf
파일에서 영역 파일의 경로를 식별합니다.options { ... directory "/var/named"; } zone "example.com" { ... file "example.com.zone"; };
영역 정의의 file 문에서 영역
파일
의 경로를 찾습니다. 상대 경로는options
문의 디렉터리에 설정된디렉터리를
기준으로 합니다.영역 파일을 편집합니다.
- 필요한 변경을 수행합니다.
권한 시작(SOA) 레코드의 일련 번호를 늘립니다.
중요일련 번호가 이전 값과 같거나 낮은 경우 보조 서버는 영역의 사본을 업데이트하지 않습니다.
영역 파일의 구문을 확인합니다.
# named-checkzone example.com /var/named/example.com.zone zone example.com/IN: loaded serial 2022062802 OK
BIND를 다시 로드합니다.
# systemctl reload named
변경 루트 환경에서 BIND를 실행하는 경우
systemctl reload named-chroot
명령을 사용하여 서비스를 다시 로드합니다.
검증
추가, 수정 또는 제거한 레코드를 쿼리합니다. 예를 들면 다음과 같습니다.
# dig +short @localhost A ns2.example.com 192.0.2.2
이 예에서는 BIND가 동일한 호스트에서 실행되고
localhost
인터페이스의 쿼리에 응답하는 것으로 가정합니다.
1.5.5. DNSSEC 영역 서명은 자동화된 키 생성 및 영역 유지 관리 기능을 사용한
도메인 이름 시스템 보안 확장 (DNSSEC)을 사용하여 영역에 서명하여 인증 및 데이터 무결성을 보장할 수 있습니다. 이러한 영역에는 추가 리소스 레코드가 포함되어 있습니다. 클라이언트는 이를 사용하여 영역 정보의 진위 여부를 확인할 수 있습니다.
영역에 대한 DNSSEC 정책 기능을 활성화하면 BIND에서 다음 작업을 자동으로 수행합니다.
- 키를 만듭니다.
- 영역 서명
- 키를 다시 서명하고 주기적으로 교체하는 등 영역을 유지 관리합니다.
외부 DNS 서버를 활성화하여 영역의 진위 여부를 확인하려면 영역의 공개 키를 상위 영역에 추가해야 합니다. 이를 수행하는 방법에 대한 자세한 내용은 도메인 공급자 또는 레지스트리에 문의하십시오.
이 절차에서는 BIND에서 기본
DNSSEC 정책을 사용합니다. 이 정책은 단일 ECDSAP256SHA
키 서명을 사용합니다. 또는 사용자 지정 키, 알고리즘 및 타이밍을 사용하는 고유한 정책을 만듭니다.
사전 요구 사항
- DNSSEC를 활성화할 영역입니다.
-
named
또는named-chroot
서비스가 실행 중입니다. - 서버는 시간 서버와 시간을 동기화합니다. DNSSEC 검증을 위해 정확한 시스템 시간이 중요합니다.
절차
/etc/named.conf
파일을 편집하고 DNSSEC를 활성화할 영역에dnssec-policy default;
를 추가합니다.zone "example.com" { ... dnssec-policy default; };
BIND를 다시 로드합니다.
# systemctl reload named
변경 루트 환경에서 BIND를 실행하는 경우
systemctl reload named-chroot
명령을 사용하여 서비스를 다시 로드합니다.BIND에서는 공개 키를
/var/named/K <zone_name > .+ <algorithm> + <key_ID > .key
파일에 저장합니다. 이 파일을 사용하여 영역의 공개 키를 상위 영역에 필요한 형식으로 표시합니다.DS 레코드 형식:
# dnssec-dsfromkey /var/named/Kexample.com.+013+61141.key example.com. IN DS 61141 13 2 3E184188CF6D2521EDFDC3F07CFEE8D0195AACBD85E68BAE0620F638B4B1B027
DNSKEY 형식:
# grep DNSKEY /var/named/Kexample.com.+013+61141.key example.com. 3600 IN DNSKEY 257 3 13 sjzT3jNEp120aSO4mPEHHSkReHUf7AABNnT8hNRTzD5cKMQSjDJin2I3 5CaKVcWO1pm+HltxUEt+X9dfp8OZkg==
- 영역의 공개 키를 상위 영역에 추가하도록 요청합니다. 이를 수행하는 방법에 대한 자세한 내용은 도메인 공급자 또는 레지스트리에 문의하십시오.
검증
DNSSEC 서명을 활성화한 영역에서 레코드에 대한 자체 DNS 서버를 쿼리합니다.
# dig +dnssec +short @localhost A www.example.com 192.0.2.30 A 13 3 28800 20220718081258 20220705120353 61141 example.com. e7Cfh6GuOBMAWsgsHSVTPh+JJSOI/Y6zctzIuqIU1JqEgOOAfL/Qz474 M0sgi54m1Kmnr2ANBKJN9uvOs5eXYw==
이 예에서는 BIND가 동일한 호스트에서 실행되고
localhost
인터페이스의 쿼리에 응답하는 것으로 가정합니다.공개 키가 상위 영역에 추가되고 다른 서버로 전파된 후 서버가 서명된 영역에 대한 쿼리에 인증된 데이터(
ad
) 플래그를 설정하는지 확인합니다.# dig @localhost example.com +dnssec ... ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ...