DNS 설정 · 4 min read · Oct 01, 2025
우분투 20.04에서 Dnsmasq를 사용하여 로컬 DNS 리졸버 설정하는 방법

Dnsmasq는 “DNS 변조의 약자”로, 소규모 네트워크에 사용되는 간단하고 가벼우며 사용하기 쉬운 DNS 포워더입니다. DNS 캐시 및 DHCP 서버로 구성할 수 있으며 IPv4 및 IPv6 프로토콜을 모두 지원합니다. DNS 쿼리를 수신하면 캐시에서 응답하거나 다른 DNS 서버로 전달합니다.
Dnsmasq는 세 가지 하위 시스템으로 구성됩니다:
- DNS 하위 시스템: A, AAAA, CNAME 및 PTR을 포함한 다양한 레코드 유형을 캐싱하는 데 사용됩니다.
- DHCP 하위 시스템: DHCPv4, DHCPv6, BOOTP 및 PXE를 지원합니다.
- 라우터 광고 하위 시스템: IPv6 호스트에 대한 기본 자동 구성을 제공합니다. 독립적으로 또는 DHCPv6와 함께 사용할 수 있습니다.
이 튜토리얼에서는 우분투 20.04 서버에서 Dnsmasq로 로컬 DNS 서버를 설정하는 방법을 보여줍니다.
전제 조건
- 우분투 20.04를 실행하는 서버.
- 서버에 루트 비밀번호가 구성되어 있어야 합니다.
시작하기
먼저, 시스템 패키지를 최신 버전으로 업데이트하는 것이 좋습니다. 다음 명령어를 실행하여 모든 패키지를 업데이트할 수 있습니다:
apt-get update -y모든 패키지를 업데이트한 후, 시스템에서 Systemd-resolved 서비스를 비활성화해야 합니다. Systemd-resolved 서비스는 로컬 애플리케이션에 대한 네트워크 이름 해석에 사용됩니다.
다음 명령어를 실행하여 비활성화할 수 있습니다:
systemctl disable --now systemd-resolved서비스가 비활성화되면 기본 resolv.conf 파일을 제거하고 사용자 지정 DNS 서버 세부정보로 새 파일을 생성해야 합니다.
다음 명령어로 기본 resolv.conf 파일을 제거할 수 있습니다:
rm -rf /etc/resolv.conf다음으로, 다음 명령어를 사용하여 resolv.conf 파일에 Google DNS 서버를 추가합니다:
echo "nameserver 8.8.8.8" > /etc/resolv.conf작업이 완료되면 다음 단계로 진행할 수 있습니다.
Dnsmasq 설치
기본적으로 Dnsmasq는 우분투 20.04 기본 저장소에 있습니다. 다음 명령어를 실행하여 설치할 수 있습니다:
apt-get install dnsmasq dnsutils ldnsutils -y설치가 완료되면 Dnsmasq 서비스가 자동으로 시작됩니다. 다음 명령어로 Dnsmasq의 상태를 확인할 수 있습니다:
systemctl status dnsmasq다음과 같은 출력을 받아야 합니다:
dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-11-02 11:02:01 UTC; 15s ago
Main PID: 17726 (dnsmasq)
Tasks: 1 (limit: 2282)
Memory: 868.0K
CGroup: /system.slice/dnsmasq.service
??17726 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e>
Nov 02 11:02:12 ubuntu2004 systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...
Nov 02 11:02:12 ubuntu2004 dnsmasq[17705]: dnsmasq: syntax check OK.
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: started, version 2.80 cachesize 150
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: DNS service limited to local subnets
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify dumpfi>
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: reading /etc/resolv.conf
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: using nameserver 8.8.8.8#53
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: read /etc/hosts - 7 addresses
Nov 02 11:02:12 ubuntu2004 systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.
작업이 완료되면 다음 단계로 진행할 수 있습니다.
Dnsmasq 구성
다음으로, Dnsmasq를 로컬 DNS 서버로 구성해야 합니다. Dnsmasq 기본 구성 파일을 편집하여 수행할 수 있습니다:
nano /etc/dnsmasq.conf다음 줄을 변경합니다:
port=53
domain-needed
bogus-priv
listen-address=127.0.0.1,your-server-ip
expand-hosts
domain=dns-example.com
cache-size=1000작업이 완료되면 파일을 저장하고 닫습니다.
다음으로, resolv.conf 파일에 서버 IP 주소를 기본 네임서버로 추가해야 합니다. 다음 명령어로 추가할 수 있습니다:
nano /etc/resolv.conf“nameserver 8.8.8.8” 위에 다음 줄을 추가합니다:
nameserver your-server-ip작업이 완료되면 파일을 저장하고 닫습니다. 다음으로, 다음 명령어로 구성 오류가 있는지 서버를 확인합니다:
dnsmasq --test모든 것이 정상이라면 다음과 같은 출력을 받아야 합니다:
dnsmasq: syntax check OK.마지막으로, 변경 사항을 적용하기 위해 Dnsmasq 서비스를 재시작합니다:
systemctl restart dnsmasq이 시점에서 Dnsmasq가 시작되고 포트 53에서 수신 대기하고 있습니다. 다음 명령어로 확인할 수 있습니다:
ss -alnp | grep -i :53다음과 같은 출력을 받아야 합니다:
udp UNCONN 0 0 0.0.0.0:53 0.0.0.0:* users:(("dnsmasq",pid=41051,fd=4))
udp UNCONN 0 0 [::]:53 [::]:* users:(("dnsmasq",pid=41051,fd=6))
tcp LISTEN 0 32 0.0.0.0:53 0.0.0.0:* users:(("dnsmasq",pid=41051,fd=5))
tcp LISTEN 0 32 [::]:53 [::]:* users:(("dnsmasq",pid=41051,fd=7)) Dnsmasq 서버에 DNS 레코드 추가
다음으로, /etc/hosts 파일을 편집하고 로컬 DNS 서버 항목을 추가해야 합니다.
nano /etc/hosts다음 줄을 추가합니다:
your-server-ip host1.dns-example.com작업이 완료되면 파일을 저장하고 닫습니다.
Dnsmasq 서버 해상도 확인
이 시점에서 Dnsmasq가 설치되고 구성되었습니다. 이제 DNS 해상도를 확인할 시간입니다.
다음과 같이 dig 명령어를 사용하여 DNS 해상도를 확인할 수 있습니다:
dig host1.dns-example.com +short모든 것이 정상이라면 다음 출력에서 서버 IP를 볼 수 있어야 합니다:
your-server-ip다음 명령어로 외부 DNS 해상도를 확인할 수도 있습니다:
dig howtoforge.com +short다음과 같은 출력을 받아야 합니다:
172.67.68.93
104.26.3.165
104.26.2.165원격 클라이언트를 Dnsmasq DNS 서버 사용으로 구성
다음으로, 원격 클라이언트를 Dnsmasq DNS 서버를 기본 DNS 서버로 사용하도록 구성해야 합니다.
먼저, 다음 명령어로 DNS 도구를 설치합니다:
apt-get install dnsutils ldnsutils -y설치가 완료되면 /etc/resolv.conf 파일과 Dnsmasq DNS 서버 항목을 편집해야 합니다.
nano /etc/resolv.conf파일의 맨 처음에 다음 줄을 추가합니다:
nameserver your-server-ip작업이 완료되면 파일을 저장하고 닫습니다.
다음으로, 다음 명령어로 로컬 DNS 해상도를 확인합니다:
dig host1.dns-example.com다음과 같은 출력을 볼 수 있어야 합니다:
; DiG 9.9.5-3ubuntu0.4-Ubuntu host1.dns-example.com
;; global options: +cmd
;; Got answer:
;; HEADER opcode: QUERY, status: NOERROR, id: 26401
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;host1.dns-example.com. IN A
;; ANSWER SECTION:
host1.dns-example.com. 0 IN A 45.58.32.165
;; Query time: 301 msec
;; SERVER: 45.58.32.165#53(45.58.32.165)
;; WHEN: Mon Nov 02 16:49:37 IST 2020
;; MSG SIZE rcvd: 66다음으로, 캐싱을 위해 DNS 서버를 확인해야 합니다. drill 유틸리티를 사용하여 확인할 수 있습니다.
먼저, 다음 명령어를 실행합니다:
drill google.com | grep "Query time"다음과 같은 출력을 볼 수 있어야 합니다:
;; Query time: 290 msec다음으로, 캐싱이 작동하는지 확인하기 위해 명령어를 다시 실행합니다:
drill google.com | grep "Query time"이제 쿼리 시간이 4 msec로 감소한 것을 볼 수 있어야 합니다:
;; Query time: 4 msec결론
축하합니다! 로컬 DNS 서버로 Dnsmasq를 성공적으로 설치하고 구성했습니다. 이제 이름 해석을 위해 로컬 네트워크에서 쉽게 구현할 수 있기를 바랍니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.