Linux 구문 분석 순서는 무엇입니까 DNS
? 을 읽고 /etc/nsswitch.conf
을 읽은 hosts
다음 DNS로 이동한 /etc/resolv.conf
다음 네트워크 연결로 이동 하시겠습니까 DNS
?
나는 이것에 대해 거의 아는 바가 없으며 DNS
이해하는 데 도움이 될 수 있는 답변을 주시면 정말 감사하겠습니다.
답변1
Linux가 DNS를 확인하는 순서는 다음과 같습니다.매우 구성 가능.
hosts:
의 줄을 읽는 것부터 시작하세요 /etc/nsswitch.conf
. 이 줄의 키워드는 다양한 소스가 사용되는 순서를 지정합니다.
사용 가능한 키워드 세트는 Linux 배포판에 따라 다릅니다. 고전적인 것들은 다음과 같습니다:
files
시스템에 읽도록 지시/etc/hosts
dns
에 지정된 DNS 서버를 사용하도록 시스템에 지시합니다/etc/resolv.conf
. (사용 중인 최신 시스템에서는systemd-resolved
결국 이 기능을 더 이상 사용하지 않게 만들 수 있습니다.)nis
또는nisplus
NIS/NIS+ 시스템에 대한 중앙 관리 호스트 테이블을 참조하십시오(실제로는 사용되지 않음).compat
와 유사files
하지만 이전에 사용된 이전 NIS 확장 구문도 허용합니다/etc/nsswitch.conf
. (실제로는 구식)
최신 시스템에는 다음과 같은 새로운 키워드가 추가될 수 있습니다.
resolve
시스템에 을 사용하도록 지시합니다systemd-resolved
. 이 키워드가 있는 경우 이resolvectl
명령을 사용하여 실제 DNS 서버 설정을 확인합니다.dns
키워드도 없으면 파일/etc/resolv.conf
이완전히 무시됨.mdns4_minimal
,mdns6_minimal
또는 각각 IPv4, IPv6 또는 둘 다를 사용하여 적절한 멀티캐스트 주소로 mDNS 패킷을 전송하여 짧은 호스트 이름이나 긴 이름 형식을 확인mdns_minimal
하도록 시스템에 지시합니다 .shortname.local
멀티캐스트 주소는 IPv4의 경우 224.0.0.251이고 IPv6의 경우 ff02::fb이며, 두 경우 모두 대상 포트는 5353/UDP입니다. 동일한 네트워크의 다른 시스템이 다른 mDNS 응답기로 구성된 경우 실제 DNS 서버를 설정하거나 각 시스템에서 파일을 유지 관리avahi-daemon
하지 않고도 로컬 네트워크 세그먼트의 호스트 이름을 사용할 수 있습니다 ./etc/hosts
myhostname
/etc/hosts
DNS 서버가 구성되어 있지 않고 네트워크 연결이 존재하지 않는 경우에도 시스템이 항상 자체 호스트 이름을 성공적으로 확인할 수 있도록 합니다 .mymachines
시스템이 다음을 사용하여 설정된 가상 머신의 호스트 이름을 자동으로 확인할 수 있습니다.systemd-machined.service
/etc/nsswitch.conf
이름 서비스 전환 API를 구현하는 공유 라이브러리를 제공하여 시스템을 확장할 수 있으므로 다른 키워드가 있을 수 있습니다 libnss_<keyword>.so*
.
nameserver 127.0.0.53
에 줄이 보이면 /etc/resolv.conf
이 플래그도 사용 중인 플래그이므로 실제 DNS 설정을 확인하는 데 systemd-resolved
사용해야 합니다 .resolvectl
대부분의 프로그램은 C 표준 라이브러리의 호스트 이름 확인 기능(일반적으로 glibc
)을 사용하지만 일부 아주 오래된 프로그램이나 DNS 진단을 위해 특별히 설계된 프로그램은 /etc/resolv.conf
직접 읽습니다.
resolve
in 키워드를 사용하면 /etc/nsswitch.conf
C 표준 라이브러리의 호스트 이름 확인 기능이 로 직접 라우팅되며 systemd-resolved
, nameserver 127.0.0.53
in은 /etc/resolv.conf
로컬 systemd-resolved
.
키워드 교체를 고려하면 연결별 DNS 서버의 개념을 실제로 지원하지 않기 때문에 모든 DNS 서버가 동일한 것을 알고 있다는 기본 가정이 있으므로 하나의 DNS 서버가 무언가를 말하면 알지 못합니다 dns
. /etc/resolv.conf
존재한다면 그들은 다른 DNS 서버에 2차 의견을 요청할 이유가 없다고 생각합니다.
systemd-resolved
연결별 DNS 서버 구성을 허용하고 특정 도메인에 대한 쿼리가 연결별 DNS 서버로 전달되도록 허용합니다.
(기술적으로 DNS 서버가 "요청한 레코드가 존재하지 않습니다."라고 응답하는 경우,오류가 아닌 유효한 답변입니다.- 비록 이것이 당신이 원하는 대답이 아닐 수도 있습니다. "나는 그 질문에 대답할 수 없습니다" 또는 "나는 당신에게 말할 수 없습니다"와 같은 응답만이 잘못된 것입니다. )