[Networks] DNS 파헤치기

[Networks] DNS 파헤치기


Networks DNS

Domain Name System

  • 사람이 읽을 수 있는 도메인 이름을 머신이 읽을 수 있는 IP 주소로 변환

DNS 주요 개념

  • 도메인 이름
    • 웹사이트의 주소
    • 예시: www.google.com
  • Domain Name Space
    • DNS가 저장 관리하는 계층적 구조
  • DNS 서버
    • 도메인 이름을 IP 주소로 변환해 주는 서버
    • 사용자가 웹사이트 주소를 입력하면, 그 요청이 DNS 서버로 전송되어 해당 도메인 이름에 대한 IP 주소를 찾아 반환

DNS 작동 원리

  1. 사용자가 도메인 이름 입력
    • 사용자가 브라우저에서 www.example.com 같은 도메인 이름 입력
  2. DNS 서버 조회
    • 브라우저는 로컬 캐시나 DNS 서버를 조회해 도메인 이름에 대한 IP 주소를 찾음
    • 캐시에 없다면, DNS 서버가 그 정보를 가지고 있는 다른 서버를 찾아가 질의
  3. IP 주소 반환
    • DNS 서버가 해당 도메인의 IP 주소를 찾아 브라우저에 반환
  4. 웹사이트 접속
    • 브라우저는 반환된 IP 주소를 사용해 해당 서버와 연결하고 웹사이트를 로드

DNS의 주요 요소

  • DNS Resolver (권한 없는 DNS 서버)
    • 사용자의 컴퓨터나 네트워크에서 DNS 요청을 받아 DNS 서버로 전달하고, 그 결과를 받아오는 역할
  • DNS Record
    • DNS 서버에 저장된 데이터
    • 종류
      • A 레코드: 도메인 이름을 IPv4 주소로 매핑
      • AAAA 레코드: 도메인 이름을 IPv6 주소로 매핑
      • CNAME 레코드: 도메인을 다른 도메인으로 매핑
      • MX 레코드: 이메일 라우팅을 위한 메일 서버 정보
      • TXT 레코드: 도메인에 대한 임의의 텍스트 데이터를 저장하는 데 사용

DNS 계층 구조

  • DNS는 계층 구조로 구성되어 있음
  • 루트 DNS 서버
    • 최상위 레벨의 서버
    • 최종적으로 도메인에 대한 정보를 어디서 찾을 수 있는지 알려줌
  • TLD 서버
    • .com, .org, .net과 같은 최상위 도메인(TLD)의 정보를 저장하는 서버
  • , 네임 서버 (Name Server): 권한 있는 DNS 서버 (Authoritative DNS Server)
    • 최종적으로 특정 도메인 이름에 대한 IP 주소 정보를 가지고 있는 서버

DNS TTL

  • DNS 레코드가 캐시에 저장된 시간
  • 특정 DNS 레코드가 DNS Resolver(캐싱 서버)나 클라이언트 시스템에서 얼마 동안 유효하게 캐시될지를 결정
  • DNS 쿼리 처리 속도와 서버 부하를 줄이기 위해 중요한 역할
  • 주요 개념
    • TTL 값의 단위
      • 초 단위로 설정되며, 일반적으로 몇 분에서 몇 시간까지 설정됨
      • 예시: TTL 값이 3600일 경우, 캐시에서 한 시간동안 유지
    • 캐싱 동작
      • TTL 기간 동안 DNS 리졸버는 해당 레코드를 캐시에 저장하고, 이후 요청이 들어오면 원래의 네임 서버에 다시 요청하지 않고 캐시된 데이터를 응답
      • TTL이 만료되면 캐시된 레코드는 무효화되고, DNS 리졸버는 다시 네임 서버에 쿼리를 보내 새로운 정보를 요청
    • DNS TTL 값 설정
      • 낮은 TTL (짧은 TTL)
        • TTL 값이 짧을수록 DNS 레코드의 변경 사항이 빠르게 반영
        • 서버 IP 주소를 변경해야 하는 상황에서는 TTL을 짧게 설정하면 변경이 빨리 전파됨
        • 너무 낮은 TTL은 DNS 서버에 대한 쿼리 요청이 증가해 서버 부하가 커짐
        • 웹 사이트를 새로 이전하거나, IP 주소를 자주 변경할 계획이 있을 경우 낮게 설정
      • 높은 TTL (긴 TTL)
        • TTL 값이 길수록 같은 데이터를 오랜 시간 캐싱하므로 쿼리 요청 빈도가 줄어 서버 부하가 줄어듬
        • 하지만 DNS 레코드가 변경되었을 때, 변경 사항이 모든 클라이언트에 반영되는 데 시간이 오래 걸릴 수 있음
        • 자주 변경되지 않는 안정적인 서버 환경에서는 길게 설정

