winbindはクエリで無効なnetbiosサービスコードを使用します。

winbindはクエリで無効なnetbiosサービスコードを使用します。

私は先日、Ubuntu VMを使用してローカルネットワーク上のNetBIOS名を解決し、NetBIOS名はありませんが成功しなかったコンピュータではないデバイス(プリンタ、特殊バーコードなど)を見つけようとしました。固定IP

最初はnsswitch.confが言及されているすべてのWebページを読んで、私の設定が正しいはずだと確信していましたが、構文解析のためにwinbind / winsの使用を設定できないと思いました。

実行すると、nmblookup printername次の成功した結果が返されます。
x.x.x.x printername<00>
これが私の最初の手がかりである<00>サービスタイプでした。 Wiresharkを起動して実行しようとしましたが、ping printernameNetBIOSブロードキャスト要求を見ましたが、printername<20>誰も応答しませんでした。

winbinddサービスを停止し、次のコマンドを使用してフォアグラウンドで手動で実行しました。
sudo winbindd -F -S -d 10
その後、同じpingを試みると、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>はファイル/印刷共有サービスに使用されるため正確です。 SambaでWINSサービスを設定してみましたか?クライアントがリストにない共有を要求すると、デフォルトのサービスタイプが提供されますsmb.conf

関連情報