운영체제/UBUNTU

[Ubuntu 18.04 LTS] DNS 설정 (resolve.conf)

louky 2019. 3. 5. 16:42
반응형

[Ubuntu 18.04 LTS] DNS 설정 (resolve.conf)





Ubuntu.....18.04에서는 많은 것이 바뀌어 있는거 같다....ㅠㅠ



DNS설정을 위해 /etc/resolve.conf를 수정하였더니 반영이 안된다. 

정말 아무생각없이 습관처럼 반영/변경 했는데 정상적으로 동작이 되지 않았다. 


이에 확인해본 결과  /etc/resolve.conf 파일 안에는  파일을 수정하지 말라고 되어 있었다. 


"This file is managed by man:systemd-resolved(8). Do not edit. 

root@test:~# cat /etc/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53
options edns0


DNS동작 상태는 systemd-resolve --status 통해 확인하라고 되어 있고 확인해 보면 아래와 같이 동작 되고 있다는걸 확인할 수 있다. 


root@test:~# systemd-resolve --status
Global
          DNSSEC NTA: 168.192.in-addr.arpa
                      16.172.in-addr.arpa

                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test

Link 2 (eth0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 168.126.63.1
                      8.8.4.4


여기서 DNS설정을 인터페이스별로 설정이 가능한거 같아 보이기도 한다. (자세히는 아직 모르겠음....ㅜㅜ)

필자의 경우 인터페이스 설정시 DNS설정을 추가 하였기에 DNS주소가 보이기도 한다. (물론 동작도 된다.)


그럼 대체 /etc/resolve.conf를 대신해서 수정해야 할곳은 어디인가.....


/etc/resolve.conf를 대체하는 곳은 "/run/systemd/resolve/resolv.conf" 인거 같다. 

root@test:~# cat /run/systemd/resolve/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients directly to
# all known uplink DNS servers. This file lists all configured search domains.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 168.126.63.1
nameserver 8.8.4.4


변경하였지만 반영되지 않았다. 

알고 보니 /etc/netplan/01-netcfg.yaml에  설정되어 있을 경우 해당 설정정보가 무조건 반영되도록 되어 있다. 


필자처럼  /etc/netplan/01-netcfg.yaml에 nameserver설정이 되어 있다면 굳이  DNS설정을 건드리지 않아도 될거 같다. 




하지만, 

꼭 추가로 설정을 해야 한다면 global DNS(또는 uplinkDNS) 설정을 하면된다. 


global DNS(uplinkDNS) 설정은 특정 config 파일을 수정하고 systemd-resolve daemon을 재시작해야 하는데 도대체 어디서 config 를 수정해야 하는가... 한참 찾았다. (물론 구글 검색을 했다.)


man page를 찾아봐도 없고 설정정보를 찾기 힘들었는데 아래 링크에서 친절이 설명이 되어 있었다. 


    https://www.freedesktop.org/software/systemd/man/resolved.conf.html




/etc/systemd/resolved.conf

/etc/systemd/resolved.conf.d/*.conf

/run/systemd/resolved.conf.d/*.conf

/usr/lib/systemd/resolved.conf.d/*.conf


이중 "/etc/systemd/resolved.conf"  수정해야 global DNS(uplinkDNS)가 반영이 된다. 

root@test:~# cat  /etc/systemd/resolved.conf
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See resolved.conf(5) for details

[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes
DNS=168.126.63.1

"DNS=" 부분의 주석을 제거하고 DNS IP를 추가 하거나 "DNS=168.126.63.1"를 추가하고 저장한 다음에 systemd-resolve.service를 재시작해준다.  


root@test:~# systemctl restart systemd-resolved.service 


재시작 후 DNS동작 상태를 확인해 보면 상단에  Global DNS server 가 설정 된것을 확인할 수 있다.


root@test:~# systemd-resolve --status
Global
         DNS Servers: 168.126.63.1
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa
                      19.172.in-addr.arpa
                      20.172.in-addr.arpa
                      21.172.in-addr.arpa
                      22.172.in-addr.arpa
                      23.172.in-addr.arpa
                      24.172.in-addr.arpa
                      25.172.in-addr.arpa
                      26.172.in-addr.arpa
                      27.172.in-addr.arpa
                      28.172.in-addr.arpa
                      29.172.in-addr.arpa
                      30.172.in-addr.arpa
                      31.172.in-addr.arpa
                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test
~
~











반응형