DNS 전파

  • 도메인 이름에 대한 DNS 레코드 변경 사항이 전세계의 DNS 서버에 완전히 반영되는 과정
  • DNS는 계층적이고 분산되어 있으므로 새로운 DNS 레코드가 모든 서버에 적용되는 데 시간이 걸리며 이 시간을 DNS 전파 시간이라고 함
  • DNS 전파가 필요한 이유
    • DNS는 분산된 시스템으로, 전세계 수많은 캐싱 DNS 서버가 존재함
    • 도메인에 대한 DNS 정보를 요청할 때, 사용자는 먼저 로컬 또는 ISP의 캐싱 DNS 서버에 연결해 데이터를 얻음
    • DNS 레코드가 변경되면 이러한 모든 캐싱 서버들이 새로운 정보를 반영하기 위한 시간이 필요
  • DNS 전파 과정
    1. DNS 레코드 변경
      • 사용자가 DNS 호스팅 서비스나 네임 서버에서 도메인에 대한 DNS 레코드를 변경
    2. 네임 서버 업데이트
      • 변경 사항은 네임 서버에 저장됨
      • 이 네임 서버는 해당 도메인에 대한 최종 Authoritative를 가지고 있는 서버로, 다른 DNS 서버들이 여기에서 최신 정보를 얻음
    3. TTL에 따른 캐시 만료
      • 캐싱 DNS 서버는 도메인 정보를 일정 시간 캐싱
      • TTL에 따라 만료되기 전까지는 이전 정보를 계속 제공
    4. 전파 완료
      • 전파가 완료되면 전세계의 DNS 서버는 최신 정보를 가지고 있으며, 도메인에 대한 요청이 있을 때 변경된 정보를 응답
  • DNS 전파 시간
    • 일반적으로 24시간에서 48시간 정도 걸릴 수 있음
    • TTL 값을 짧게 설정해 최신 정보를 빠르게 요청하는 경우 몇 분에서 몇 시간 내에 전파가 완료될 수 있음
    • 예시
      • 새로운 레코드를 등록하거나 변경하는 작업을 해야 할 때 TTL을 낮게 설정
      • TTL을 3600에서 60으로 낮게 설정하는 것도 전세계로 전파되어야 하므로, 작업 48~72시간 전에 TTL을 미리 낮춰야 함
      • 이렇게 하면 DNS 변경 작업일에 빠른 전파 가능
      • TTL 3600이면 전세계 전파 시간이 24 ~ 48시간 정도 소요되고, 60이면 수 분에서 수 시간 소요됨

내부 DNS

  • 사내 네트워크나 조직의 내부 내트워크에서 사용되는 DNS 시스템
  • 조직 내에서 사용되는 장치와 서버의 도메인 이름을 IP 주소로 변환하는 역할
  • 예시
    • 처음 회사에 입사했을 때, 회사 PC의 DNS를 내부 DNS 서버 주소로 변경함
    • 원래 대부분 PC의 디폴트 DNS는 네트워크 제공자(ISP)의 DNS 서버 (외부 DNS)
    • 이를 통해 회사 내부에서만 접근할 수 있는 서버(e.g., jenkins.xxx.co.kr)에 접근 가능
  • 주요 특징
    • 보안성
      • 내부 DNS는 일반적으로 외부로 노출되지 않으며, 회사 또는 조직의 사내 네트워크에서만 사용됨
    • 사내 서비스 관리
      • 사내 서버, 파일 공유 시스템, 프린터, 데이터베이스와 같은 사내 리소스에 대한 도메인 이름 해석을 처리
      • 예시: intranet.company.com과 같은 내부 도메인 관리
    • 속도
      • 내부 네트워크 안에서만 동작하므로 외부 DNS보다 빠른 응답 속도 기대 가능
      • 내부 DNS 캐싱 기능도 성능을 향상시킬 수 있음
    • 내부 전용 도메인
      • 내부 네트워크에서만 사용되는 전용 도메인 네임스페이스를 관리 가능

외부 DNS

  • 인터넷 상에서 공개적으로 사용되는 DNS 서버
  • 전세계에서 접근할 수 있는 웹사이트, 이메일 서비스 등의 도메인 이름을 IP 주소로 변환하는 역할
  • 주요 특징
    • 공개 접근 가능
      • 외부 DNS는 전세계에서 인터넷을 사용하는 누구나 접근 가능
    • 도메인 네임 등록
      • www.company.com과 같은 도메인은 외부 DNS 서버에 의해 관리되고, 전세계적으로 접근 가능
    • 대규모 트래픽 처리
      • 외부 DNS는 수많은 요청을 처리할 수 있도록 설계되어 있으며, 대규모 네트워크에서 다양한 사용자 요청을 관리
    • 보안 요구
      • 외부 DNS는 공개되어 있으므로 DDoS 공격이나 DNS 스푸핑 등 보안 위협에 노출될 수 있음
      • 이를 방어하기 위해 DNSSEC과 같은 보안 기능이 사용됨

DNS Zone

  • 도메인 이름과 그 도메인의 하위 도메인에 대한 정보를 관리하는 행정적 구역 또는 영역
  • 즉, 특정 도메인 이름과 관련된 모든 DNS 레코드의 집합 (파일)
  • 주요 개념
    • DNS 계층 구조에서의 역할
      • DNS는 계층 구조로 구성된 시스템
      • 예시
        • example.com이라는 도메인에는 그 하위 도메인(예: www.example.com, mail.example.com)이 있을 수 있음
      • DNS Zone은 이러한 도메인 이름과 관련된 정보를 관리하고 저장하는 구역
      • Zone은 도메인 이름의 상위에서 하위까지 관리할 수 있으며, 그 범위는 도메인의 일부이거나 전체일 수 있음
    • 네임 서버
      • 각 Zone은 권한 있는 DNS 서버에 의해 관리됨
      • 권한 있는 서버는 해당 Zone에 대한 모든 DNS 레코드를 관리하고 다른 DNS 서버가 요청할 때 해당 Zone 내 레코드에 대한 정보를 제공하는 역할
© 2024 Seungwon Bae 🇰🇷