이 영역을 누르면 첫 페이지로 이동
천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

페이지 맨 위로 올라가기

천천히 꾸준히 조용히

천천히 꾸준히 조용히.. i3months 블로그

[Computer Network] Domain Name System

  • 2025.10.14 21:59
  • Computer Science/Computer Network
반응형

 

 

 

 

 

 

일단 사진 쭉 보고 시작하자.

 

Top-Level Domain은 루트 도메인 바로 아래에 위치해서 인터넷 전체 도메인 공간을 대분류로 나눈다. (.com .org .kr...)

루트 서버는 TLD 서버 위치를 알려주고, TLD 서버는 Authoritative DNS Server가 어디있는지를 알려준다.

Authoritative DNS Server는 실제 IP주소를 알고 있다. 여기서 Response를 반환한다.

 

전국에 루트 네임서버는 A-M 까지 총 14개.

 

사용자가 웹사이트를 찾을 때는 먼저 ISP의 DNS 캐시에 쿼리한다.

미스나면 루트 네임서버로 쿼리해야 한다. 해당 IP로 패킷을 보낸다.

루트 서버 IP는 실제로 전세계 여러 서버 컴퓨터들이 같은 IP를 공유하고 있고, 라우터에 따라 가장 가까운 서버로 전달된다. (BGP)

 

DNS는 응답시간이 짧은게 매우 중요하다. 물리적으로 가까운 노드로 라우팅하는 Anycast가 매우 유용하다.

디도스 완화도 되고.. 하나가 고장나더라도 다른 노드로 요청할 수 있다는 장점도 있다.

 

 

DNS도 응용 계층 프로토콜으로 전송 계층 기술인 UDP와 TCP를 기반으로 작동한다.

 

클라이언트 -> 서버 쿼리는 UDP - 요청/응답 데이터 크기가 작음

서버 -> 서버 쿼리는 TCP - 도메인 관리 서버 전체 Zone 데이터는 크니까

그냥 UDP 512바이트보다 큰 응답일 때는 TCP를 사용한다고 보면 됨 

 

DNS는 기본적으로 포트번호 53을 사용.

 

A 레코드 - IPv4  질의에 사용된다. 도메인 이름 주면 IPv4 주소를 반환 

AAAA 레코드 - IPv6 질의에 사용된다. 위와동일

CNAME 레코드 - Canonical Name으로 별칭을 표현한다. 하나의 도메인이 다른 도메인을 가리킴. 캐시서버에도 사용.

blog.example.com   CNAME   example.com
example.com        A       93.184.216.34

 

 

[브라우저] → [운영체제] → [로컬 DNS 리졸버(ISP)] → [Authoritative 서버]

 

DNS 캐싱은 각 단계별로 전부~ 있고, 제일 위쪽 단계부터 아래 방향으로 탐색한다.

 

 

고정 IP를 쓰는 DNS랑은 다르게 IP가 계속 바뀌는 환경에서 도메인 이름을 유지하기 위해 DDNS를 사용한다. (Dynamic DNS)

집 공유기 IoT 장비는 웬만하면 동적 IP를 사용하고.. 인터넷 껐다키면 IP가 바뀌고.. 통신사가 IP를 주기적으로 갈아치운다.

 

웬만한 공유기는 DDNS 기능이 내장되어있다.

DDNS 서버가 DNS 레코드를 갱신하고 전 세계 DNS 시스템에 전파한다. 

이거 해두면 내 집에 컴퓨터켜놓고 어디서든 접근 가능함.. DDNS 해주면 집 공유기 IP 바뀌든 말든 그냥 DDNS 도메인으로 접속하면 됨.

 

 

그런데 DNS 쿼리는 평문으로 나간다. 그러니 네트워크에 있는 누구나 내가 어떤 쿼리를 날렸는지 볼 수 있음.

특정 도메인에 대한 DNS 쿼리를 가로채서 사이트 접근을 통제할 수 있고.. (정부 유해사이트 차단 - 통신사가 ISP 서버 조작)

공격자가 DNS 서버보다 빠르게 응답해서 가짜 서버로 연결시킬 수 있다.

 

보안 꼭 필요함.. 그래서 DNSSEC 도입됨. (DNS Security Extensions)

DNS 레코드마다 전자서명을 추가해 리졸버가 상위 도메인에서 제공한 공개 키를 사용해서 서명을 검증한다.

[루트(.)] -> [TLD (.kr)] -> [2차 (ac.kr)] -> [3차 (cnu.ac.kr)]

 

