1.3. BIND를 캐싱 DNS 서버로 구성
기본적으로 BIND DNS 서버는 성공 및 실패한 조회를 해석하고 캐시합니다. 그러면 서비스는 캐시의 동일한 레코드에 대한 요청에 응답합니다. 이렇게 하면 DNS 조회 속도가 크게 향상됩니다.
사전 요구 사항
- 서버의 IP 주소는 고정됩니다.
절차
bind및bind-utils패키지를 설치합니다.# yum install bind bind-utils이 패키지는 BIND 9.11을 제공합니다. BIND 9.16이 필요한 경우
bind9.16및bind9.16-utils패키지를 설치합니다.변경 루트 환경에서 BIND를 실행하려면
bind-chroot패키지를 설치합니다.# yum install bind-chrootSELinux가
강제모드인 호스트에서 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 --reloadBIND를 시작하고 활성화합니다.
# 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 ...캐시된 항목으로 인해 항목이 만료될 때까지 동일한 레코드에 대한 추가 요청이 훨씬 더 빨라집니다.