1.2. BIND를 캐싱 DNS 서버로 구성
기본적으로 BIND DNS 서버는 성공 및 실패한 조회를 해석하고 캐시합니다. 그러면 서비스는 캐시의 동일한 레코드에 대한 요청에 응답합니다. 이렇게 하면 DNS 조회 속도가 크게 향상됩니다.
사전 요구 사항
- 서버의 IP 주소는 고정됩니다.
절차
bind
및bind-utils
패키지를 설치합니다.# dnf install bind bind-utils
변경 루트 환경에서 BIND를 실행하려면
bind-chroot
패키지를 설치합니다.# dnf install bind-chroot
SELinux가
강제
모드인 호스트에서 BIND를 실행하는 것은 기본적으로 더 안전합니다./etc/named.conf
파일을 편집하고options
문을 다음과 같이 변경합니다.listen-on
및listen-on-v6
문을 업데이트하여 BIND에서 수신 대기해야 하는 IPv4 및 IPv6 인터페이스에 지정합니다.listen-on port 53 { 127.0.0.1; 192.0.2.1; }; listen-on-v6 port 53 { ::1; 2001:db8:1::1; };
allow-query
문을 업데이트하여 이 DNS 서버를 쿼리할 수 있는 IP 주소 및 범위에서 구성합니다.allow-query { localhost; 192.0.2.0/24; 2001:db8:1::/64; };
allow-recursion
문을 추가하여 BIND에서 재귀 쿼리를 허용하는 IP 주소 및 범위를 정의합니다.allow-recursion { localhost; 192.0.2.0/24; 2001:db8:1::/64; };
주의서버의 공용 IP 주소에 대한 재귀를 허용하지 마십시오. 그렇지 않으면 서버가 대규모 DNS 수정 공격의 일부가 될 수 있습니다.
기본적으로 BIND에서는 루트 서버에서 권한 있는 DNS 서버로 반복적으로 쿼리하여 쿼리를 확인합니다. 또는 공급자 중 하나와 같은 다른 DNS 서버로 쿼리를 전달하도록 BIND를 구성할 수도 있습니다. 이 경우 BIND에서 쿼리를 전달해야 하는 DNS 서버의 IP 주소 목록과 함께
forwarders
문을 추가합니다.forwarders { 198.51.100.1; 203.0.113.5; };
대체 동작으로 인해 전달자 서버가 응답하지 않는 경우 BIND에서 쿼리를 재귀적으로 확인합니다. 이 동작을 비활성화하려면
forward only;
문을 추가합니다.
/etc/named.conf
파일의 구문을 확인합니다.# named-checkconf
명령이 출력을 표시하지 않으면 구문이 올바른지.
들어오는 DNS 트래픽을 허용하도록
firewalld
규칙을 업데이트합니다.# firewall-cmd --permanent --add-service=dns # firewall-cmd --reload
BIND를 시작하고 활성화합니다.
# systemctl enable --now named
변경 루트 환경에서 BIND를 실행하려면
systemctl enable --now named-chroot
명령을 사용하여 서비스를 활성화하고 시작합니다.
검증
새로 설정한 DNS 서버를 사용하여 도메인을 확인합니다.
# dig @localhost www.example.org ... www.example.org. 86400 IN A 198.51.100.34 ;; Query time: 917 msec ...
이 예에서는 BIND가 동일한 호스트에서 실행되고
localhost
인터페이스의 쿼리에 응답하는 것으로 가정합니다.처음으로 레코드를 쿼리하면 BIND에서 해당 항목을 해당 캐시에 추가합니다.
이전 쿼리를 반복합니다.
# dig @localhost www.example.org ... www.example.org. 85332 IN A 198.51.100.34 ;; Query time: 1 msec ...
캐시된 항목으로 인해 항목이 만료될 때까지 동일한 레코드에 대한 추가 요청이 훨씬 더 빨라집니다.
다음 단계
- 이 DNS 서버를 사용하도록 네트워크에서 클라이언트를 구성합니다. DHCP 서버에서 DNS 서버 설정을 클라이언트에 제공하는 경우 이에 따라 DHCP 서버의 구성을 업데이트합니다.
추가 리소스
- SELinux를 사용하여 BIND를 보호하거나 변경 루트 환경에서 실행하는 방법에 대한 고려 사항
-
named.conf(5)
man page -
/usr/share/doc/bind/sample/etc/named.conf