카테고리 없음
Linux에서의 이름 해석(Name Resolution) 경로 이해하기
지기(ZIGI)
2025. 11. 10. 21:49
Today Keys : linux, name, resolution, domain, query, dns, ip, glibc, nss, resolver, 질의
리눅스(Linux)의 이름 해석(Name Resolution) 경로
| 구분 | 내용 | 동작 방식 |
| 시스템 해석기 경로 | gblic + NSS(Name Service Switch) | 운영체제의 표준 경로로, /etc/nsswitch.conf 규칙에 따라서 지정된 순서대로 질의 수행 |
| DNS 직접 질의 | 라이브러리에서 자체 질의 수행 | 운영체제 표준 경로와 상관 없이, /etc/resolv.conf에 선언된 DNS 서버로 직접 질의 수행 |
시스템 해석기 경로 (glibc + NSS)
- 운영체제의 공식 이름 해석(Name Resolution) 체계
- /etc/nsswitch.conf 파일의 hosts: 항목에 따라 이름 해석(Name Resolution)을 수행
- hosts 항목 작성 예시 및 항목 설명
hosts: files resolve dns myhostname
#glibc가 nsswitch.conf의 hosts에 정의된 순서대로 이름을 해석(hostname lookup), 즉 순차 처리
구분 내용 files /etc/hosts 파일에서 검색 resolve systemd-resolved에게 질의 (D-Bus 인터페이스) dns /etc/resolv.conf에 정의된 네임서버로 직접 질의 myhostname 로컬 호스트명/루프백 해석
DNS 직접 질의
- Application, Runtime에서 glibc NSS를 우회하고, 직접 /etc/resolv.conf 에 설정된 Name Server로 질의하기도 함.
- /etc/resolv.conf 를 직접 질의하는 예
- Node.js : dns.resolve()
- GO : cgo 비활성
- Python + dnspython
- nginx : resolver 지시자 사용시
리눅스(Linux)의 이름 해석(Name Resolution) 경로에 따른 발생 가능 이슈
- 시스템 해석기 경로(glibc+NSS)가 아닌 DNS 직접 질의를 하는 경우에는 '/etc/hosts' 에 설정한 값이 적용되지 않기 때문에 동일한 도메인에 대한 결과 값이 상이하거나, 아예 질의가 안될 수 있음(Ex. '/etc/hosts' 에서만 적용한 개발용 도메인)
- DNS Cache를 적용이 되지 않음
리눅스(Linux)의 이름 해석(Name Resolution) 경로 이슈 대응
- /etc/resolv.conf 를 stub(127.0.0.53)으로 설정
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf #systemd-resolved의 stub-resolv를 stub으로 사용 #/run/systemd/resolve/resolv.conf 에 upstream dns 설정 # /etc/resolv.conf는 NetworkManager를 통해서도 관리되기 때문에 # /etc/NetworkManager/NetworkManager.conf 에서 dns=none 혹은 dns=systemd-resolved 옵션을 지정 - Application 설계 시, DNS 직접 질의를 하지 않도록 설계 필요