DNS 서버는 공인 IP 주소와 이에 연결된 호스트명 데이터베이스를 보유한 컴퓨터 서버로, 대부분의 경우 요청받은 도메인 이름을 IP 주소로 해석(변환)하는 역할을 합니다. DNS 서버는 특수한 소프트웨어를 실행하며, 서로 간에 전용 프로토콜을 통해 통신합니다.
DNS 서버는 '네임 서버(nameserver)' 또는 '도메인 네임 시스템(DNS) 서버' 등 다양한 명칭으로 불리기도 합니다.
DNS 서버의 목적
lifewire.com 같은 도메인이나 호스트명은 151.101.2.114처럼 숫자로 된 IP 주소보다 훨씬 기억하기 쉽습니다. 그래서 웹사이트에 접속할 때는 https://www.lifewire.com처럼 URL만 입력하면 됩니다.
하지만 컴퓨터와 네트워크 장비는 인터넷에서 서로를 찾을 때 도메인 이름으로는 잘 작동하지 않습니다. 웹사이트가 네트워크(인터넷)상 어느 서버에 위치하는지를 나타내는 숫자 형식의 IP 주소를 사용하는 것이 훨씬 효율적이고 정확합니다.
DNS 서버는 사람과 컴퓨터 사이에서 소통을 돕는 다리 역할을 합니다.
DNS 서버가 DNS 쿼리를 처리하는 방법
브라우저 주소창에 웹사이트 주소를 입력하고 Enter 키를 누르면, DNS 서버가 방문하려는 주소를 찾기 위해 작동하기 시작합니다. DNS 서버는 여러 서버에 DNS 쿼리를 보내는데, 각 서버는 입력한 도메인 이름의 서로 다른 부분을 해석합니다. 쿼리가 전달되는 서버는 다음과 같습니다.
- DNS 리졸버(DNS Resolver): 도메인 이름을 IP 주소로 변환해 달라는 요청을 받습니다. 방문하려는 사이트가 인터넷상 실제 어디에 있는지 찾아내는 실질적인 작업을 수행합니다.
- 루트 서버(Root Server): 첫 번째 요청을 받아, 해당 사이트 정보를 저장하고 있는 최상위 도메인(TLD) 서버의 주소를 DNS 리졸버에게 알려줍니다. 최상위 도메인은 주소창에 입력한 도메인 이름 중 .com이나 .net 부분에 해당합니다.
- TLD 서버: DNS 리졸버가 이 서버에 쿼리를 보내면, 사이트가 실제로 등록된 권한 있는 네임 서버(Authoritative Name Server)를 반환합니다.
- 권한 있는 네임 서버(Authoritative Name Server): 마지막으로 DNS 리졸버가 이 서버에 쿼리하여 방문하려는 웹사이트의 실제 IP 주소를 확인합니다.
IP 주소가 반환되면, 방문하려던 웹사이트가 웹 브라우저에 표시됩니다.
여러 번의 왕복 과정처럼 들리지만 실제로 맞습니다. 다만 이 모든 과정이 매우 빠르게 처리되기 때문에 원하는 사이트를 거의 지연 없이 열어볼 수 있습니다.
위 과정은 사이트를 처음 방문할 때 일어납니다. 같은 사이트를 다시 방문할 때 웹 브라우저의 캐시가 삭제되지 않았다면 이 모든 단계를 거칠 필요가 없습니다. 대신 브라우저는 캐시에서 정보를 가져와 더욱 빠르게 웹사이트를 표시합니다.
주 DNS 서버와 보조 DNS 서버
대부분의 경우 인터넷 서비스 제공업체(ISP)에 연결하면 라우터나 컴퓨터에 기본(primary) DNS 서버와 보조(secondary) DNS 서버가 설정됩니다. 두 개의 DNS 서버를 두는 이유는 하나에 장애가 발생했을 때 두 번째 서버가 호스트명 해석을 대신 처리하기 위해서입니다.
누구나 사용할 수 있는 공개 DNS 서버도 여럿 있습니다. 네트워크가 연결되는 DNS 서버를 변경하고 싶다면 최신 목록을 제공하는 무료·공개 DNS 서버 목록과 DNS 서버 변경 방법을 참고하세요.
DNS 서버 설정을 변경해야 하는 이유
DNS 서버에 따라 접속 속도가 더 빠른 경우가 있습니다. 이는 주로 해당 서버와의 물리적 거리에 따라 달라집니다. 예를 들어 ISP의 DNS 서버가 구글의 DNS 서버보다 가깝다면, 외부 서버보다 ISP 기본 서버를 사용할 때 도메인 이름이 더 빨리 해석될 수 있습니다.
어떤 웹사이트도 로드되지 않는 연결 문제가 발생한다면 DNS 서버에 오류가 있을 가능성이 있습니다. DNS 서버가 입력한 호스트명에 연결된 올바른 IP 주소를 찾지 못하면 해당 웹사이트를 찾아 로드할 수 없습니다.
라우터에 연결된 컴퓨터나 스마트폰, 태블릿 등 기기는 라우터와 다른 DNS 서버 세트를 사용해 인터넷 주소를 해석할 수 있으며, 이 경우 기기의 설정이 라우터 설정보다 우선 적용됩니다.
인터넷 서버 정보 확인 방법
Windows PC에서는 nslookup 명령어로 자신의 DNS 서버를 조회할 수 있습니다.
먼저 명령 프롬프트(Command Prompt)를 열고 다음을 입력합니다.
nslookup lifewire.com
이 명령은 다음과 비슷한 결과를 반환합니다.
Name: lifewire.com
Addresses: 151.101.2.114
151.101.66.114
151.101.130.114
151.101.194.114
위 예시에서 nslookup 명령은 lifewire.com 주소가 변환되는 IP 주소(이 경우 여러 개)를 알려줍니다.
DNS 루트 서버
인터넷에는 도메인 이름과 연결된 공인 IP 주소의 전체 데이터베이스를 저장하는 13개의 중요한 DNS 루트 서버가 있습니다. 이 최상위 DNS 서버들은 알파벳 첫 13글자를 따 A부터 M까지 이름이 붙어 있습니다. 이 중 10개는 미국에, 나머지는 각각 런던, 스톡홀름, 일본에 위치합니다.
DNS 루트 서버 목록은 인터넷 할당 번호 관리기관(IANA)에서 관리하므로, 관심이 있다면 직접 확인해 볼 수 있습니다.
DNS 서버 설정을 바꾸는 악성코드 공격
DNS 서버를 겨냥한 악성코드 공격은 결코 드물지 않습니다. 악성코드는 DNS 서버 설정을 변경하는 방식으로 컴퓨터를 공격할 수 있으므로 항상 백신 프로그램을 실행해야 합니다.
예를 들어 컴퓨터가 구글의 DNS 서버(8.8.8.8, 8.8.4.4)를 사용 중이고 은행 웹사이트를 열었다면, 익숙한 URL을 입력했을 때 당연히 은행 사이트로 이동할 것이라 기대하게 됩니다.
그러나 악성코드가 시스템 공격 후 사용자 몰래 DNS 서버 설정을 변경했다면, 더 이상 구글의 DNS 서버에 접속하지 않고 은행 웹사이트로 위장한 해커의 서버에 접속하게 됩니다. 이 가짜 은행 사이트는 진짜와 똑같이 보일 수 있지만, 은행 계좌에 로그인해 주는 대신 입력한 아이디와 비밀번호를 수집해 해커에게 계좌 접근에 필요한 핵심 정보를 넘겨줍니다.
DNS 서버 설정을 탈취하는 악성코드 공격은 인기 있는 웹사이트에서 광고로 가득한 사이트로 트래픽을 돌리거나, 컴퓨터가 바이러스에 감염됐으니 광고하는 소프트웨어를 구매해야 한다고 겁을 주는 가짜 사이트로 유도하기도 합니다.
갑자기 화면에 "컴퓨터가 바이러스에 감염됐으니 소프트웨어를 구매해 제거하라"며 깜빡이는 경고창을 띄우는 웹사이트에 속지 마세요. 이런 사이트는 언제나 사기입니다.
DNS 공격으로부터 스스로를 보호하는 방법
DNS 설정 공격의 피해자가 되지 않으려면 두 가지를 실천해야 합니다. 첫째는 백신 소프트웨어를 설치해 악성 프로그램이 피해를 입히기 전에 차단하는 것입니다.
둘째는 자주 방문하는 중요한 웹사이트의 모습에 세심한 주의를 기울이는 것입니다. 사이트에 접속했을 때 이미지가 모두 다르거나 색상이 바뀌었거나, 메뉴가 이상하거나, 오타가 발견되거나(해커는 철자에 서툴 수 있습니다), 브라우저에서 '잘못된 인증서' 메시지가 뜬다면 가짜 웹사이트에 접속한 것일 수 있습니다.
DNS 리디렉션의 긍정적 활용
트래픽을 리디렉션하는 이 기능은 긍정적인 용도로도 활용될 수 있습니다. 예를 들어 OpenDNS는 성인 사이트, 도박 사이트, 소셜 미디어 사이트 등 네트워크 관리자나 조직이 사용자의 접속을 원치 않는 사이트로 향하는 트래픽을 차단해 '차단됨' 메시지가 있는 페이지로 보낼 수 있습니다.
FAQ
- 내 지역에 가장 적합한 DNS 서버는 어떻게 찾나요?
다양한 DNS 서버를 테스트하려면 Windows/Linux용 GRC DNS Benchmark나 Mac용 Namebench 같은 벤치마킹 도구를 사용하세요. DNS 서버를 변경하면 인터넷 속도를 크게 높일 수 있습니다. - 'DNS 서버가 응답하지 않습니다' 오류는 어떻게 해결하나요?
DNS 캐시를 삭제하고 Windows 네트워크 문제 해결사를 실행하세요. 최근 백신 소프트웨어를 설치했다면 일시적으로 비활성화해 도움이 되는지 확인해 보세요. 그래도 해결되지 않으면 DNS 서버를 변경해 보세요. - Windows에서 DNS 캐시는 어떻게 삭제하나요?
명령 프롬프트를 열고 ipconfig /flushdns를 입력하면 DNS 캐시가 삭제됩니다. Microsoft PowerShell에서는 Clear-DnsClientCache 명령으로 캐시를 삭제할 수 있습니다. - DNS 루트 네임 서버는 왜 13개뿐인가요?
DNS가 13개의 루트 네임 서버를 사용하는 것은 IPv4(Internet Protocol version 4)의 한계 때문입니다. 13이라는 숫자는 네트워크 안정성과 성능 사이의 절충안으로 선택되었습니다.