DNS와 이름 해석
쉽게 말하면
사람은 www.naver.com 같은 이름을 기억하지만, 컴퓨터는 숫자 주소(IP)로 찾아가요. 이름을 숫자 주소로 바꿔 주는 전화번호부가 DNS예요.
시험용 정의
DNS(Domain Name System)는 사람이 기억하기 쉬운 도메인 이름을 컴퓨터가 쓰는 IP 주소로(또는 반대로) 바꿔 주는 계층형 분산 이름 시스템이다. 53번 포트를 쓴다.
비유로 이해하기
전화번호부다. 이름(도메인)으로 번호(IP)를 찾는다. 전국 전화번호부를 한 권에 담을 수 없어 지역별(.com, .kr)로 나눠 관리한다.
자세히
도메인 계층
최상위 도메인 예: 일반 com, net, org, edu, gov, 국가 kr, jp, 한국의 2단계 co.kr, or.kr, go.kr, ac.kr. or만 단독으로는 최상위 도메인이 아니다. www.example.com.을 오른쪽부터 읽는다: 루트(.) → 최상위 도메인(TLD) com → 2차 도메인 example → 호스트 www. 끝의 점까지 다 쓴 이름을 FQDN이라 한다.
레코드 종류
| 레코드 | 뜻 |
|---|---|
| A | 이름 → IPv4 주소 |
| AAAA | 이름 → IPv6 주소 |
| CNAME | 별칭 → 정식 이름 |
| MX | 메일 서버 (우선순위 숫자 포함) |
| NS | 이 영역을 맡은 네임서버 |
| PTR | IP → 이름 (역방향) |
| SOA | 영역의 시작, 관리자·시리얼·갱신 주기 |
| TXT | 문자 정보 (SPF 등) |
리눅스의 이름 해석 설정 파일
| 파일 | 역할 |
|---|---|
| /etc/hosts | IP와 이름을 직접 적어 두는 파일. DNS보다 먼저 볼 수 있음 |
| /etc/resolv.conf | 질의할 DNS 서버(nameserver, 최대 3개)와 search 도메인(짧은 이름 뒤에 자동으로 덧붙일 도메인) |
| /etc/nsswitch.conf | 이름을 찾는 순서. hosts: files dns |
| /etc/host.conf | 옛 방식의 순서 지정 (order hosts,bind) |
| /etc/hostname | 이 컴퓨터의 호스트 이름 |
재귀 질의와 반복 질의
클라이언트는 DNS 서버(리졸버)에 "답을 찾아서 달라"고 재귀 질의를 한다. 리졸버는 루트 → TLD → 권한 서버 순서로 반복 질의해 답을 모으고, 결과를 TTL 동안 캐시한다.
시험에 이렇게 나와요
- IP와 호스트 이름을 1:1로 직접 적는 파일 →
/etc/hosts - DNS 서버 주소(nameserver)와 검색 도메인 설정 →
/etc/resolv.conf - DNS는 질의에 주로 UDP 53을 쓴다
- 올바르지 않은 최상위 도메인 고르기(or 단독 등)
확인 문제
Q1. /etc/hosts에 10.0.0.5 www.example.com을 적어 두었다. DNS 서버에는 www.example.com이 93.184.216.34로 등록되어 있다. ping www.example.com은 어느 주소로 갈까? (nsswitch.conf는 기본값 hosts: files dns)
- 둘 다 번갈아
- 충돌 오류가 난다
- 93.184.216.34
- 10.0.0.5
정답 보기
4번 10.0.0.5
hosts: files dns는 files(/etc/hosts)를 먼저, 없으면 dns를 보라는 뜻이다. /etc/hosts에 있으니 10.0.0.5로 간다. 그래서 /etc/hosts는 테스트용으로 이름을 임시로 바꿀 때 쓰인다.
Q2. server01처럼 짧은 이름을 쓰면 뒤에 example.com을 자동으로 붙여 찾도록 설정하는 파일은?
- /etc/resolv.conf
- /etc/hostname
- /etc/hosts
- /etc/services
정답 보기
1번 /etc/resolv.conf
resolv.conf의 search(또는 domain) 항목.
Q3. DNS 서버 주소를 지정하는 파일은?
- /etc/resolv.conf
- /etc/hosts
- /etc/nsswitch.conf
- /etc/networks
정답 보기
1번 /etc/resolv.conf
/etc/resolv.conf다. nameserver 항목에 DNS 서버 주소를 적는다. /etc/hosts는 이름과 IP를 직접 짝지어 두는 파일이다.
Q4. IP 주소로 도메인 이름을 찾는 역방향 조회에 쓰는 레코드는?
- PTR
- CNAME
- NS
- A
정답 보기
1번 PTR
PTR 레코드다. IP 주소에서 도메인 이름을 찾는다. A는 반대로 도메인 이름에서 IP 주소를, CNAME은 별칭을 정한다.
Q5. 리눅스에서 이름 해석 순서를 정하는 파일은?
- /etc/hostname
- /etc/resolv.conf
- /etc/hosts
- /etc/nsswitch.conf
정답 보기
4번 /etc/nsswitch.conf
nsswitch.conf의 hosts 줄.
Q6. 도메인의 별칭을 지정하는 레코드는?
- SOA
- MX
- AAAA
- CNAME
정답 보기
4번 CNAME
CNAME(Canonical NAME).
헷갈리기 쉬운 O·X
/etc/resolv.conf에는 DNS 서버를 여러 개 적을 수 있다.
정답 보기
O nameserver 줄을 최대 3개까지.
AAAA 레코드는 이름을 IPv4 주소로 대응시킨다.
정답 보기
X AAAA는 IPv6. IPv4는 A.
/etc/hostname에는 DNS 서버 주소를 적는다.
정답 보기
X hostname은 이 컴퓨터의 이름. DNS 서버는 resolv.conf.