[Networks] DNS 파헤치기
Networks DNS
Domain Name System
- 사람이 읽을 수 있는 도메인 이름을 머신이 읽을 수 있는 IP 주소로 변환
DNS 주요 개념
- 도메인 이름
- 웹사이트의 주소
- 예시:
www.google.com
- Domain Name Space
- DNS가 저장 관리하는 계층적 구조
- DNS 서버
- 도메인 이름을 IP 주소로 변환해 주는 서버
- 사용자가 웹사이트 주소를 입력하면, 그 요청이 DNS 서버로 전송되어 해당 도메인 이름에 대한 IP 주소를 찾아 반환
DNS 작동 원리
- 사용자가 도메인 이름 입력
- 사용자가 브라우저에서
www.example.com
같은 도메인 이름 입력
- 사용자가 브라우저에서
- DNS 서버 조회
- 브라우저는 로컬 캐시나 DNS 서버를 조회해 도메인 이름에 대한 IP 주소를 찾음
- 캐시에 없다면, DNS 서버가 그 정보를 가지고 있는 다른 서버를 찾아가 질의
- IP 주소 반환
- DNS 서버가 해당 도메인의 IP 주소를 찾아 브라우저에 반환
- 웹사이트 접속
- 브라우저는 반환된 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 레코드가 변경되었을 때, 변경 사항이 모든 클라이언트에 반영되는 데 시간이 오래 걸릴 수 있음
- 자주 변경되지 않는 안정적인 서버 환경에서는 길게 설정
- 낮은 TTL (짧은 TTL)
- TTL 값의 단위
DNS 전파
- 도메인 이름에 대한 DNS 레코드 변경 사항이 전세계의 DNS 서버에 완전히 반영되는 과정
- DNS는 계층적이고 분산되어 있으므로 새로운 DNS 레코드가 모든 서버에 적용되는 데 시간이 걸리며 이 시간을 DNS 전파 시간이라고 함
- DNS 전파가 필요한 이유
- DNS는 분산된 시스템으로, 전세계 수많은 캐싱 DNS 서버가 존재함
- 도메인에 대한 DNS 정보를 요청할 때, 사용자는 먼저 로컬 또는 ISP의 캐싱 DNS 서버에 연결해 데이터를 얻음
- DNS 레코드가 변경되면 이러한 모든 캐싱 서버들이 새로운 정보를 반영하기 위한 시간이 필요
- DNS 전파 과정
- DNS 레코드 변경
- 사용자가 DNS 호스팅 서비스나 네임 서버에서 도메인에 대한 DNS 레코드를 변경
- 네임 서버 업데이트
- 변경 사항은 네임 서버에 저장됨
- 이 네임 서버는 해당 도메인에 대한 최종 Authoritative를 가지고 있는 서버로, 다른 DNS 서버들이 여기에서 최신 정보를 얻음
- TTL에 따른 캐시 만료
- 캐싱 DNS 서버는 도메인 정보를 일정 시간 캐싱
- TTL에 따라 만료되기 전까지는 이전 정보를 계속 제공
- 전파 완료
- 전파가 완료되면 전세계의 DNS 서버는 최신 정보를 가지고 있으며, 도메인에 대한 요청이 있을 때 변경된 정보를 응답
- 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 내 레코드에 대한 정보를 제공하는 역할
- DNS 계층 구조에서의 역할