winbind がクエリで間違った netbios サービス コードを使用する

winbind がクエリで間違った netbios サービス コードを使用する

過去 1 日間、Ubuntu VM でローカル ネットワーク上の NetBIOS 名を解決し、固定 IP を持たないコンピューター以外のデバイス (プリンター、特殊なバーコード マシンなど) を見つけようとしましたが、失敗しました。

最初は、nsswitch.conf について言及しているすべての Web ページを読んでいて、自分の設定が正しいはずだと確信していたにもかかわらず、解決のために winbind/wins を使用するように設定できていないのだと思いました。

を実行するとnmblookup printername、次のような成功した結果が返されます。
x.x.x.x printername<00>
これが最初の手がかり、<00> サービス タイプでした。Wireshark を起動して を試行したところping printername、 を要求する NetBIOS ブロードキャストが表示されました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

関連情報