컴퓨터는 사용자가 방문하는 웹사이트 정보를 “DNS 캐시”라는 곳에 저장합니다. 이 캐시는 사용자가 특정 도메인에 접속할 때마다 시스템이 매번 DNS 서버를 검색하지 않고도 빠르게 연결할 수 있도록 돕는 역할을 합니다. 이러한 DNS 캐싱 덕분에 인터넷 사용 속도가 빨라지며, macOS, Windows, Linux 등 대부분의 운영체제에서 이 기능을 지원합니다.
하지만 DNS 캐싱이 항상 좋은 것만은 아닙니다. 캐시된 정보로 인해 새로운 웹사이트가 아닌 이전 버전의 웹사이트가 표시되거나, 원격 서버와의 연결에 실패하는 등의 문제가 발생할 수 있습니다. Linux에서는 이러한 오류를 해결하기 위해 DNS 캐시를 “플러시(flush)”, 즉 삭제하는 것이 효과적인 방법입니다. DNS 캐시를 플러시하면 DNS 데이터베이스가 최신 정보로 업데이트되어 사용자들이 흔히 겪는 여러 문제를 해결할 수 있습니다.
DNS 플러시 – 시스템 해결 방법
현재 대부분의 Linux 사용자는 Systemd init 시스템이 탑재된 운영체제를 사용하고 있습니다. Systemd는 커뮤니티 내에서 의견이 분분한 주제이지만, 시스템 레벨의 조정과 관리를 이전보다 훨씬 쉽게 만들어준다는 점에는 모두가 동의합니다. 특히 DNS 캐시를 삭제할 때 이러한 편리함을 체감할 수 있습니다.
Systemd는 “systemd-resolve”라는 도구를 통해 DNS 캐시를 관리합니다. 이 도구는 대부분의 Linux 운영체제에서 사용할 수 있는 표준 유틸리티입니다. 사용자의 운영체제가 Systemd Resolved를 사용하여 DNS와 DNS 캐시를 처리하는지 확인하려면, 터미널 창(Ctrl + Alt + T 또는 Ctrl + Shift + T)을 열고 다음 명령을 실행하십시오.
systemctl status systemd-resolved.service
터미널에 출력된 Systemd Resolved 상태 정보에서 “활성” 섹션을 찾아 “활성(실행 중)”이라고 표시되어 있는지 확인합니다. 만약 그렇다면, 사용자의 Linux 시스템은 Systemd Resolved를 통해 DNS를 관리하고 있는 것입니다.
Systemd Resolved의 DNS 캐시를 삭제하려면, 내장된 기능 중 하나인 “flush caches” 명령을 사용해야 합니다. 이 명령을 통해 즉시 DNS 캐시를 삭제하고 재설정할 수 있습니다.
sudo systemd-resolved --flush-caches
sudo 명령을 사용할 수 없는 경우에는 다음 명령어를 사용하십시오.
su -
systemd-resolved --flushcaches
“flushcaches” 명령을 실행한 후에도 문제가 지속되면, 서비스를 완전히 재시작하는 것이 좋습니다. 서비스 재시작은 “systemctl restart” 명령을 통해 수행할 수 있습니다.
sudo systemctl restart systemd-resolved.service
sudo 명령을 사용할 수 없습니까? 루트 권한으로 로그인(su -) 후 “systemctl restart” 명령을 실행하여 서비스를 재시작하십시오.
su - systemctl restart systemd-resolved.service
Systemd-Resolved 서비스가 성공적으로 재시작되면, 대부분의 DNS 관련 문제가 해결될 것입니다.
DNS 플러시 – DNSMasq
DNSMasq는 Linux 플랫폼에서 널리 사용되는 또 다른 DNS 솔루션입니다. Systemd-Resolved와 마찬가지로, 사용자는 “systemctl” 명령을 통해 DNSMasq 도구와 상호 작용할 수 있습니다. 운영체제가 DNSMasq를 사용하여 DNS를 관리하는지 확인하려면, “status” 명령을 실행하십시오.
systemctl status dnsmasq.service
화면에 출력된 상태 정보에서 “활성” 섹션을 확인하여 “활성(실행 중)”이라고 표시되어 있는지 확인합니다. 만약 그렇다면, 다음 명령을 사용하여 DNSMasq의 DNS 캐시를 즉시 삭제할 수 있습니다.
sudo systemctl restart dnsmasq.service
sudo 명령을 사용할 수 없는 경우에는 루트 권한으로 로그인(su -) 후 서비스를 재시작하십시오.
su -
systemctl restart dnsmasq.service
DNS 플러시 – NSCD
NSCD는 대부분의 RedHat 기반 Linux 운영체제에서 선호하는 DNS 캐싱 시스템입니다. OpenSUSE, CentOS 등 유사한 시스템을 사용하는 경우 DNS 캐시 삭제에 NSCD가 사용될 가능성이 높습니다.
참고: Fedora Linux는 RedHat 기반이지만, 기본적으로 DNS 캐시를 저장하지 않습니다.
사용자의 Linux 운영체제가 NSCD를 사용하는지 확인하려면, 시스템 서비스 상태를 확인하는 “status” 명령을 실행해야 합니다.
systemctl status nscd.service
NSCD 서비스 상태 정보에서 “활성” 섹션을 찾아 “활성(실행 중)”이라고 녹색 글씨로 표시되어 있는지 확인합니다. 만약 그렇다면, NSCD를 통해 DNS 캐시를 관리하고 있는 것입니다.
NSCD를 사용하여 DNS 캐시를 플러시하는 방법은 Systemd 기반의 다른 캐싱 시스템과 유사합니다. “systemctl restart” 명령을 실행하여 서비스를 재시작하면, DNS 캐시가 자동으로 삭제되고 발생 가능한 모든 DNS 문제가 해결됩니다.
sudo systemctl restart nscd.service
sudo 명령을 사용할 수 없는 경우, 먼저 루트 계정(su -)으로 로그인한 후 서비스를 재시작할 수 있습니다.
su - systemctl restart nscd.service