Ubuntu에서 dnsmasq를 사용하여 DNS 캐싱을 설정하는 방법

DNSmasq는 Linux 배포판에 대한 DNS 요청을 캐시하는 데 사용할 수 있습니다. 그러나 약간 어려울 수 있습니다.

DNS 캐시는 웹사이트 도메인 이름을 연결된 IP 주소로 변환하는 DNS 조회 절차의 속도를 높이기 위해 작동합니다. 네트워크의 여러 사용자가 동일한 웹 사이트 주소를 방문할 때 로컬 DNS 캐시 서버를 활용하면 웹이 로드되는 데 걸리는 시간을 줄일 수 있습니다.

먼저 DNS 캐싱이 무엇인지 알아보겠습니다.

DNS 캐싱이란 무엇입니까?

DNS는 인터넷에서 공개적으로 액세스할 수 있는 모든 온라인 사이트 및 관련 IP 주소를 추적하는 데 사용됩니다. 전화번호부에 비유할 수 있습니다. DNS를 사용하면 네트워크 인프라가 인터넷 사이트와 상호 작용하는 데 필요한 각 사이트의 IP를 기억할 필요가 없습니다.

검색 엔진에 웹 페이지를 표시하도록 요청할 때마다 이것이 실제로 배후에서 발생합니다.

시스템이 다수의 외부 DNS 서버에 액세스할 수 있지만 문제는 DNS의 중앙 복제본이 있으면 여전히 전송 및 확인 속도가 빨라진다는 것입니다. 이 때 DNS 캐싱이 작동합니다.

웹으로 요청을 보내기 전에 DNS 캐시는 절차를 훨씬 더 빠르게 하기 위해 최근에 자주 액세스한 도메인에 대한 ID 확인을 처리합니다.

DNS 서버는 IP 주소를 도메인 이름으로 확인해야 할 때마다 액세스됩니다. 이것은 특히 웹사이트가 동시에 많은 요청을 받는 경우 DNS 서버에 추가 로드를 줄 수 있습니다.

DNS 요청 및 응답 시간을 줄이기 위해 DNS 캐시가 활용됩니다. 확인된 IP 주소는 호스트 세부 정보와 함께 로컬에 저장됩니다. 새 DNS 쿼리를 시작하는 대신 다음에 IP 또는 도메인 이름을 확인해야 할 때 결과가 DNS 캐시 메모리에서 검색됩니다.

DNS 캐싱은 Amazon EC2 인스턴스에서 간헐적인 DNS 해결 문제를 해결하는 데 어떻게 도움이 됩니까?

대부분의 Linux 시스템은 로컬 DNS 캐시를 사용하지 않습니다. 이는 모든 DNS 요청이 Amazon에서 제공하는 권한 있는 DNS 해석기로 직접 전송됨을 의미하며 한 번에 처리할 수 있는 요청 수에 제한이 있습니다. DNS 확인 문제는 요청이 많을 때 발생합니다.

시스템에 로컬 DNS 캐시를 배포하면 DNS 확인 오류를 방지하면서 CPU 및 네트워크 사용률을 줄이는 데 도움이 됩니다. 로컬 DNS 캐시는 Amazon RDS 및 S3와 같은 외부 DNS 리소스에 대한 쿼리에 응답합니다.

  Linux의 화면 명령을 사용하는 방법

DHCP 프로토콜은 시작하는 동안 Amazon VPC에 연결된 Amazon EC2 인스턴스에서 DNS 서버 주소를 요청하는 데 사용됩니다.

Amazon VPC를 사용하여 가상 사설 클라우드를 구축할 때 Route 53 DNS Resolver는 VPC의 해석기를 효과적으로 활용하여 로컬 Amazon VPC 웹 주소 및 비공개 관리 영역의 항목에서 실행되는 EC2 인스턴스에 대한 DNS 요청에 응답합니다. Resolver는 모든 추가 웹 주소에 대해 공용 DNS 서버에서 반복적으로 조회합니다.

DNS 캐시는 우리 시스템이 온라인 웹사이트에 액세스를 시도하는 동안 신속하게 검사할 수 있는 이전 DNS 쿼리의 임시 기록 역할을 합니다. 모든 기존 및 후속 세션의 로그를 유지 관리합니다. 이 DNS 캐시는 도메인 확인을 더 쉽게 만들고 Amazon EC2 Linux 인스턴스에서 오류를 방지합니다.

