이것이 그 경우 다. avahi를 통해 여러 도메인을 게시하는 홈 서버가 있습니다.
Avahi 및 resolvctl은 클라이언트(ubuntu 22)에 설치됩니다.
파일에서 /etc/nsswitch.conf
- hosts: files mdns4_minimal [NOTFOUND=return] dns
.이것은 정상적으로 보입니다.
하지만,
$ avahi-resolve -n whoami.homeserver.local
whoami.homeserver.local 192.168.0.4
하지만 Ping이나 Curl을 통해 주소를 해결하려고 하면
$ curl whoami.homeserver.local
curl: (6) Could not resolve host: whoami.homeserver.local
UPD: 흥미롭습니다. homeserver.local
기본 이름이 ping을 통해 올바르게 확인되었습니다.
답변1
mDNS를 통해 3개의 태그 이름을 확인하려고 합니다.
일반적으로 mdns4_minimal
2개의 태그 이름만 구문 분석됩니다.
바라보다libnss-mdns 파서 라이브러리의 소스 코드:
// If mdns_allow_file is NULL, then this implements the "local" SOA
// check and two-label name checks similarly to the algorithm
// described at https://support.apple.com/en-us/HT201275. This means
// that if a unicast DNS server claims authority on "local", or if the
// user tries to resolve a >2-label name, we will not do mDNS resolution.
언급된 Apple 지원 문서는 더 이상 존재하지 않지만archive.org에서 볼 수 있습니다..
여기서 언급된 것은 mdns_allow_file
빌드 시간 구성 가능 ${sysconfdir}/mdns.allow
(일반적으로 /etc/mdns.allow
)을 나타냅니다. 이 파일이 존재하는지 테스트합니다 mdns4_minimal
. 존재하는 경우 더 넓은 mDNS 조회가 허용됩니다. 이것이 없으면 기본적으로 <single_label>.local
양식의 두 레이블 이름만 mDNS를 통해 조회됩니다. local.
일반 DNS SOA 레코드가 발견되면 조회도 건너뛰게 됩니다.
mDNS가 도입되었을 때 많은 조직이 이미 내부 DNS 계층 구조를 .local
또는 .organization.local
.
mDNS 사용 할당과 관련된 문제를 최소화하기 위해 우리는 타협점에 도달했습니다. 기본적으로 mDNS는 더 넓은 사용을 위해 특별히 활성화하지 않는 한 .local
으로 끝나는 이중 레이블 이름에서만 작동합니다 . .local
이렇게 하면 세 개 이상의 태그로 끝나는 이름을 이전처럼 확인할 수 있지만 .local
mDNS/Zeroconf/Bonjour를 위해 mDNS/Zeroconf/Bonjour로 끝나는 두 개의 태그 이름이 유지됩니다..local
문서가 잘 정리되어 있지 않은 것 같지만,유익한 커밋 메시지에 대한 지원 추가:
버전 0.5부터 에서 사용할 수 있는
nss-mdns
간단한 구성 파일이 있습니다 . 이 파일에는 줄 바꿈으로 구분된 유효한 도메인 접미사가 포함되어 있습니다. #으로 시작하는 주석과 마찬가지로 빈 줄은 무시됩니다. 도메인 접미사에 관계없이 모든 이름에 대해 mDNS 조회를 활성화하려면 다음만 포함하는 줄을 추가합니다( 버전 <= 0.4의 작동 모드와 유사)./etc/mdns.allow
.local
*
nss-mdns
# /etc/mdns.allow *
구성 파일이 존재하지 않거나 읽을 수 없는 경우
nss-mdns
동작은 다음 내용이 포함된 구성 파일을 읽는 것과 같습니다.# /etc/mdns.allow .local. .local
즉, 로 끝나는 호스트 이름만
.local
mDNS를 통해 확인됩니다.구성 파일이 존재하지만 비어 있으면 mDNS 이름 조회가 완전히 비활성화됩니다.
독서이름이 mDNS 조회를 허용하는지 여부를 결정하는 함수의 소스 코드/etc/mdns.allow
else
파일이 존재하지 않는 경우( 가장 바깥쪽 if...then...else
절의 분기) 에만 이중 레이블 제한이 적용됨을 나타냅니다 .분명히 2-레이블 휴리스틱은 mdns.allow
논문이 구현된 지 10년 후에 추가되었습니다.
따라서 3개의 레이블로 구성된 mDNS 이름이 작동하도록 하고 다른 모든 이름은 그대로 작동하도록 하려면 /etc/mdns.allow
다음 콘텐츠가 포함된 파일을 생성해야 합니다.
.local.
.local