계층적 신뢰 구조로 동작한다. 루트부터 하위까지 서명된 신뢰 연결을 이어간다. 

 

그런데 사실 모든 네임서버가 DNSSEC을 사용하지는 않는다. 이름만 봐도 알 수 있듯 선택적으로 도입하는 Extension이다.

루트랑 TLD 까지는 거의 도입했는데 그 다음부터는 DNSSEC를 도입 한 곳도 있고.. 안 한 곳도 있다. 

 

일단 운영이 복잡함. 그리고 응답 크기도 커져서 오버헤드도 커짐.

스푸핑은 막을 수 있는데 DNSSEC 체인 깨지면 그냥 사이트 접속이 안되버릴 수 있으니 신중해야 한다.

 

패킷 변조하는 Spoofing은 막을 수 있는데, 여전히 평문으로 전송하기에 다른 사람들이 내 DNS 쿼리를 볼 수 있는건 여전하다.

 

그래서 DoH 를 사용함.. (DNS over HTTPS)

일반 DNS 패킷도 HTTPS로 암호화해서 보낸다. 즉, 다른 사람들이 내 DNS 쿼리조차도 볼 수 없음.

근데 역시나 모든 네임서버가 DoH를 사용하는건 또 아니다. 루트 TLD 권한 네임서버들은 DoH를 사용하지 않는다.

 

애초에 암호화가 필요 없는 부분에는 암호화 자체를 안한다는거임. 공개 DNS 레코드만 제공하는데 굳이? 

 

SNI는 TLS 연결을 시작할 때 클라이언트가 접속하려는 도메인 이름을 평문으로 서버에 알려주는 확장 필드를 의미한다.

203.0.113.1 → www.google.com
203.0.113.1 → mail.google.com

 

두 도메인은 IP는 같지만 인증서는 다를 수 있다.

서버가 올바른 인증서를 주려면 두 도메인 중 어디로 갈지를 알려줘야 하는데, 이 정보를 담는 필드를 Server Name Indication.

SNI는 도메인이 한개든 100개든 무조건 보인다.

 

ISP 서버를 관리하는 통신사는 HTTPS 내용을 몰라도 사용자가 어떤 사이트에 접속하려고 하는지 알 수 있으니..

이 평문 SNI 정보를 사용해서 접속 도메인을 확인하고 차단하는게 가능하다.

 

 

루트 네임서버에 디도스걸면 어떻게될까? 

2002년에 실제로 공격 시도가 있었고 13개의 루트서버 중 9개가 치명상을 입음 

이후 Anycast 기술이 가속화됐고, 이후 이어진 공격에도 Anycast가 적용된 서버는 거의 영향을 받지 않았음.

Anycast도 압살할 정도로 디도스를 걸면 되는거 아님? -> 이론은 맞는데 굉장히 힘들다.. 

 

 

반응형
저작자표시 (새창열림)

'Computer Science > Computer Network' 카테고리의 다른 글

[Computer Network] Transmission Control Protocol  (1) 2025.10.15
[Computer Network] Transport Layer Security  (0) 2025.10.14
[Computer Network] Cookie && Cache  (2) 2025.10.14
[Computer Network] HTTP  (0) 2025.10.14
[Computer Network] Internet Protocol Layer  (3) 2025.10.14

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Computer Network] Transmission Control Protocol

    [Computer Network] Transmission Control Protocol

    2025.10.15
  • [Computer Network] Transport Layer Security

    [Computer Network] Transport Layer Security

    2025.10.14
  • [Computer Network] Cookie && Cache

    [Computer Network] Cookie && Cache

    2025.10.14
  • [Computer Network] HTTP

    [Computer Network] HTTP

    2025.10.14
다른 글 더 둘러보기

정보

천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

  • 천천히 꾸준히 조용히의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (678)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • C (25)
      • C++ (12)
      • Java (19)
      • JavaScript (15)
      • Python (1)
      • PHP (2)
    • Computer Science (142)
      • Machine Learning (38)
      • Operating System (18)
      • Computer Network (28)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
      • Compiler Design (11)
      • Computer Security (13)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Amazon Web Service (8)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • 💡 솔루션 (17)
    • 👥 모각코 (10)
    • 💬 기록 (7)
    • 📚 공부 (6)
    • -------------- (25)

최근 글

나의 외부 링크

메뉴

  • 홈
반응형

정보

i3months의 천천히 꾸준히 조용히

천천히 꾸준히 조용히

i3months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © i3months.

티스토리툴바