많은 사용자는 일반적으로 AWS에 액세스할 때 DNS에 Amazon의 Route 53 서비스를 사용합니다. 정말 사용하기 쉽고 거의 무료입니다. 그러나 로컬 DNS 서버를 사용하려는 사용자의 결정에 영향을 줄 수 있는 여러 가지 이유가 있습니다.

bind9가 여전히 로컬 DNS 캐시 서버를 설정하기 위한 훌륭한 옵션이지만 dnsmasq는 EC2 인스턴스와 로컬 머신 모두에 설치하고 구성하는 것이 훨씬 간단합니다.

dnsmasq는 무엇입니까?

DNSmasq는 DNS, DHCP, TFTP 및 DNS 캐싱을 지원하는 Linux 관련 도구입니다. 작고 가벼워서 리소스 제약이 적은 네트워크 및 방화벽에 이상적입니다.

설치 및 구성이 매우 간단합니다. 서브네트워크에 DNS와 DHCP를 설정하기 위한 dnsmasq는 유연하고 실용적인 솔루션입니다.

각 서버 또는 기본 컨트롤러에 대해 이러한 DHCP 할당 식별자 및 관련 지침을 설정할 수 있습니다. 동적 및 정적 DHCP 옵션은 모두 dnsmasq에서 지원됩니다. 이식 가능하며 최소 1,000개의 클라이언트에 대해 DNS 및 DHCP를 관리할 수 있습니다.

DNS 쿼리가 수신되면 dnsmasq는 로컬 캐시에서 응답하거나 이를 권한 있는 DNS 서버로 전송합니다. DHCP 구성으로 주소에 대한 DNS 요청에 응답하는 것 외에도 /etc/hosts 파일의 내용을 확인하여 공용 DNS에 나열되지 않은 로컬 호스트 이름을 식별합니다.

브라우저에 내장된 DNS 캐시 대신 dnsmasq 도구를 사용하면 인터넷 검색 성능이 크게 향상됩니다. 설정이 매우 간단하고 디스크 공간이 거의 필요하지 않기 때문에 리소스가 제한된 통합 환경에 이상적입니다.

  Remo MORE는 멍청한 놈을 위한 뛰어난 데스크탑 및 모바일 최적화 도구입니다.

dnsmasq의 특징

  • 특정 권한 있는 서버에 특정 도메인 이름 확인 쿼리를 전송하도록 구성하여 dnsmasq를 사용하여 내부 DNS 서버를 통합하는 것은 간단합니다.
  • 구성된 로컬 DNS 서버를 사용하여 서버의 작업량을 줄이고 안정성을 높입니다.
  • 방화벽이 활성화된 끝점에 대한 DNS 구성은 ISP에서 사용하는 DNS와 독립적이며 비교적 쉽습니다.
  • 컴퓨터에서 DNS 확인을 수행하는 동안 인터넷에 연결된 포트에 액세스할 수 없는 경우 조회 작업이 즉시 일시 중단됩니다.
  • PPP(지점간 프로토콜) 또는 DHCP 쿼리를 통해 dnsmasq는 기본 도메인 확인 서버에서 직접 데이터를 주기적으로 수집하도록 실제로 구성할 수 있습니다.

설치

dnsmasq 유틸리티를 설치 및 구성하기 전에 systemd-resolved 서비스를 꺼야 합니다.

systemctl stop systemd-resolved

재부팅할 때 자동으로 시작되지 않도록 마스크 속성을 사용하여 숨길 수도 있습니다.

 systemctl mask systemd-resolved

dnsmasq 설치는 systemd-resolved를 끈 후 수행해야 하는 초기 작업입니다. DNSmasq는 거의 모든 Linux 배포판에 사전 설치되어 제공됩니다. 그렇지 않은 경우 수동으로 설치할 수 있습니다. 명령 터미널을 실행하고 다음 명령을 입력하여 수행합니다.

sudo apt-get install dnsmasq

yum 사용자인 경우 다음 명령을 사용하십시오.

sudo yum install -y dnsmasq

이 명령은 도구를 자동으로 설치하고 백그라운드에서 dnsmasq를 시작합니다.

설치가 성공적으로 완료되면 아래 명령어를 통해 dnsmasq의 상태를 확인할 수 있습니다.

systemctl status dnsmasq

상태가 “활성(실행 중)”으로 표시되면 설치가 완료되고 포트 53으로 구성되었음을 의미합니다. 상태가 “비활성(죽음)”으로 표시되면 Ubuntu 시스템과 dnsmasq를 다시 시작해야 합니다. 이렇게 하면 오류가 수정됩니다.

구성

