DNS 오류 증상
curl: Could not resolve host: example.comssh: Could not resolve hostname- 브라우저에서 특정 사이트만 접속 안 됨
- ping은 되는데 도메인으로 접속 안 됨
기본 확인 도구
Bash
# 현재 DNS 서버 확인
cat /etc/resolv.conf
# nameserver 8.8.8.8
# nameserver 1.1.1.1
# 기본 DNS 조회 (nslookup)
nslookup google.com
nslookup google.com 8.8.8.8 # 특정 DNS 서버로 조회
# host 명령
host google.com
host google.com 1.1.1.1
# 역방향 조회 (IP → 도메인)
nslookup 8.8.8.8
host 8.8.8.8dig — 상세 DNS 분석
Bash
# A 레코드 조회
dig google.com
# 특정 레코드 타입
dig google.com A
dig google.com AAAA # IPv6
dig google.com MX # 메일 서버
dig google.com TXT # SPF, DKIM 등
dig google.com NS # 네임서버
dig google.com CNAME # 별칭
# 특정 DNS 서버로 조회 (@)
dig @8.8.8.8 google.com
dig @1.1.1.1 google.com
# 짧은 출력 (+short)
dig +short google.com
dig +short google.com MX
# 전파 확인 (여러 DNS에서 조회)
for ns in 8.8.8.8 1.1.1.1 9.9.9.9 208.67.222.222; do
echo -n "$ns: "; dig +short @$ns example.com
done
# 추적 (루트 → TLD → 권한 서버 순서)
dig +trace google.comsystemd-resolved (Ubuntu 22.04+)
Bash
# 현재 DNS 설정 확인
resolvectl status
resolvectl dns
# 특정 도메인 조회
resolvectl query google.com
# DNS 캐시 초기화
sudo resolvectl flush-caches
# 통계
resolvectl statistics
# DNS 서버 임시 변경
sudo resolvectl dns eth0 8.8.8.8 1.1.1.1흔한 DNS 문제와 해결
문제 1: /etc/resolv.conf가 비어있거나 잘못됨
Bash
cat /etc/resolv.conf
# 임시 수정
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
echo "nameserver 1.1.1.1" | sudo tee -a /etc/resolv.conf
# Ubuntu 영구 설정 (systemd-resolved 사용)
sudo nano /etc/systemd/resolved.conf
# [Resolve]
# DNS=8.8.8.8 1.1.1.1
# FallbackDNS=9.9.9.9
sudo systemctl restart systemd-resolved문제 2: 특정 도메인만 안 됨 (캐시 오염)
Bash
# DNS 캐시 초기화
sudo resolvectl flush-caches # systemd-resolved
sudo systemd-resolve --flush-caches
# nscd 캐시 초기화 (설치된 경우)
sudo systemctl restart nscd
# 직접 DNS 서버로 조회해서 비교
dig @8.8.8.8 example.com
dig @로컬DNS서버 example.com문제 3: 내부 DNS 서버 못 찾음
Bash
# VPN/사내망에서 내부 도메인 해석 안 될 때
# search 도메인 설정 확인
cat /etc/resolv.conf | grep search
# 특정 도메인에 다른 DNS 사용 (systemd-resolved)
# /etc/systemd/resolved.conf.d/internal.conf
# [Resolve]
# DNS=10.0.0.1
# Domains=internal.example.com문제 4: TTL 전파 대기
Bash
# TTL 확인 (레코드 만료까지 대기 시간)
dig google.com | grep -A1 "ANSWER SECTION"
# google.com. 299 IN A 142.250.196.110
# ↑ 299초 후 캐시 만료
# 새 레코드 전파 확인
dig +short @ns1.registrar.com yourdomain.com
dig +short @8.8.8.8 yourdomain.com점검 체크리스트
Bash
# 1. 기본 인터넷 연결 확인
ping -c 3 8.8.8.8
# 2. DNS 해석 확인
dig +short @8.8.8.8 google.com
# 3. 로컬 DNS 서버 확인
dig +short google.com
# 4. /etc/hosts 확인 (강제 오버라이드 여부)
cat /etc/hosts | grep -v "^#" | grep -v "^$"
# 5. DNS 서버 응답 속도
dig @8.8.8.8 google.com | grep "Query time"편집 안내 · Editorial Note
이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.
관련 공식 문서GNU/Linux man 페이지 ↗
질문 & 답변 (Q&A)
이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.