반응형
Linux 시스템에서 DNS(Domain Name System) 질의 방식은 단순한 것 같지만, 실제로는 resolv.conf에 있는 옵션 하나에 따라 성능이나 결과가 달라질 수 있습니다.
그중에서도 자주 보이는 options ndots:5는
DNS 해석 시 어떤 순서로 도메인을 찾을지를 결정하는 핵심 옵션입니다.
✅ ndots란 무엇인가요?
ndots는 "Name with DOTS"의 줄임말로,
도메인 이름에 몇 개의 점(.)이 포함되어 있어야 "완전한 도메인"으로 인식할지를 정의합니다.
문법:
options ndots:N
- N은 정수이며 기본값은 1
- 도메인에 .(점)이 N개 이상 있으면 FQDN (완전한 도메인 이름)으로 간주
🔍 예를 들어볼게요
ndots:5일 때,
DNS 클라이언트가 "test.service"라는 도메인을 질의하면:
- "test.service"에는 점이 1개 → 5보다 작음
- 따라서 search 도메인을 붙여서 먼저 질의함
test.service.default.svc.cluster.local test.service.svc.cluster.local ...
- 그래도 실패하면 test.service 자체로 최종 질의
🚀 ndots 값이 높을수록?
- 내부 DNS 탐색(search domain 사용)을 더 적극적으로 먼저 시도함
- 그만큼 응답 속도가 느려질 수도 있음
- 특히 클라우드나 Kubernetes 환경에서 FQDN이 자주 쓰일 경우 비효율 발생 가능
💡 Azure VM에서 왜 ndots:5일까?
Azure VM(특히 Linux 기반)에서는 내부 DNS 이름(예: vmname.internal.cloudapp.net) 해석이 필요한 경우가 많기 때문에:
- ndots:5를 설정하여 대부분의 짧은 이름들이 내부 DNS 도메인을 통해 먼저 해석되도록 유도
- DNS 검색 순서를 보장하고 내부 통신의 안정성을 높이기 위함
⚠️ 주의할 점
문제설명
느린 DNS 응답 | search domain이 많으면 질의 순서가 많아져서 느려질 수 있음 |
FQDN 사용 시 비효율 | 이미 완전한 도메인인데도 search domain을 붙여 시도함 |
Kubernetes 환경과 충돌 | K8s에서는 ndots:5 설정이 일부 오류나 느림의 원인이 될 수 있음 |
👉 그래서 Kubernetes 환경에서는 보통 ndots:1이 추천됩니다.
✅ 요약
options ndots:5는 DNS 질의 시, 도메인에 점이 5개 미만이면
search domain을 먼저 붙여서 시도하게 만드는 설정입니다.
항목설명
기본값 | ndots:1 |
Azure 기본값 | ndots:5 |
영향 | 내부 도메인 우선 해석 가능, 그러나 속도 저하 가능성 있음 |
변경 방법 | /etc/resolv.conf 수동 수정 (일시적) 또는 systemd-resolved 조정 (지속적) |
반응형