1. DNS란 무엇인가?
DNS는 도메인 이름을 IP 주소로 변환해주는 분산 데이터베이스 시스템입니다.
예를 들어:
- 도메인 이름: www.google.com
- 변환된 IP 주소: 142.250.196.142
DNS는 인터넷 사용의 필수 요소로, 우리가 긴 숫자의 IP 주소 대신 이해하기 쉬운 도메인 이름을 사용할 수 있게 해줍니다.
2. DNS 작동 원리
DNS의 작동 과정은 크게 다음 4단계로 이루어집니다:
1️⃣ 사용자 입력
사용자가 브라우저에서 www.google.com을 입력합니다.
2️⃣ 로컬 DNS 캐시 확인
운영 체제(OS)는 먼저 로컬 캐시에서 www.google.com의 IP 주소를 확인합니다.
- 로컬 캐시에 데이터가 있다면 바로 IP 주소를 반환합니다.
3️⃣ DNS 쿼리 발송
캐시에 데이터가 없다면, 시스템은 DNS 서버에 쿼리를 보냅니다. 이 과정은 다음 단계로 진행됩니다:
- 루트 네임서버: .com의 네임서버를 알려줍니다.
- TLD 네임서버: google.com의 네임서버를 알려줍니다.
- 권한 네임서버: www.google.com의 IP 주소를 반환합니다.
4️⃣ IP 주소 반환
DNS 서버가 반환한 IP 주소를 사용하여 사용자는 웹사이트에 접속합니다.
3. 리눅스에서 DNS 작동 원리 확인하기
1️⃣ nslookup 명령어
nslookup은 특정 도메인 이름의 IP 주소를 확인할 수 있는 명령어입니다.
nslookup www.google.com
출력 예:
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: www.google.com
Address: 142.250.196.142
2️⃣ dig 명령어
dig는 DNS 서버와의 상세한 쿼리 결과를 보여줍니다.
dig www.google.com
출력 예:
;; ANSWER SECTION:
www.google.com. 299 IN A 142.250.196.142
- ANSWER SECTION: 도메인에 대한 IP 주소가 표시됩니다.
3️⃣ /etc/resolv.conf 확인
현재 시스템이 사용하는 DNS 서버를 확인하려면 아래 명령어를 실행합니다:
cat /etc/resolv.conf
출력 예:
nameserver 8.8.8.8
nameserver 8.8.4.4
- 8.8.8.8은 Google Public DNS 서버입니다.
4️⃣ host 명령어
host 명령어는 간단하게 DNS 조회를 할 수 있습니다.
host www.google.com
출력 예:
www.google.com has address 142.250.196.142
4. DNS 캐시 확인 및 플러싱
1️⃣ DNS 캐시 확인
Linux에서 DNS 캐시를 직접 확인하려면 systemd-resolved를 사용하는 경우 다음 명령어를 실행합니다:
resolvectl statistics
2️⃣ DNS 캐시 삭제
DNS 캐시를 초기화하려면 다음 명령어를 사용합니다:
sudo systemd-resolve --flush-caches
5. DNS의 주요 구성 요소
1️⃣ 루트 네임서버 (Root Name Server)
- 인터넷의 최상위 DNS 서버.
- .com, .org 등의 TLD 네임서버로 요청을 전달.
2️⃣ TLD 네임서버 (Top-Level Domain Name Server)
- .com, .net, .org 등 최상위 도메인에 대한 정보를 관리.
3️⃣ 권한 네임서버 (Authoritative Name Server)
- 특정 도메인(예: google.com)의 IP 주소를 관리.
6. DNS와 보안
DNS는 보안상 여러 취약점이 존재합니다. 이를 방지하기 위한 주요 기술은 다음과 같습니다:
- DNSSEC: DNS 쿼리 응답의 위변조를 방지.
- HTTPS DNS (DoH): DNS 요청을 암호화하여 보호.
7. 실무에서의 DNS 문제 해결
1️⃣ 특정 도메인 접속 불가
DNS 문제로 특정 도메인에 접속할 수 없을 경우:
- DNS 서버를 변경:
sudo vi /etc/resolv.conf
nameserver 8.8.8.8 nameserver 1.1.1.1
- DNS 캐시 초기화:
sudo systemd-resolve --flush-caches
2️⃣ DNS 트래픽 분석
tcpdump를 사용하여 DNS 요청/응답을 캡처:
sudo tcpdump -i eth0 port 53
결론
DNS는 인터넷에서 도메인 이름과 IP 주소를 연결하는 필수 시스템
'🔌Network' 카테고리의 다른 글
VLAN vs VXLAN: 네트워크 가상화의 핵심 개념 정리 (0) | 2025.02.11 |
---|---|
CentOS 7에서 IPS와 IDS 비교 및 설정 방법 (0) | 2025.02.11 |
리눅스에서 네트워크 Bonding 설정하는 방법 (0) | 2025.02.05 |
iperf를 사용한 네트워크 테스트 - 병목 현상 유발 시나리오 (0) | 2025.01.25 |
[Network] Overlay와 Underlay의 개념 (0) | 2024.12.23 |