Linux
DNS
DNS 개념, hosts 파일, DNS 서버 설치 및 설정 정리
1) 개요
DNS(Domain Name Service)
- 문자로 된 주소를 컴퓨터가 이해할 수 있는 IP 주소로 변환해주는 시스템
- 이 과정을 resolution이라고 함
- 문자로 된 주소를 IP로 변환해주는 컴퓨터 → Name Server 또는 DNS Server
- IP 주소를 직접 사용하면 변환 과정이 생략되므로 인터넷 속도가 빨라질 수 있음
2) hosts 파일
역할
- 도메인 이름을 IP 주소에 직접 매핑하는 로컬 DNS 파일
- 도메인을 IP 주소로 로컬에서 강제 지정
127.0.0.1 localhost→localhost입력 시127.0.0.1로 해석 (DNS 조회 생략)
파일 위치
- Linux/Mac OS:
/etc/hosts - Windows:
c:\Windows\System32\drivers\etc\hosts
특정 사이트 차단
0.0.0.0은 접속할 수 없는 IP이므로 연결 즉시 끊김 → 사이트 차단에 활용
hosts 파일 수정 후 체크
- DNS 캐시 삭제 권장
# Linux
sudo systemctl restart systemd-resolved
# Windows
ipconfig /flushdns
hosts와 Name Server 우선 순위
- hosts 파일
- DNS Cache
- DNS Server
운영 서버에서 hosts 사용을 피해야 하는 이유
- DNS 변경이 반영되지 않을 수 있음
- DNS에서 서버 IP 변경 시
/etc/hosts에 기록되어 있으면 변경 적용 안 됨 - 서버 간 통신 장애나 특정 서버에서만 장애 발생
- DNS에서 서버 IP 변경 시
- 서버마다 설정이 달라짐
- 동일 애플리케이션을 여러 대에 배포 시 일관성 붕괴
- 장애 발생 시 원인 추적이 극도로 어려움
- SSH/API/DB 등이 간헐적으로 실패 → 네트워크 문제로 오인
- 서버 교체 또는 오토스케일링과 충돌
- 클라우드 환경(Auto Scaling, Immutable Infrastructure, Blue/Green 배포)에서 새 서버에는 hosts가 없음
- 기존 서버만 제대로 동작, 배포 직후 일부 서버만 장애
- 보안 사고 위험
- 인증 서버를 가짜 서버로 유도 가능 (내부자 공격)
- 운영 자동화 도구와 충돌
- Ansible, Terraform, Kubernetes, CI/CD 파이프라인과 충돌
- 인프라는 DNS 기준, hosts는 로컬 수동 설정
- IPv4/IPv6 우선 순위 문제
- SSH가 IPv6 먼저 시도, 서버는 IPv4만 리슨 → timeout/hang 발생
허용하는 경우
- 로컬 개발 PC
- 개인 테스트 서버
- 단기 장애 우회 (장애 해결 후 즉시 복구)
3) DNS 주요 구성 요소
- DNS Recursive Resolver
- 사용자로부터 쿼리를 받는 첫 번째 지점
- 요청을 받아 실제 주소를 찾음
- Root Name Server
- 호스트 이름을 IP 주소로 변환하는 첫 번째 단계
.com,.net등의 TLD 서버 위치를 알려줌
- TLD Nameserver (최상위 네임 서버)
.com,.org,.kr등 도메인의 확장자 관리- 구체적인 도메인 정보를 가진 네임서버로 안내
- Authoritative Nameserver
- 실제 IP 주소가 저장된 최종 목적지
- 정확한 IP 주소를 알려줌
4) DNS 레코드 종류
| 레코드 | 설명 |
|---|---|
| A Record | 도메인을 IPv4 주소와 연결 (가장 기본) |
| AAAA Record | 도메인을 IPv6와 연결 |
| CNAME | 한 도메인을 다른 도메인으로 연결 |
| MX Record | 해당 도메인의 이메일을 수신할 메일 서버 지정 |
| TXT Record | 도메인에 대한 텍스트 정보, 보안 인증에 사용 |
5) DNS Caching
- 매번 동일한 조회 과정을 거치면 속도가 느려지므로 한 번 찾은 주소는 일정 기간 저장
- 다음 접속 시 DNS Server에 문의하지 않고 컴퓨터 내부에 저장된 기록(브라우저/OS 캐싱)으로 접속
- TTL(Time To Live): DNS 레코드가 캐시에 저장되는 유효 기간
6) DNS 서버 설정
설정 방법
/etc/netplan디렉토리의 YAML 파일/etc/resolv.conf파일
IP 주소를 찾아가는 흐름
- URL 입력
/etc/host.conf조회/etc/hosts확인- 있으면 IP 주소 획득 후 접속
- 없으면
/etc/resolv.conf→ 네임서버 설정 존재 시 질의 → 응답 - 네임서버 설정이 없으면 호스트 이름을 알 수 없다는 에러 발생
7) 도메인 이름 체계
- 트리 구조
- Root Name Server →
com,net,org,edu등 및 국가 도메인(kr,fr,uk,sp) 관리 - com Name Server →
naver,google등 2단계 도메인 관리
8) Name Server 설치 및 설정
설치
sudo apt update
sudo apt install bind9 bind9-utils bind9-doc -y
sudo systemctl status bind9
설정 파일 수정
sudo vi /etc/bind/named.conf.options
options {
directory "/var/cache/bind";
dnssec-validation no;
recursion yes;
allow-query { any; };
listen-on-v6 { any; };
};
서비스 관리
# 서비스 재시작
sudo systemctl restart named
# 부팅 시 자동 시작
sudo systemctl enable named
# 서비스 확인
sudo systemctl status named
# 방화벽 해제 (DNS 포트)
sudo ufw allow 53
네임 서버 동작 확인
dig @네임서버IP URL
클라이언트 설정
- 다른 컴퓨터의
/etc/resolv.conf파일에서nameserver항목을 현재 컴퓨터 IP로 수정
9) 텍스트 기반 브라우저: elinks
- 콘솔 환경에서 사용할 수 있는 텍스트 기반 웹 브라우저
댓글