dns
DNS (Domain Name System/Service)
DNS (도메인 네임 시스템/서비스)
1. DNS 란?
- 도메인 이름(예: www.naver.com)을 IP 주소(예: 223.130.200.107)로 바꾸어 주는 시스템
- 'Host 이름(도메인 이름)'과 'IP 주소'을 서로 연결시켜주는, 분산 구조화된 트리구조로
- 호스트에 대한 이름-주소 변환을,
- 체계적이고, 안정적이고, 효율적으로 하기 위해,
- 계층적이고, 분권화된, 클라이언트/서버 구조의, 데이타베이스 시스템
2. DNS 출현 역사
- 1970년대 (호스트 테이블 관리 네임 체계)
- 초기에 각 호스트 마다 저마다 호스트 테이블 관리
- 그 후에 하나의 호스트 테이블을 중앙에 두고, 이를 각 지역 또는 호스트에서 파일 전송 받아 현행화 관리하던 것이 - 1980년대 이후 (DNS 네임 체계)
- 분권화된 도메인 개념에 기초하여, 이름주소변환 분산 체계화 (DNS)로 전환되기 시작
3. DNS 프로토콜 동작 (DNS 메시지 교환)
- DNS 질의 및 DNS 응답을 위한 사용 포트 및 tranport 프로토콜
- DNS 포트 번호 : 53
- tranport 프로토콜 : 대부분 UDP를 통해 전달
. 메세지 크기가 512 바이트 이하이면 UDP 사용, 그 이상이면 TCP 사용
. 즉, 단순 질의/응답은 UDP, 영역전달 및 큰 이름 요청/응답 등은 TCP 사용 - DNS 네임서버 간 레코드 교환 (영역 전달) : 메세지 크기가 큰 경우 임
- RR(자원레코드) 집합을 네임서버 간에 복사 (마스터 네임서버 → 종속 네임서버)
. 네임서버 간에 정보의 동기화 유지 목적
- Zone Transfer와 같이 대용량 전송이 요구되는 네임서버 간에는 TCP로 전달 - DNS 동작 과정
- 웹 브라우저에 www.hanamon.kr을 입력한다.
- 웹 브라우저는 이전에 방문한적 있는지 찾는다.
1) 브라우저 캐시 확인
2) OS 캐시 확인
3) 라우터 캐시 확인
4) ISP 캐시 확인 (Recursive DNS Server) - ISP에서 DNS Iterative하게 쿼리를 날린다.
- ISP는 Authoritative DNS 서버에서 최종적으로 IP 주소를 응답받는다.
- ISP는 해당 IP 주소를 캐시한다.
- 웹 브라우저에게 응답한다.
4. DNS 특징
- 인터넷상의 대규모 자원에 대한 명칭부여와 분산화
- Hierarchical, Distributed, Scalable 한 데이터베이스
- 루트 노드로부터 '최대 128개 레벨'을 갖는 역 계층구조 - 영문이름을 쉽고 상징적인 하나 이상의 별칭(com, net 등)으로 관리
- 친숙한 영문이름(www.naver.com 등)을 컴퓨터가 이해하는 IP 주소로 변환 - 하나의 영문이름에 여러 개의 IP 주소를 집합시켜 트래픽의 부하분산 효과 가능
5. DNS 기능 요소
- 네임 공간(네임 구조) 생성
- 구조화된 공간적 체계: 이름의 유일성을 보장하는 구조, 네임 간의 일관성 유지 (불일치 없도록 네임 유효성 확립)
- 발생시점 : 일반적으로, 처음 한번만 만들어짐 - 네임 등록 관리
- 유일하게 네임을 추가 또는 할당할 수 있도록 함, 이름 및 숫자 쌍의 목록 관리
- 발생시점 : 네임이 생성,변경될 때에 만 일어남 - 네임 변환
- 네임 식별명과 기계적인 주소를 연결 변환시켜 주는 것, 이름을 숫자로 변환 또는 그 역변환
- 발생시점 : 필요시 수시 일어남
6. DNS 구성 요소
- 도메인 이름 공간 (Domain Name Space)
- 도메인 이름공간은 트리구조로 구성된 분산 데이타베이스
. 각 도메인은 이름이 부여되고 도메인 내에는 다시 하부의 서브 도메인을 가질 수 있음 - 네임 서버 (Name Server) - DNS 서버
- 일종의 프로그램으로써 클라이언트/서버 메커니즘 구조에서 서버에 해당.
. 도메인 이름 공간에 대한 정보를 저장하며, 계층적으로 구성. . Root DNS(ICANN이 관리), Top-Level Domain DNS 서버(도메인 등록 기관이 관리), Second-Level Domain DNS 서버(일반적으로 도메인/호스팅 업체의 네임 서버) - 변환기 (Resolver)
- 질의를 생성하며 네트워크를 통하여 서버로 질의를 전송하는 라이브러리 루틴을 말함
. 이는 클라이언트 프로그램에 해당.
7. DNS 도메인 구성
- Internet에 대한 주소공간은 도메인으로 나누어짐
- 도메인이 구성되는 구조는 '트리구조'이며,
- 그 구조의 '최상위'는, "."으로 표현되는 root 도메인이 있고,
- 그 바로 밑에 'Top Level Domain' 들이 있음
- 'Top Level Domain 구분'은, 크게 generic (gTLD) 및 country (ccTLD) 등으로 나뉘어짐
- gTLD: com, org, net, gov, mil, info, biz
- ccTLD: kr(한국), jp(일본), us(미국), cn(중국), fr(프랑스), uk(영국)
- 레이블(label)규칙
- 각 레이블은 최대 63개 문자(알파벳, 숫자, 하이픈hyphen(-) 만 가능, 대소문자 구분 없음
- 한글은 17자 이내 - 도메인 규칙
- 각 레이블은 구분자 점(.)으로 연결되어 최대 길이는 255 문자
- 도메인 이름: redisgate.kr
- 호스트 이름: www
- FQDN(Fully Qualified Domain Name): www.redisgate.kr - 국내 도메인 관리
- TLD 밑에 sub-domain으로 co(일반회사), ac(교육기관), re(연구기관), go(정부기관) 등.
. co.kr, ar.kr, re.kr, go.kr 등.
- 지역 도메인: seoul.kr
- DNS 도메인 관리 기구
- 전세계: ICANN (Internet Corporation for Assigned Names and Numbers 국제인터넷주소관리기구) - 1998년 11월 설립
- 대한민국: 한국인터넷정보센터 KRNIC (KoRea Network Information Center) - 1999년 6월 설립
- 일본: JPNIC - https://www.nic.ad.jp/
- 중국: CNNIC - https://cnnic.cn/ https://www.cnnic.com.cn/
참고 사항
- CMD> nslookup www.naver.com IP 주소를 확인할 수 있다.
- Linux에서 nslookup, host 명령을 설치하는 방법
- [RHEL/Centos ] $ sudo yum install bind-utils
- [ubuntu] $ sudo apt-get install dnsutils - DDNS (Dynamic DNS): 실시간으로 DNS를 갱신하는 방식이다. 주로 도메인의 IP가 유동적인 경우 사용된다.
- DNS over TLS (DoT): DNS over TLS는 사용자와 DNS서버간의 통신을 암호화하여 DNS요청을 감청 할수 없게 만들고 중간자 공격(man in the middle attack, MITM)을 차단 하여 DNS 변조 공격의 가능성을 줄여준다. 포트는 TCP 853번 포트를 사용한다. TLS가 기본적으로 TCP 기반이라 TCP 포트만 사용된다.
- DNS over DTLS: TLS 대신 DTLS를 사용하는거이며, DNS over TLS랑 비슷하나 차이점이 있다면 DTLS가 기본적으로 UDP 기반이라 UDP 853번 포트를 사용한다.
- DNS over HTTPS (DoH): HTTPS를 사용해 사이트를 방문하고 있을때도 DNS의 요청은 암호화가 되지 않는다. 즉 전송되는 패킷 자체는 암호화되지만 패킷의 목적지는 평문으로 노출되어 있고 프라이버시 보호가 안 된다는 문제점이 있는데 DNS over HTTPS는 이러한 문제점을 해결하여 준다. TCP 443번 포트를 사용한다.
- DNS over QUIC: DTLS 소켓 대신에 QUIC 프로토콜에 맞게 커스터마이징된 UDP 보안 소켓을 이용하여 DNS 통신을 암호화한다. QUIC가 HTTP/3로 통합되었기에 DNS over HTTP/3 (DoH3)라고도 불린다.
- DNS 레코드 종류
- SOA(Start of Authority): 권한 시작 지정하고 권한이 있는 서버
- A(Host Record): FQDN과 IPv4 주소 연결
- AAAA: FQDN과 IPv6 주소 연결
- CNAME(Canonical Name): 도메인 이름과 연결되는 가상 도메인 이름
- MX(Main Exchange Record): 주어진 사서함에 도달할 수 있는 라우팅 정보 제공
- SRV(Service Resources): 비슷한 TCP/IP 서비스를 제공하는 다수의 서버 위치 정보를 제공
- 주요 DNS 목록
- KT: 168.126.63.1, 211.45.150.201
- LG유플러스: 164.124.107.9
- SK브로드밴드: 210.220.163.82
- google: 8.8.8.8
- Cloudflare: 1.1.1.1
출처/참고자료
- [정보통신기술용어해설] DNS Domain Name System 도메인 이름 시스템
- [정보통신기술용어해설] Domain Name 인터넷 도메인, 도메인 이름
- [위키백과] DNS
- [나무위키] DNS
- [넷매니아즈] Google DNS 소개
- 8.8.8.8 IP가 여러 개 있을 수 있는 이유
일반적으로 Public IP 주소를 가지는 노드는 전지구상에 하나만 존재하는게 일반적입니다. 예를 들어, 네이버 서버 주소인 222.122.195.5는 국내 네이버 서버만이 가지고 있는 주소입니다.
하지만 "IP Anycast"라는 개념을 이용하면 본 제한을 극복할 수 있습니다. 전세계 여러 지역에 동일 IP 주소를 가지는 서버를 분산 배치시키고, 서버에 접속하는 각 지역의 단말은 IP routing (IGP로는 OSPF, IS-IS, EGP로는 eBGP가 대표적)의 "shortest path 알고리즘"에 따라 가장 가까운 곳의 서버와 통신 할 수 있도록 해 주는 것입니다.
즉, IP 라우팅망은 shortest path 알고리즘에 따라 동일 IP를 가진 노드(Destination IP 주소)가 여러개라 하더라도 그 중에 사용자(Source IP 주소)와 가장 가까운 곳에 위치한 노드로 패킷을 전달합니다. 여기서 "가장 가까운"이란 라우팅 프로토콜의 관점으로 OSPF/IS-IS에서는 Total Link Cost이고 eBGP에서는 AS-PATH가 대표적이라 보시면 됩니다.
Google DNS는 이 IP Anycast 원리를 사용하고 있는데요. 아래 그림의 예와 같이 각 대륙별로 8.8.8.8 주소를 가지는 Google DNS 서버를 위치시키십니다. 그리고 IP Anycasting에 의해서 각 대륙에 위치한 사용자가 목적지 주소(Destination IP address)를 8.8.8.8로 하여 패킷(DNS 메시지)을 보내면 IP 망에서는 Shortest Path 알고리즘에 의해서 그 사용자와 가장 가까운 위치에 있는 Google DNS 8.8.8.8로 패킷이 라우팅 되어 가게 됩니다.
- [하나몬] DNS란? (도메인 네임 시스템 개념부터 작동 방식까지)
- [꿀뽀킹] DNS(Domain Name System) 란?
- [테크유람] DNS를 활용한 로드 밸런싱
- [CIRANEWS] How th DNS works 유튜브 동영상 (2분)
Email
답글이 올라오면 이메일로 알려드리겠습니다.