DNS resolver이란?
Dns의 원리를 사용해 IP를 찾아내는 역할을 하는 클라이언트로 볼 수 있다.
hosts.conf 파일이란?
특정 도메인에 대한 IP를 찾을 때, 주소 값을 어디에서 찾을지 결정하는 파일이다.
resolve.conf 파일이란?
OS에서 DNS resolver를 구성할 때 사용하는 파일이다. 사용하고자 하는 네임서버를 기록해둔다.
resolv 파일이 다음과 같이 구성되어있다고 상상해보자.
$cat /etc/resolv.conf
search americano.com cafelatte.com cappuccino.com
여기서 search는 순차적으로 조회해볼 name server를 말한다. name server는 도메인에 맞는 ip 주소를 찾을 때 사용하는 서버를 말한다.
resolv 파일이 실제로 어떻게 동작해보는지 순서를 이해해보자.
front라고 지어진 도메인을 호출한다고 가정하면 이해가 수월하다.
front를 호출하면, DNS resolver는 search에 기록된 name server에 순서대로 질의한다.
- front.americano.com
- front.cafelatte.com
- front.cappuccino.com
- ...
이렇게 호스트 이름과 name server를 붙여서, fqdn을 만든다. 그리고 순차적으로 질의해서, ip 주소를 찾아낸다.
나는 non-fqdn으로 엔드포인트를 사용할 때, ip 주소를 찾아내는 방법으로 이해했다.
FQDN vs Non-FQDN
FQDN (Fully Qualified Domain Name)이란, 호스트 이름과 도메인 이름을 합한 전체 도메인을 말한다. 주소의 마지막에 . (점)이 붙은 경우도 FQDN으로 볼 수 있다. 그러나 . (점)은 생략이 가능하다.
Non-FQDN은 FQDN의 반대되는 개념이다. PQDN(Partially Qualified Domain Name)이라고도 부른다. FQDN의 가장 왼쪽에 위치한 레이블을 말한다.
예를 들어, item.americano.com이라는 주소가 있다고 생각해보자.
item.americano.com은 FQDN이다.
item은 Non-FQDN, PQDN이다.
그래서 애플리케이션에서 Non-FQDN인 item이라는 엔드포인트만으로 통신을 하려면, DNS resolver가 이 주소를 item.americano.com으로 바꿔서, IP를 찾아내는 작업이 필요하다.
그 역할을 resolve.conf 파일이 돕는다.
reverse DNS
일반적으로 DNS를 조회한다는 것은, 도메인으로 ip를 찾아내는 과정을 말한다. reverse DNS은 그 반대이다.
IP 주소로 DNS를 찾아내는 것을 말한다.
주로 이메일이 스팸 메일인지 판단하는 기능에로 사용된다.
DNS의 동작 순서
americano.com이라는 주소를 찾아가는 여정을 대략.. 다음과 같이 이해해보자.
-> 브라우저는 도메인을 입력 받으면 캐시에 저장되어있는지 확인하고
-> 없으면 OS의 resolver에게 물어보고
-> OS 캐시에도 없으면 resolver는 IP를 찾기위해 여정을 떠난다.
-> 일단, root 서버에게 주소를 물어보고, 주소의 마지막에 붙은 TLD 서버 주소를 응답받는다. (ex. com)
-> 그다음 resolver는 TLD 서버한테 주소를 다시 물어본다. 그러면 TLD 서버는 authoritative name server IP 주소를 알려준다. (ex. americano)
-> resolver는 이렇게 americano.com이라는 도메인 주소의 IP를 알아낸다.
GSLB이란?
DNS 요청 시, 사용자 요청을 어떤 데이터 센터로 보낼지 결정할 때 사용된다. 사용자 요청에서 가장 가까운 데이터 센터로 트래픽을 보내는 용도 등으로 사용된다.
DNS는 기본적으로 Round Robin 방식으로 라우팅을 한다. 반면 GSLB는 가중치 기반으로 Round Robin이 가능하다. 예를 들어, 서울 리전에는 트래픽을 60%를 보내고, 도쿄 리전에는 트래픽을 40%를 보내는 식으로 조정이 가능하다.
GSLB는 서버 상태도 모니터링하기 때문에, 트래픽이 덜 몰리는 서버로 요청을 보낼 수도 있다.
LDNS이란?
로컬 DNS이다. ㅎㅎ
<끝>
참고
https://www.baeldung.com/linux/etc-resolv-conf-file
'소프트웨어-이야기 > 프로그래밍 언어와 프레임워크' 카테고리의 다른 글
[Spring] 유틸리티 클래스에 빈 생성자를 만들어야하는 이유 (0) | 2024.03.10 |
---|---|
12월의 추천 서적: 마이크로서비스 아키텍처 구축 가이드 (0) | 2023.12.03 |
개발자를 위한 최소한의 JVM 메모리 트러블 슈팅 사전 지식 (0) | 2023.08.02 |
[ChatGPT] Function calling (0) | 2023.07.25 |
ChatGPT에게 IfNecessary, IfNeeded 함수명의 차이를 물어보다. (0) | 2023.03.04 |