목표
어디까지나 웹 개발자를 위한 DNS
- DNS의 기본 개념을 이해한다.
- DNS 캐시의 개념을 이해한다.
- DNS 관련 오류의 원인과 해결방법을 알아본다.
- CDN과 DNS의 연관성을 이해한다.
- DNS의 보안에 대해 알아본다.
DNS 기본 개념
도메인 이름
- 도메인 이름(Domain Name)은 인터넷 상에서 고유한 식별자로 사용되는 문자열
- 도메인 이름은 계층 구조로 되어 있으며, 점으로 구분된 각 레벨 계층으로 구성
- url.com
이라는 도메인 이름은 최상위 도메인(Top-Level Domain)인 com
을 포함한 서브 도메인 url
로 구성
- 도메인 이름은 사람이 기억하기 쉽고 의미를 전달하기 위해 사용
- "google.com"은 구글의 웹 사이트를 가리키는 도메인 이름
- 도메인 이름은 웹 사이트 주소를 입력할 때 사용되며, DNS(Domain Name System)는 해당 도메인 이름을 연결된 IP 주소로 변환할 때 사용
DNS의 역할과 작동 원리
- 도메인 이름은 사용자가 이해하기 쉬운 형식으로 웹 사이트를 식별하는 데 사용되고, DNS를 통해 해당 도메인 이름이 연결된 IP 주소로 변환됨
- 웹 브라우저는 도메인 이름을 입력 받으면 해당 도메인 이름의 IP 주소를 찾아 웹 서버와 통신함
- 결국 DNS의 역할은 도메인 이름과 IP 주소 간의 매핑을 관리하는 것이며, 이를 통해 사용자는 읽기 쉬운 도메인 이름을 사용하여 웹 사이트에 접근할 수 있음
- DNS 시스템은 전 세계적으로 분산되어 있으며, 여러 계층의 DNS 서버가 상호작용하여 도메인 이름에 대한 IP 주소를 매핑하고 관리함
DNS 레코드
- DNS 레코드(DNS Record)는 도메인 이름과 관련된 정보를 저장하고 전달하기 위해 DNS 시스템에서 사용되는 데이터
A 레코드(Address Record)
- 도메인 이름과 해당 도메인의 IPv4 주소를 연결
- "example.com"의 A 레코드는 해당 도메인의 IPv4 주소를 포함
CNAME 레코드(Canonical Name Record)
- 도메인 이름을 다른 도메인 이름으로 매핑
- CNAME 레코드를 사용하면 하나의 도메인 이름이 다른 도메인 이름에 별칭으로 사용 가능
MX 레코드(Mail Exchange Record)
- 도메인 이름과 이메일 서버(Mail Server)의 우선순위를 연결
- MX 레코드는 도메인의 이메일 트래픽을 처리하는 이메일 서버를 지정
DNS 캐시와 동작 원리
- DNS 캐시(DNS Cache)는 이전에 검색된 DNS 정보를 일시적으로 저장하는 메모리 또는 디스크 공간
- DNS 캐시를 사용하면 이전에 요청한 도메인 이름에 대한 IP 주소 또는 기타 DNS 레코드를 다시 검색하지 않고도 해당 정보를 빠르게 제공
- DNS 캐시는 도메인 이름 변경 시간(Time-to-Live, TTL)과 함께 작동하여 캐시된 정보가 유효한 기간 동안 사용됨. TTL이 만료되면 DNS 서버는 다시 해당 도메인 이름에 대한 정보를 질의하여 새로운 IP 주소 또는 업데이트된 DNS 정보를 갱신
CDN (Content Delivery Network)
CDN의 개념
- CDN(Cotent Delivery Network)은 컨텐츠 전송 네트워크로, 웹 사이트의 컨텐츠를 전 세계 여러 지역에 분산하는 기술
- 전 세계에 분산된 서버 네트워크를 구축하여 사용자가 웹 사이트에 접속할 때 가장 가까운 서버에서 컨텐츠를 제공, 이를 통해 지리적으로 떨어진 사용자들도 빠르게 웹 사이트에 접근
CDN과 DNS의 관계
DNS
- DNS는 사용자가 도메인 이름(예: www.example.com)을 입력하면 해당 도메인에 대한 IP 주소를 찾아서 사용자의 요청을 해당 IP 주소로 전달
CDN
- CDN은 자체적으로 도메인 이름을 가지며, 사용자가 웹 사이트에 접속할 때 CDN은 도메인 이름에 대한 DNS 조회를 수행하여 CDN의 도메인 이름을 통해 해당 리소스를 전달
- 사용자의 웹 브라우저는 CDN의 IP 주소를 통해 CDN에 접속하여 컨텐츠를 요청하고 전송 받음
CDN과 DNS
- 원본 웹 서버의 도메인 이름이 www.example.com이고, CDN의 도메인 이름이 cdn.example.com인 경우, 정적 리소스는 cdn.example.com을 통해 제공
- CDN은 도메인 이름에 대한 DNS 조회를 수행
- CDN의 도메인 이름(cd.n.example.com)으로 사용자의 DNS 요청이 전달되고, CDN은 해당 도메인 이름의 IP 주소를 반환
- 사용자의 웹 브라우저는 CDN의 IP 주소를 통해 CDN에 접속하여 컨텐츠를 요청하고 전송받음
- DNS는 사용자의 지리적 위치와 네트워크 상태를 고려하여 가장 가까운 CDN 서버의 IP 주소를 반환하므로, 컨텐츠 전달 시간과 성능을 최적화
- DNS는 사용자의 도메인 이름 요청을 CDN의 IP 주소로 해석하고, CDN은 해당 IP 주소를 통해 컨텐츠를 전송하여 웹 사이트의 성능을 향상시키는 결과를 가져옴
DNS 보안
DNS 스푸핑
- DNS 스푸핑(DNS spoofing)은 악의적인 공격자가 DNS 프로토콜을 이용하여 도메인 이름과 IP 주소 간의 매핑 정보를 조작하는 공격
- 공격자는 사용자의 네트워크 트래픽을 가로채거나, 사용자를 잘못된 웹 사이트로 유도하거나, 중간자 공격 등의 악용이 가능
- 사용자의 컴퓨터나 네트워크는 DNS 서버로부터 도메인 이름에 대한 IP 주소를 확인하는데, 이 때 DNS 스푸핑 공격에서는 공격자가 DNS 응답을 위조하여 사용자에게 잘못된 IP 주소를 반환하여 사용자를 악성 사이트로 연결
DNSSEC와 인증된 DNS (Authenticated DNS)
- DNS 스푸핑을 방지하는 가장 대표적인 방법
- 인증된 DNS(Authenticated DNS)는 DNSSEC(Domain Name System Security Extensions)라는 보안 기술을 사용하여 도메인 이름과 IP 주소 간의 매핑 정보에 디지털 서명을 적용
- DNSSEC는 DNS 데이터의 위조 및 변조를 방지하기 위해 공개키 암호화와 디지털 서명을 사용하고, 이를 통해 사용자가 도메인 이름에 대한 IP 주소를 확인할 때 해당 정보가 신뢰할 수 있는지 확인 가능
- DNSSEC