winbind가 쿼리에서 잘못된 netbios 서비스 코드를 사용합니다.

winbind가 쿼리에서 잘못된 netbios 서비스 코드를 사용합니다.

나는 지난 날 Ubuntu VM을 사용하여 로컬 네트워크에서 NetBIOS 이름을 확인하고 NetBIOS 이름이 없지만 성공하지 못한 컴퓨터가 아닌 장치(프린터, 특수 바코드 등)를 찾으려고 노력했습니다. 고정 IP.

처음에는 nsswitch.conf가 언급된 모든 웹 페이지를 읽었고 내 구성이 정확해야 한다고 확신했지만 구문 분석을 위해 winbind/wins 사용을 구성할 수 없다고 생각했습니다.

실행하면 nmblookup printername다음과 같은 성공적인 결과가 반환됩니다.
x.x.x.x printername<00>
이것이 나의 첫 번째 단서인 <00> 서비스 유형이었습니다. Wireshark를 시작하고 실행을 시도했지만 ping printernameNetBIOS 브로드캐스트 요청을 보았지만 printername<20>아무도 응답하지 않았습니다.

winbindd 서비스를 중지하고 다음 명령을 사용하여 포그라운드에서 수동으로 실행했습니다.
sudo winbindd -F -S -d 10
그런 다음 동일한 핑을 시도하면서 winbindd가 동일한 오류 쿼리에 대해 <00> 대신 <20>을 사용하려고 시도하는 것을 보았습니다.

왜 이런 일이 발생합니까? 어디에서 구성할 수 있나요?

편집: 소스 코드에 하드코딩되어 있으므로 이 질문을 닫으세요. 코드를 더 깊이 파고들어 winbindd_wins_byname.c에서 다음과 같이 코딩된 함수를 찾았습니다.

subreq = resolve_wins_send(state, ev, state->request->data.winsreq, 0x20);

답변1

다음과 같은 결과를 얻어야 합니다:

x.x.x.x printername<20>

windbindd서비스 유형 <20>이 파일/인쇄 공유 서비스에 사용되기 때문에 정확합니다. 삼바에서 WINS 서비스 구성을 시도해 보셨나요? 클라이언트가 목록에 없는 공유를 요청하는 경우 기본 서비스 유형이 제공됩니다 smb.conf.

관련 정보