본문 바로가기
컴퓨터/Linux

Ubuntu DNS 설정 변경

by Spring13 2026. 5. 1.

라즈베리 파이를 가지고 놀다가, 문득 DNS 관련 설정을 해주고 싶어서 이를 정리하여 작성한다.


resolvedctl을 이용한 설정


resolvectl이란, ubuntu에서 DNS 관련 서비스를 담당하는 서비스이다.

이 글에서는 이 기능을 이용하여 DNS 설정을 변경할 것이다.

 

resolvectl
resolvectl status

위의 두 명령을 입력하면, 위의 출력이 나타나며 관련 설정 상태를 알 수 있다.


설정 파일 수정하기


아래의 명령을 입력한다.

sudo nano /etc/systemd/resolved.conf

'sudo nano /etc/systemd/resolved.conf'systemd-resolved에서 사용하는 설정 파일이다. 이를 수정한다.

 

[Resolve] 항목을 살펴보면, #DNS와 #FallbackDNS 항목을 찾을 수 있다.

#DNS는 평시에 사용하는 DNS이고, #FallbackDNS는 평시에 사용하는 DNS가 사용 불가능일 때 대신 사용하는 DNS이다.

이 항목의 주석을 제거하고, 원하는 DNS를 설정한다.

 

필자는 이렇게 설정하였다.

 

이후 아래의 명령을 입력해 서비스를 다시 시작한다:

sudo systemctl restart systemd-resolved

 

이후, 다시 resolvectl status를 입력하여 설정이 적용되었는지 확인한다.

또는 이렇게 입력할 수 있다.

sprout1345@sproutpi:~$ dig chat.openai.com

; <<>> DiG 9.18.30-0ubuntu0.24.04.2-Ubuntu <<>> chat.openai.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56478
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;chat.openai.com.               IN      A

;; ANSWER SECTION:
chat.openai.com.        57      IN      CNAME   chat.openai.com.cdn.cloudflare.net.
chat.openai.com.cdn.cloudflare.net. 57 IN A     172.64.150.28
chat.openai.com.cdn.cloudflare.net. 57 IN A     104.18.37.228

;; Query time: 8 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sat Apr 05 21:10:39 KST 2025
;; MSG SIZE  rcvd: 124

이렇게 하면 외부의 주소가 정상적으로 쿼리되는지 알 수 있다.


번외: resolvectl 추가 설정


위의 이미지에서, -LLMNR, -DNSOverTLS 등의 항목이 있는 것을 확인할 수 있다.

 

간단하게 살펴보면:

 

  • mDNS(Multicast DNS): 로컬 네트워크에서 DNS 서버 없이 기기들이 서로 이름을 해석할 수 있도록 도와주는 프로토콜
  • LLMNR (Link-Local Multicast Name Resolution): 마이크로소프트에서 개발한 프로토콜로, 로컬 네트워크에서 기기들이 서로 이름을 해석할 수 있도록 함
  • DNSOverTLS (DNS over TLS): DNS 요청을 TLS(Transport Layer Security) 암호화를 사용하여 보호
  • DNSSEC (DNS Security Extensions): DNS 응답의 무결성을 검증하는 보안 프로토콜

즉, LLMNR, mDNS은 별 의미가 없지만(avahi가 다해준다), DNSOverTLS, DNSSEC는 보안을 위해서라면 켜는 것이 좋다.


방법은 다음과 같다:

sudo nano /etc/systemd/resolved.conf

다시 한번 설정 파일을 연다.

 

#DNSSEC=no
#DNSOverTLS=no

해당 부분의 주석을 없애고, 'no''yes'로 변경한다.

 

DNSSEC=yes
DNSOverTLS=yes

저장했으면, 서비스를 재시작한다.

sudo systemctl restart systemd-resolved

가능하다면, 되도록 재부팅까지 다 해준다.

 

일단, 설정이 완료되었으면, 아래와 같이 나타날 것이다:

sprout1345@sproutpi:~$ resolvectl status
Global
           Protocols: -LLMNR -mDNS +DNSOverTLS DNSSEC=yes/supported
    resolv.conf mode: stub
  Current DNS Server: 1.1.1.1
         DNS Servers: 1.1.1.1 1.0.0.1
Fallback DNS Servers: 8.8.8.8 8.8.4.4 9.9.9.9

Link 2 (eth0)
    Current Scopes: none
         Protocols: -DefaultRoute -LLMNR -mDNS +DNSOverTLS DNSSEC=yes/supported

Link 3 (wlan0)
    Current Scopes: DNS
         Protocols: +DefaultRoute -LLMNR -mDNS +DNSOverTLS DNSSEC=yes/supported
Current DNS Server: 1.1.1.1
       DNS Servers: 1.1.1.1 8.8.8.8
        DNS Domain: Davolink

 

경우에 따라, 재부팅 이후, 뭔가 문제가 생길 수 있는데, 그러면 그냥 다시 원래대로 돌려놓으면 된다.


Netplan을 이용하여 설정


Netplan을 사용하여 DNS를 설정할 수도 있다. 그러나 이 방법을 사용하면, 해당 네트워크 하나에만 설정이 되기 때문에, 전역 설정을 하려면 위의 resolvectl을 이용해야 한다.

 

아래의 명령을 입력한다.

sudo nano /etc/netplan/50-cloud-init.yaml

위 파일은 netplan 설정 파일로, 이전에 라즈베리 파이의 네트워크 설정을 변경할 때 사용했던 그 파일이다.

 

아래와 같은 형태로, 설정을 변경한다:

network:
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
  version: 2

nameserversaddresses 항목을 추가하면 된다.

 

이후 다음의 명령을 입력하여 설정을 적용한다:

sudo netplan apply

이미 설명하였듯, 이 설정은 해당 네트워크에만 설정되므로, 복수의 설정을 위해서는 각각 일일히 설정하거나, 위의 resolvectl을 이용해야 한다.

728x90
반응형

댓글