DNS(도메인 이름 시스템) 서버를 통해 도메인 이름을 IP 주소로 확인하는 프로세스에는 획득한 IP 주소와 도메인-IP 쌍을 캐싱하여 다른 DNS 조회 없이 후속 연결을 용이하게 하는 작업이 포함됩니다.
간혹 로컬 DNS(도메인 이름 시스템) 캐시가 오염되어 HTTP(하이퍼텍스트 전송 프로토콜) 오류가 발생할 수 있습니다. 그러나 Linux 기반 컴퓨팅 시스템에서 DNS 캐시를 지우고 재구성하는 프로세스는 비교적 간단합니다. 다음 단계는 이 작업을 수행하는 방법에 대한 지침을 제공합니다.
Linux에서 DNS 캐시를 플러시하는 이유는 무엇인가요?
다양한 동기로 인해 장치에 저장된 DNS(도메인 이름 시스템) 캐시를 다시 활성화하고 싶을 수 있습니다. 웹페이지에 대해 더 이상 사용되지 않는 DNS 레코드가 존재하고 DNS 서버에서 업데이트된 버전을 얻고자 할 수도 있습니다. 또는 악의적인 주체에 의해 시스템이 위험에 처한 경우 DNS 캐시가 조작되었을 가능성이 있으며, 이를 일반적으로 DNS 스푸핑이라고 합니다. 이러한 경우 DNS 캐시를 다시 생성하면 시스템의 DNS 설정이 안전하게 유지됩니다.
DNS(도메인 이름 시스템) 캐시를 지우려면 시스템이 요청을 보내고 레코드를 업데이트하여 DNS 서버에서 최신 도메인-인터넷 프로토콜(IP) 주소 매핑을 다시 가져와야 하며, 그 과정에서 오래되거나 손상된 정보를 제거해야 합니다.
Linux에서 로컬 DNS 캐시를 보는 방법
시스템드 이전 Linux 배포판에서는 dnsmasq 또는 nscd와 같은 추가 프로그램을 수동으로 설치하기 전까지는 광범위한 DNS 캐싱이 존재하지 않았습니다. 반대로 systemd는 도메인 이름을 IP 주소로 변환하는 동시에 DNS 레코드 캐시를 유지하는 전용 서비스인 systemd-resolved를 통합합니다.
이어지는 세그먼트에서는 systemd-resolved, nscd 및 dnsmasq에서 생성된 DNS 캐시 항목 검사에 대한 포괄적인 설명을 제공하여 캐시된 정보를 제거하기 전에 심층적으로 파악할 수 있습니다.
systemd-resolved에 대한 DNS 캐시 보기
systemd-resolved 서비스의 캐시 레코드를 조사하려면 먼저 서비스를 일시 중단하여 운영을 중단한 후 로그 파일을 지정된 파일에 저장하도록 지시해야 합니다.
시스템에서 확인된 서비스의 기능을 종료하기 위한 SIGUSR1 알림을 발송하여 프로세스를 시작합니다.
sudo killall -USR1 systemd-resolved
“>” 연산자와 함께 “journalctl” 명령을 사용하여 명령의 출력을 텍스트 파일로 리디렉션합니다.
sudo journalctl -u systemd-resolved > ~/cache.txt
Vim과 같은 편집 소프트웨어를 사용하여 문서 내 세부 정보를 살펴보고 내용을 시각적으로 검사 및 조작할 수 있습니다.
vim ~/cache.txt
해당 파일을 찾아 원하는 방법을 사용하여 해당 파일로 이동합니다. 해당 파일에 도착하면 Escape 키를 사용하여 명령 프롬프트를 불러온 다음 지시에 따라 “/CACHE:”를 입력합니다. 그러면 지정된 파일 내에 캐시된 모든 DNS 레코드 목록이 표시됩니다. 이후 DNS 항목으로 이동하려면 Vim 함수 “n”을 활용하세요.
nscd에 대한 로컬 DNS 캐시 보기
nsCD에 의해 로컬로 저장된 캐시된 데이터를 검사하려면 도메인 내의 호스트와 관련된 데이터베이스의 콘텐츠에 액세스하고 열람하기 위해 “문자열”이라는 명령줄 유틸리티를 활용해야 합니다.
앞서 언급한 정보는 특정 명령을 실행하여 액세스할 수 있는 데비안 및 우분투 기반 운영 체제의 특정 파일 위치와 관련이 있습니다. 해당 파일은 디렉토리 경로 “/var/cache/nscd/hosts”에 있습니다.
sudo strings /var/cache/nscd/hosts | uniq
NCD NSCD DNS 캐시 구성에 관한 일반 정보를 얻으려면 -g 플래그가 있는 옵션을 활용하세요.
sudo nscd -g
dnsmasq에서 생성한 DNS 캐시 표시
dnsmasq는 DNS 캐시를 메모리 내에 저장하기 때문에 정확한 레코드를 검색하는 것이 어려울 수 있습니다. 그러나 이러한 정보를 얻기 위한 한 가지 방법은 dnsmasq에 종료 신호를 보내고 처리한 DNS 쿼리 수에 대한 세부 정보를 제공하는 출력 로그를 검사하는 것입니다.
dnsmasq가 제대로 작동하는지 확인하려면 처음에 systemctl 명령을 사용하여 활성화해야 합니다.
sudo systemctl status dnsmasq
“서비스의 현재 상태가 ‘활성’으로 표시되는 경우 서비스 기능을 종료하려면 후속 명령을 실행해야 합니다.
sudo pkill -USR1 dnsmasq
`journalctl` 유틸리티를 사용하여 dnsmasq의 로그를 검색하여 텍스트 파일에 저장합니다.
sudo journalctl -u dnsmasq > ~/cache.txt
궁극적으로 “cat” 또는 “less” 등의 도구를 활용하여 파일의 내용을 검사해야 합니다.
cat ~/cache.txt
Linux에서 DNS 캐시를 플러시하는 방법
도메인 이름 시스템(DNS) 캐시를 플러시하는 작업은 컴퓨팅 장치에서 저장된 DNS 레코드 정보를 제거하므로 DNS 서버에 쿼리를 보내 최신 DNS 데이터를 획득해야 합니다.
Linux에서 DNS(도메인 이름 시스템) 캐시를 지우려면 다음 단계를 따르세요:
systemd-resolved 사용
“`systemd-resolved`에 의해 유지되는 캐시된 DNS 정보를 제거하기 위해 `resolvectl` 명령을 사용할 수 있습니다.
sudo resolvectl flush-caches
17.04 또는 18.04 운영 체제를 사용하는 Ubuntu 시스템에서 다음 명령을 실행하여 systemd-resolved를 사용하여 DNS 확인자 캐시를 제거하십시오:
sudo systemd-resolved --flush-caches
Linux에서 nscd DNS 캐시 플러시
NSCD 서비스를 다시 시작하는 것은 DNS 캐시를 지우는 데 효과적인 방법입니다. 이를 위해 다음 명령을 실행할 수 있습니다:
sudo /etc/init.d/nscd restart
명령과 함께 -g 플래그를 사용하여 컴퓨터에 저장된 로컬 캐시가 영구적인지 확인하여 그 존재 여부를 확인합니다.
sudo nscd -g
필요한 경우 “-i” 플래그와 “nscd” 명령을 함께 사용하여 레코드를 제거합니다(-i는 “무효화”를 의미함).
sudo nscd -i hosts
dnsmasq DNS 캐시 제거
dnsmasq에 저장된 DNS 캐시는 휘발성 메모리 영역에 위치하기 때문에 쉽게 지울 수 있으며, 따라서 서비스를 종료한 후 다시 활성화하기만 하면 기록된 모든 데이터를 포괄적으로 제거할 수 있습니다.
DNSMASQ 서비스를 다시 초기화하려면 systemctl 유틸리티를 사용하여 다음 명령을 실행하세요:
sudo systemctl restart dnsmasq
특정 작업을 실행하려면 필요한 지침을 입력하세요.
service dnsmasq restart
DNS 캐시가 곧 지워질 예정이므로 필요한 경우 관리자 자격 증명을 입력하세요. 그러면 DNS 서버인 dnsmasq가 재부팅되어 이전의 모든 DNS 구성이 지워집니다.
DNS(도메인 이름 시스템) 캐시를 지운 후에는 잔여 캐시 항목을 검사하고 정보가 효과적으로 제거되었는지 확인하는 것이 좋습니다. 이를 위한 한 가지 방법은 Linux 운영 체제에서 네트워킹을 위해 널리 사용되는 진단 도구인 “dig” 명령을 사용하는 것입니다. “dig” 명령의 출력을 살펴보면 쿼리에 소요된 시간(밀리초 단위로 측정)을 확인할 수 있으며, 값이 0보다 크면 캐시가 성공적으로 비워졌음을 나타냅니다. 반대로 값이 0이면 도메인 레코드가 캐시 내에 남아 있음을 나타냅니다.
dig google.com
Google Chrome의 DNS 캐시 지우기
정기적으로 사용하는 인터넷 브라우저에는 DNS(도메인 이름 시스템) 요청 레코드도 저장됩니다. 주소창에 URL을 입력하면 소프트웨어가 브라우저의 자체 캐시에서 기존 캐시 항목을 찾습니다.그래도 실패하면 로컬 시스템 캐시에 저장된 DNS 레코드를 참조합니다. 웹 브라우저의 DNS 캐시를 지우는 것이 시스템 수준 캐시보다 우선하므로 가장 중요합니다.
앞서 설명한 내용을 설득력 있는 언어로 설명하겠습니다. 프로세스를 설명하기 위해 Google Chrome에서 DNS(도메인 이름 시스템) 캐시를 삭제하겠습니다. 이 절차는 다양한 웹 브라우저에서 수행할 수 있으므로 온라인 검색을 통해 선호하는 브라우저에 적용되는 방법을 확인하는 것이 현명할 것입니다.
브라우저의 주소창에 앞서 언급한 URL을 입력하고 입력 버튼을 눌러 해당 URL로 이동하면 Chrome용 네트워크 내부 페이지로 이동합니다.
‘호스트 캐시 지우기’를 클릭하면 Google Chrome 웹 브라우저에 저장된 모든 DNS(도메인 이름 시스템) 레코드가 삭제됩니다.
Linux는 네트워킹을 배우기에 가장 좋은 OS입니다
Linux는 처음에는 복잡해 보일 수 있지만, 조금만 시간을 투자하여 작동 방식을 이해하면 Windows나 macOS를 능가하는 탁월한 특성을 발견할 수 있습니다.
Linux는 다양한 네트워크 환경에서의 다용도성과 적응성으로 인해 온라인 서버의 주요 운영 체제가 되었습니다. 따라서 컴퓨터 네트워크에 대한 지식을 습득하고 컴퓨터 작동 방식의 기본 원리를 이해하려는 개인에게 탁월한 선택이 될 수 있습니다.