이제 Dnsmasq를 로컬 캐싱 DNS 서버로 컴퓨터에 설정할 준비가 되었습니다. 기본 구성 파일은 /etc/dnsmasq.conf에 있습니다. 시스템에서 dnsmasq 유틸리티를 설정하려면 이 구성 파일을 수정해야 합니다.

이 명령을 사용하여 구성 파일을 열고 편집하십시오.

nano /etc/dnsmasq.conf

구성 파일은 루트 권한으로만 편집해야 합니다. 주석을 포함하여 파일의 모든 항목을 지우고 이 구성 설정을 복사하여 붙여넣고 저장하기만 하면 됩니다.

port=53
domain-needed
bogus-priv
listen-address=127.0.0.1
expand-hosts
domain=geek-demo.com
cache-size=1000

각 매개변수가 의미하는 바를 간략하게 설명하겠습니다.

  • 포트 – Dnsmasq가 DNS 요청을 수신하는 데 사용할 포트를 지정하거나 바인딩합니다.
  • domain-needed – 도메인 이름만 업스트림 DNS 서버로 전송합니다.
  • bogus-priv – 도메인 및 포트 전달 방지
  • listen-address – 네임서버 주소를 정의합니다. 일반적으로 로컬 DNS 서버를 설정하기 위해 기본적으로 localhost가 사용됩니다.
  • 도메인 – dnsmasq가 짧은 식별자에 추가하는 도메인을 구성합니다.
  • cache-size – 스토리지에서 허용되는 최대 DNS 캐싱 크기입니다.
  Minecraft용 Lunar 클라이언트를 다운로드하고 설치하는 방법은 무엇입니까?

필요한 모든 변경을 수행한 후 구성 파일을 저장하고 닫습니다. 다음 단계는 /etc/resolv.conf 파일을 편집하여 로컬 호스트 확인 주소를 추가하는 것입니다. 아래 명령을 사용하여 nano 편집기로 엽니다.

nano /etc/resolv.conf

여기에서 시스템이 주소 확인에 사용하는 모든 네임서버를 찾을 수 있습니다. 해당 목록에 루프백 주소도 추가하십시오. “nameserver 127.0.0.1″을 추가하고 첫 번째 줄에 유지합니다.

구성 파일을 저장하고 종료합니다. 업데이트된 설정을 적용하려면 dnsmasq 유틸리티를 다시 시작합니다.

systemctl restart dnsmasq

로컬 DNS 캐싱 서버 테스트

로컬 DNS 서버를 테스트하는 것은 쉽습니다. 명령줄을 열고 dig 명령을 사용하여 DNS 캐싱을 확인합니다. dig 명령을 처음 실행할 때 결과는 매우 일반적이어야 합니다.

┌──(root💀kali)-[/home/writer]
└─# dig koreantech.org.com                                                                                     1 ⚙

; <<>> DiG 9.18.0-2-Debian <<>> koreantech.org.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 623
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;koreantech.org.com.                 IN      A

;; ANSWER SECTION:
koreantech.org.com.          227     IN      A       172.66.43.163
koreantech.org.com.          227     IN      A       172.66.40.93

;; Query time: 31 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Sat Oct 15 07:52:49 EDT 2022
;; MSG SIZE  rcvd: 74

여기에서 업스트림 네임서버에서 세부사항을 조회하는데 조회 시간이 약 31msec임을 유의하시기 바랍니다. 동일한 dig 명령을 한 번 더 실행하면 쿼리 시간이 크게 단축되는 것을 알 수 있습니다.

┌──(root💀kali)-[/home/writer]
└─# dig koreantech.org.com                                                                                     1 ⚙

; <<>> DiG 9.18.0-2-Debian <<>> koreantech.org.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21942
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;koreantech.org.com.                 IN      A

;; ANSWER SECTION:
koreantech.org.com.          281     IN      A       172.66.40.93
koreantech.org.com.          281     IN      A       172.66.43.163

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Sat Oct 15 07:58:10 EDT 2022
;; MSG SIZE  rcvd: 74

여기서 질의 시간은 0msec이다. 이는 초기 검색을 수행한 후 dnsmasq가 데이터를 저장했고 이후에 수행된 모든 조회는 저장된 캐시의 활용으로 인해 즉각적이었다는 사실 때문입니다. 저장된 DNS 캐시를 삭제하려면 dnsmasq를 다시 시작해야 합니다.

마무리

이 기사에서는 dnsmasq가 로컬 DNS 서버로 작동하도록 설정하고 구성하는 방법을 살펴보았습니다. 다른 운영 체제에서 더 빠른 브라우징을 위해 DNS 서버를 변경하는 방법에 대해서도 관심이 있을 수 있습니다.