過去 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
。