Network

컴퓨터 네트워킹 하향식 접근 - Chatper 2, 4장 DNS(Domain Name System)

taey 2024. 10. 11. 19:21

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
  • 호스트가 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를 스푸핑
  • 증폭이 필요