DNS(Domain Name System)
- 사람들의 많은 식별자
- SSN, 이름, 여권 번호
- 인터넷 호스트들, 라우터들 :
- IP 주소(32bit) - 데이터그램 주소 지정에 사용
- "이름", ex) itcae.pknu.ac.kr - 사람이 사용함
- Domain Name System :
- 다수의 네임 서버 계층 구조에서 구현된 분산 데이터베이스
- 애플리케이션 계층 프로토콜 호스트, 라우터, 네임 서버가 이름을 해결하기 위해 통신 (주소 / 이름 변환)
- 참고 : 핵심 인터넷 기능, 애플리케이션 계층 프로토콜로 구현됨
- 네트워크의 가장자리에서 복잡성 발생
DNS의 서비스
- HostName을 IP 주소로 변환
- 호스트 별칭화(aliasing)
- 복잡한 호스트 이름을 가진 호스트는 하나 이상의 별명을 가질 수 있음
- (예) relay1.west-coast.enterprise.com (canonical 호스트 이름)
enterprise.com과 coast.enterprise.com (별칭 호스트 이름)
- 메일 서버 별칭화
- 메일 서버 호스트 이름에 대한 별칭 호스트 이름 허용
- 부하 분산 (load distribution)
- 중복 웹 서버와 같은 여러 중복 서버들 사이에 부하를 분산하기 위해서도 사용 가능
- 클라이언트가 주소 집합으로 매핑되어 있는 호스트 이름에 대한 DNS 질의를 하면, 서버는 IP 주소 집합 전체를 응답
- 이때, 각 응답 내에서의 주소 순서를 회전시킴
- 일반적으로, 클라이언트는 주소 집합 내의 첫 번째 주소로 요청
- 따라서 DNS 회전은 여러 중복 서버들 사이에 트래픽 분산 효과를 나타냄
DNS를 왜 중앙 집중화하지 않을까?
- 단일 장애 지점(single point of failure)
- 트래픽 양
- 중앙 집중식 데이터베이스의 거리
- 유지 보수
답 : 확장되지 않음
- Comcast DNS 서버만 : 하루 6,000억 개의 DNS 쿼리
- Akamai DNS 서버만 : 하루 2.2조 개의 DNS 쿼리
많은 네임 서버를 가진 계층 형태로 구성
- 로컬 네임 서버(local name servers)
- 책임 네임 서버(authoritative name server)
- 루트 네임 서버(root name server)
- 최상위 도메인 서버들(Top-level domain servers)
분산, 계층적 데이터베이스
클라이언트가 www.amazon.com의 의 IP를 원할 때 첫 번째 과정 :
- 클라이언트가 루트 서버에 쿼리하여 com DNS 서버를 찾음 (Root)
- 클라이언트가 com DNS 서버에 쿼리하여 amazon.com DNS 서버를 얻음 (Top Level)
- 클라이언트가 amazon.com DNS 서버에 쿼리하여 www.amazon.com의 IP 주소를 얻음 (Authoritative)
계층적 관리
root
├── kr ├── uk ├── fr ├── edu ├── gov ├── org ├── com ├── net
└── ac └── co
├── pknu └── snu
└── itcae
- 존(zone)은 해당 계층 구조의 일부에 대한 책임을 지는 관리 권한에 해당
- ac는 .ac.kr 이름을 제어
- pknu는 .pknu.ac.kr 이름을
Local Name Server
- 엄격하게 계층 구조에 속하지 않음
- 각 ISP(가정용 ISP, 회사, 대학교)마다 하나씩 있음
- 기본 네임 서버(default name server)라고도 함
- Windows : >ipconfig /all
- 기본 네임 서버(default name server)라고도 함
- 호스트가 DNS 쿼리를 수행할 때, 쿼리는 해당 호스트의 로컬 DNS 서버로 전송됨
- 로컬 DNS 서버는 다음과 같이 응답을 반환함:
- 최근 이름-주소 변환 쌍의 로컬 캐시에서 응답(때로는 오래된 정보일 수 있음)
- DNS 계층 구조로 요청을 전달하여 해결 (캐시에 없으면)
- 로컬 DNS 서버는 다음과 같이 응답을 반환함:
Root Name Server
- 공식적으로, 마지막으로 연락하는 서버로, 이름을 해결할 수 없는 네임 서버가 의존함
- 매우 중요한 인터넷 기능
- 인터넷은 루트 네임 서버 없이는 작동할 수 없음
- DNSSEC - 보안 제공(인증, 메시지 무결성)
- 인터넷 주소 할당 기관(ICANN, Internet Corporation for Assigned Names and Numbers)이 루트 DNS 도메인을 관리
TLD and Authoritative Servers
- Top-level domain(TLD) servers : .com, .org, .net, .edu 등과 모든 국가별 최상위 도메인(예 : .uk, .fr, .ca, .kr)에 대해 책임을 짐
- Network Solutions는 .com, .net TLD 서버를 유지, 관리
- Educause는 .edu TLD를 관리
Authoritative DNS Servers
- 조직의 자체 DNS 서버로, 조직의 서버(예 : 웹 및 메일 서버)에 대한 권한 있는 호스트 이름에서 IP로의 매핑을 제공
- 조직 또는 서비스 제공자가 유지 관리할 수 있음
DNS Name Resolution
반복적 질의 (iterated query)
- 문의한 서버가 "이름을 알지 못하지만, 이 서버에 문의해보세요" 라고 응답하며, 다음 서버의 이름을 알려줌
- 즉, 해당 서버가 직접 IP 주소를 제공하지 않고, 요청자가 다른 서버에 질의하도록 안내
재귀적 질의(recursive query)
- 이름 해석의 부담을 문의한 네임 서버에 맡김
- 계층 구조 상위 레벨에서 과부하가 발생할 수 있을까?
- 상위 레벨의 네임 서버가 요청자의 대신으로 최종 IP 주소를 찾아 반환하는 방식이므로, 상위 서버에 많은 부하가 걸릴 수 있음
DNS : 캐시와 기록 업데이트
- DNS 캐싱은 지연 성능 향상시키고, DNS 메시지 수를 줄이기 위해 사용됨
- 한 번이라도 네임 서버가 매핑 정보를 학습하면, 그 매핑을 캐싱함
- 네임 서버는 호스트 이름에 대한 DNS 매핑 정보를 수신하면, 해당 메시지를 네임서버 체인에 따라 전송하는 동시에 로컬 메모리에 그 매핑을 캐싱함
- TLD 서버는 일반적으로 로켈 네임서버에 캐싱됨
- 따라서 루트 네임서버는 자주 방문되지 않음
- 캐시 항목은 일정 시간이 지나면 만료됨(사라짐)
- 캐시된 항목은 오래된 정보일 수 있음
- 호스트가 IP 주소를 변경하면, 수명(TTL, Time To live)이 만료될 때까지 인터넷 전체에서 새로운 정보로 업데이트되지 않을 수 있음
- 최선을 다해 name에서 주소로 변환
DNS 기록들
DNS : 리소스 레코드(RR)를 저장하는 분산 데이터베이스
- 호스트 이름을 IP 주소로 매핑하기 위해 사용됨
RR 포맷: (name, value type, ttl )
- Type = NS
- name은 도메인 이름(예 : foo.com)
- value는 이 도메인에 대한 권한 있는 네임서버의 주소
- Type = A
- name은 호스트 이름
- value는 IP 주소
- Type = CNAME
- name은 별칭 이름(alias)
- value는 실제 이름(정규 이름, canonical name)
- 예 : www.ibm.com은 실제로 servereast.backup2.ibm.com
- value는 정규 이름(canonical name)
- Type = MX
- name은 메일 서버와 관련된 별칭 이름
- value는 메일 서버의 정규 이름
DNS 프로토콜, 메세지
DNS 프로토콜 : 쿼리와 응답 메시지로 구성되며, 두 메시지 모두 동일한 메시지 형식을 사용함
메시지 헤더 :
- 식별자(identification) : 16비트 번호로, 쿼리마다 고유한 번호가 할당되며, 쿼리에 대한 응답 메시지도 동일한 번호를 사용함
- 플래그 (flags) :
- 쿼리 또는 응답 여부
- 재귀적 질의 요청 (recursion desired)
- 재귀적 질의 가능 여부 (recursion available)
- 응답이 권한 있는 서버로부터의 응답인지 여부 (reply is authoritative)
DNS 공격
DDos 공격
- 루트 서버를 트래픽으로 폭격
- 현재까지 성공하지 못함
- 트래픽 필터링
- 로컬 DNS 서버가 TLD 서버의 IP를 캐싱하여 루트 서버를 우회 가능
- TLD 서버를 공격
- 잠재적으로 더 위험
리다이렉션 공격
- 중간자 공격 (Man-in-the-middle)
- 쿼리를 가로 채서 공격
- DNS 스푸핑 (DNS poisoning)
- 가짜 응답을 DNS 서버로 보내고, 서버는 이를 캐싱
DDoS 공격을 위한 DNS 악용
- 스푸핑된 소스 주소로 쿼리 전송 : 대상 IP를 스푸핑
- 증폭이 필요
'Network' 카테고리의 다른 글
| 컴퓨터 네트워킹 하향식 접근 - Chapter 2, 6장 비디오 스트리밍과 콘텐츠 배포 네트워크 (5) | 2024.10.12 |
|---|---|
| 컴퓨터 네트워킹 하향식 접근 - Chapter 2, 5장 P2P 파일 공유 (3) | 2024.10.12 |
| 컴퓨터 네트워킹 하향식 접근 - Chapter 2, 3장 전자 메일 (3) | 2024.10.11 |
| 컴퓨터 네트워킹 하향식 접근 - Chapter 2, 2장 Web and HTTP (5) | 2024.10.11 |
| 컴퓨터 네트워킹 하향식 접근 - Chapter 2, 1장 응용 계층 프로토콜의 원칙 (6) | 2024.10.10 |