개요
DNS가 무엇인지 Linux에서 DNS가 어떻게 동작하는지 알아보겠습니다.
DNS(Domain Name System)?
사람이 기억하기 쉬운 URL 형태의 주소를 컴퓨터가 사용하는 주소인 IP로 변경해 주는 System입니다.
예를 들어 www.google.com의 주소를 142.251.220.4로 변경을 해줍니다.
Domain이란?
Domain은 website의 주소를 의미합니다. 원칙 적인 구조는 아래와 같습니다.
서브도메인. 도메인명. TLD.
.
Root Domain라고 하여 가장 최상단의 Domain입니다. 그러나 생략이 되어 표기가 됩니다.
com
Top Level Domain(TLD)라고 하여 도메인의 유형을 나타냅니다.
"com"은 상업적 목적의 사이트를, "org"는 비영리 조직의 사이트를, "gov"는 정부 관련 사이트를, "edu"는 교육 기관의 사이트를 나타내는 등 다양한 TLD가 있습니다.
Second Level Domain(SLD)라고 합니다. 이는 구매하는 도메인 이름의 핵심 부분입니다.
www
이 부분은 '서브도메인'이라고 합니다. www는 웹 사이트를 가리킵니다. 서브도메인은 도메인의 일부를 나타내며, 특정 서비스나 웹사이트를 가리키는 데 사용됩니다. 예를 들어, mail.google.com은 이메일 서비스를, ftp.google.com은 파일 전송 프로토콜 서비스를 가리킬 수 있습니다.
DNS의 동작 원리
우리가 ping으로 www.google.com 치면 어떠한 과정을 거쳐서 142.251.220.4를 찾는지 알아보겠습니다.
전체 과정을 비유로 설명하면
www.google.com의 IP 주소를 찾기 == 기업의 어느 부서의 김 차장의 전화번호 찾기
입니다.
차근차근 과정을 알아보겠습니다.
1차 검색 : /etc/hosts
내가 가지고 있는 IP리스트(/etc/hosts)부터 검색하자.
이 과정은 핸드폰의 전화 번호부 찾는 것과 동일하다고 보시면 됩니다.
/etc/hosts의 파일을 보면 "IP domain" 이 쌍으로 기록이 되어있습니다.
컴퓨터는 domain의 ip주소 검색 시 여기에 기록된 정보를 가장 먼저 찾습니다.
참고로 /etc/hosts의 내용의 domain 부분은 별칭임으로 꼭 Domain형식에 맞출 필요는 없습니다.
$cat /etc/hosts/
$nslookup www.google.com
그래서 악성코드에 감염되었는지 여기의 주소가 변경되어 피싱 사이트에 강제로 접속하게 할 수도 있습니다.
개발자의 경우 domain이 아직 나오지 않았을대 여기에 정보를 기록해서 미리 개발을 할 수 있습니다.
2차 검색 : DNS 서버에 Query
컴퓨터는 /etc/hosts에서 내가 원하는 Domain의 IP를 찾지 못하면 DNS Server에 질의를 하여 Domain의 IP를 달라고 요청을 합니다. 다음의 과정을 거저 처서 Domain 주소의 IP를 찾습니다.
참고로 DNS Server는 여러 개로 분리가 되어있습니다. 왜냐하면 한 곳에서 모든 걸 관리할 수 없기 때문입니다.
예를 들어 우리가 보험을 하나 해지하려고만 해도 전화를 3번이나 걸어야 합니다.
1. 해지 담당자 번화가 있는가? 없네.. 그럼 대표번호로 전화를 걸어서 알아보자
2. 대표 번호에 전화를 걸면 "고객님 해지 부서 전화번호 알려드리겠습니다"
3. 해제 부서에 전화를 걸면 "고객님 해지 담당자의 전화번호를 알려드리겠습니다"
4. 해지 담당자에게 전화를 걸며 "네 고객님 해지 담당자입니다..... 솰라솰라~"
DNS 동작도 이와 동일합니다.
Recursive DNS Server
인터넷 사용자가 가장 먼저 접근하는 DNS 서버
3개의 DNS 서버(Root, TLD, Authorize)를 매번 거친다면 효율이 떨어집니다. 그래서 한 번 거친 후 얻은 데이터를 일정 기간(TTL/Time to Live) 동안 Cache 형태로 저장하는 서버입니다. 직접 도메인과 IP 주소의 관계를 기록/저장/변경하지는 않고 Cache만을 보관하기 때문에, Authoritative와 비교되는 의미로 반복의 Recursive가 붙습니다.
대표적인 게 KT/LG/SK와 같은 ISP(통신사) DNS 서버가 있고, 브라우저 우회 용도로 많이 쓰는 구글 DNS, 클라우드플레어와 같은 Public DNS 서버가 있습니다.
Root DNS Server
ICANN이 직접 관리하는 절대 서버로, TLD DNS 서버 IP들을 저장해 두고 안내하는 역할을 합니다.
TLD(최상위 도메인) DNS Server
Domain 등록 기관(Registry)이 관리하는 서버로, Authoritative DNS 서버 주소를 저장해 두고 안내하는 역할을 합니다.
Authoritative DNS Server
실제 개인 도메인과 IP 주소의 관계가 기록/저장/변경되는 server입니다. 그래서 권한의 의미인 Authoritative가 붙습니다.
일반적으로 Domain/Hosting 업체의 ‘DNS Server’를 말하지만, 개인 DNS 서버 구축을 한 경우에도 여기에 해당합니다.
[추가] 개인 DNS Server 구축
[DNS] ubuntu 22.04에 DNS서버 구축 하기
정리
사람이 읽을기 쉬운 site의 주소를 domain이라고 하며 이 domain을 IP주소로 연결하여 관리하는 Server를 DNS(Domain Name System) Server라고 합니다.
client가 domain을 검색할 때는 ROOT DNS, TLD DNS, Authorize DNS 등을 거쳐서 domain의 IP를 알아낼 수 있습니다.
Next Post
'Cloud > k8s-CKA' 카테고리의 다른 글
[CKA] - 시험 틀린 문제 (0) | 2023.07.19 |
---|---|
[CKA] 27. CNI란? (0) | 2023.07.16 |
[CKA] 25. Docker Network 구조 (0) | 2023.07.10 |
[CKA] 24. k8s network를 위한 기초 (0) | 2023.06.29 |
[CKA] 23. k8s cluster 관리 (0) | 2023.05.07 |