우분투 리눅스를 20.04에서 22.04로 업그레이드 한 이후로 여러 가지 문제가 발생했습니다. proftpd 업데이트 안 되는 문제도 있었고, 한글 입력이 안 되는 문제고 있었고, firefox가 snap package라서 이 점도 제법 불편한 것 같습니다.
본 페이지에서는 우분투 22.04에서 "호스트 주소를 해석할 수 없습니다."라는 에러 메시지가 발생할 때 이 문제를 해결하는 방법에 대해서 설명드리고자 합니다.
1. 문제의 증상
우분투 리눅스 20.04에서 22.04로 업그레이드한 이후로 인터넷 접속이 제대로 되지 않았습니다. wget 같은 명령을 통해서 인터넷에서 파일을 다운로드하려고 해 봤더니, "호스트 주소를 해석할 수 없습니다."라는 메시지가 나오면서 파일이 다운로드 되지 않았습니다.
2. 문제의 원인 분석
이 문제는 도메인 네임을 IP주소로 변환할 수 없어서 발생하는 문제입니다. /etc/resolv.conf 파일의 내용을 살펴봐야 합니다.
$ cat /etc/resolv.conf
위의 명령을 통해서 /etc/resolv.conf 파일을 살펴보니 DNS 설정이 올바르지 않다는 것을 알 수 있었습니다.
# Dynamic resolv.conf(5) file for glibc resolver(3) generted by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN # 127.0.0.53 is the system-resolved stub resolver. # run "systemd-resolve --status" to see details about the actual nameservers. naeserver 127.0.0.53 sarch DOMAINS |
네임 서버 설정이 올바르지 않다는 것을 알 수 있습니다.
3. 임시 조치 방법
임시로 조치할 수 있는 방법은 /etc/resolv.conf 파일을 열어서 nameserver를 추가하는 방법입니다.
$ sudo vi /etc/resolv.conf
선호하는 편집기로 열고, DNS1과 DN2를 nameserver로 추가해주면 됩니다.
# Dynamic resolv.conf(5) file for glibc resolver(3) generted by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN # 127.0.0.53 is the system-resolved stub resolver. # run "systemd-resolve --status" to see details about the actual nameservers. nameserver 127.0.0.53 nameserver aaa.bbb.ccc.ddd nameserver eee.fff.ggg.hhh sarch DOMAINS |
위와 같이 입력하면 해당 문제가 해결됩니다. 하지만 이 방법은 임시 조치 방법에 불과합니다.
# Dynamic resolv.conf(5) file for glibc resolver(3) generted by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN # 127.0.0.53 is the system-resolved stub resolver. # run "systemd-resolve --status" to see details about the actual nameservers. nameserver 127.0.0.53 nameserver aaa.bbb.ccc.ddd nameserver eee.fff.ggg.hhh sarch DOMAINS |
설정 파일의 2번째 줄에 있는 주석을 보시면 아시겠지만, 이 설정 파일을 편집하기 말라고 되어 있습니다. 재부팅하면 수정한 내용이 모두 초기화되어 버립니다.
4. 영구 조치 방법
이 문제가 발생하는 원인은 새롭게 업그레이드한 버전은 22.04인데, /etc/resolve.conf 파일의 설정은 20.04 또는 그 이전의 버전이기 때문입니다.
아래의 명령을 수행해서 /etc/resolv.conf 파일을 살펴보면, symbolic link로 되어 있다는 것을 알 수 있습니다.
$ ls -all /etc/resolv.conf
/etc/resolv.conf 파일이 /run/resolvconf/resolv.con 파일을 심볼릭 링크로 가리키고 있다는 것을 알 수 있습니다.
xrwxrwxrwx 1 root root 29 11월 21 2018 /etc/resolv.conf -> ../run/resolvconf/resolv.conf |
하지만 22.04에서는 /run/systemd/resolv/stub-resolv.conf 파일을 symbolic link 걸어줘야 합니다.
$ sudo rm /etc/resolv.conf
$ sudo ln -s ../run/systemd/resolve/resolv.conf /etc/resolv.conf
기존의 링크인 /etc/resolv.conf 파일은 제거하고, /run/systemd/resolv/resolv.conf 파일로 다시 심볼릭 링크를 생성해줍니다.
cat 명령으로 /etc/resolv.conf 파일을 확인해봅니다.
$ cat /etc/resolv.conf
아래와 같이 /etc/resolv.conf 파일의 내용이 바뀐 것을 알 수 있습니다.
# This is /run/systemd/resolv/resolv.conf managed by man:systemd-resolved(8). # Do not edit. # # This file might be symlinked as /etc/resolv.conf. If you're looking at # /etc/resolv.conf and seeing this text, you have followed the symlink. # # This is a dynamic resolv.conf file for connecting local clients diectly to # all known uplink DNS servers. This file lists all configured search domains. # # Third party programs should typically 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 differen symlink. # # See man:systemd-resolved.service(8) for details about the supported mode of # operation fo /etc/resolv.conf nameserver aaa.bbb.ddd.eee nameserver fff.ggg.hhh.iii search DOMAINS |
결론
만약 우분투 22.04 이전 버전에서 22.04 버전으로 업그레이드 이후에 "호스트 주소를 해석할 수 없습니다."라는 에러가 발생한다면, /etc/resolv.conf 파일을 삭제하고 /run/systemd/resolve/resolv.conf 파일로 새로운 심볼릭 링크를 생성하시기 바랍니다.
참고할만한 글들
이상입니다.