在过去的一天里,我一直在尝试让我的 Ubuntu VM 能够解析本地网络上的 NetBIOS 名称,找到一些没有 NetBIOS 名称的非计算机设备(打印机、特殊条形码机等),但没有成功。固定IP。
起初,我认为我无法配置 winbind/wins 的使用来进行解析,尽管我已经阅读了所有提到过 nsswitch.conf 的网页,并且我确信我的配置应该是正确的。
运行nmblookup printername
返回一个成功的结果,如下所示:
x.x.x.x printername<00>
这是我的第一个线索,<00> 服务类型。我启动了wireshark,并尝试执行ping printername
,但我看到了一个NetBIOS 广播请求printername<20>
,但没有人回复。
我停止了 winbindd 服务,并使用以下命令在前台手动运行它:
sudo winbindd -F -S -d 10
然后尝试相同的 ping,我看到 winbindd 尝试使用 <20> 而不是 <00> 进行相同的错误查询。
为什么会发生这种情况?这个可以在哪里配置呢?
编辑:关闭这个问题,因为这是在源代码中硬编码的。深入研究代码,我在 winbindd_wins_byname.c 中找到了该函数,其编码如下:
subreq = resolve_wins_send(state, ev, state->request->data.winsreq, 0x20);
答案1
您应该获得以下回报:
x.x.x.x printername<20>
windbindd
是正确的,因为服务类型 <20> 用于文件/打印共享服务。您是否尝试过从 samba 进行 WINS 服务配置?如果客户端请求的共享未在 中列出,则将提供默认服务类型smb.conf
。