LinuxができないのにWindowsマシンがローカル名を解決できるのはなぜですか?


18

D-Link DIR-825ルーターにWindowsとLinuxマシンが接続された小さなネットワークがあります。

ネットワーク上のWindowsマシンは名前で他のすべてのマシンに到達できますが、LinuxマシンはIPアドレスでしか他のマシンに到達できません。

ルーターのWeb管理インターフェイスのDHCPクライアントステータスリストに、名前とDHCPが割り当てられたアドレスでリストされているすべてのマシンを確認できます。

WindowsがLinuxマシンを見つけても問題ないのに、Linuxマシンが名前で他のマシンを見つけられないのはなぜですか?


2
名前解決はどのように行われますか?DNS?検索接尾辞が設定されていますか?
シェーンマッデン

すべてのマシンはDHCPを使用しており、D-Linkルーターに接続されており、D-Linkルーターは自分自身を登録しているように見えます。しかし、Linuxマシンはルーター以外のローカルDNSサーバーを本当に必要としますか?
サルミ

特定のルーターについては不明ですが、ほとんどのコンシューマールーターはDHCPクライアントを内部DNSサービスに統合しません。ジョーの答えはおそらくあなたの犯人です。
シェーンマッデン

次に、LinuxマシンはLLMNRメッセージに応答しますが、他のマシンを見つけるためにそれ自体を使用しませんか?
サルミ

回答:


32

私はネットワークの専門家ではありません。また、このトピックの回答を得るためにLOTを調査しています。私の現在の調査結果は次のとおりです。

  • WindowsはNetBIOS名を使用し、そのようなプロトコルはブロードキャストであるため、中央サーバーなしでお互いを見つけることができます。

  • 現代のディストリビューションのLinuxマシンは、サーバーに依存しないブロードキャストプロトコルでもあるAvahiと呼ばれるプロトコルをネイティブに使用します。ローカルネットワークのマシンは、接尾辞を持って.localあなたが使用してLinuxからLinuxへのpingを実行することができますのでping hostname.local、またはでそれらを参照してくださいavahi-discoverパッケージ。Gnomeの一部のアプリは、avahiを使用してネットワーク内のマシンを一覧表示します(たとえば、リモートデスクトップビューアー)

  • Linuxマシン上でSAMBAをインストールすると、NetBIOS名を割り当てます(または、より技術的に、Linuxマシンは、デフォルトでは彼らのホスト名です彼らのNetBIOS名、とブロードキャスト要求自体を広告になります)、そしてそれはWindowsマシンがLinuxを見つけることができますもの

  • 落とし穴:Sambaを搭載したLinuxマシンはNetBIOSプロトコルリクエストに応答しますが、Ubuntuなどのディストリビューションのデフォルト設定では、名前を解決する方法としてNetBIOSを使用しないため、Linuxマシンはお互いやWindowsを「認識」できませんマシン。そのためには、/etc/nsswitch.confファイルを編集しwins、次の行のリストに追加する必要があります。

    hosts: files mdns4_minimal [NOTFOUND=return] dns wins mdns4

  • 上記を機能させるには、パッケージをインストールする必要ありますwinbind(自動的にインストールされない場合はlibnss-winbind)。

  • したがって、可視性の問題については、すべてのLinuxマシンにSambaをインストールする(および/etc/nsswitch.confを編集してNetBIOS名前解決を有効にする)か、WindowsマシンにAvahiサポートをインストールします。

  • ファイル共有に関しては、SambaはWindowsでLinuxマシンのファイル共有機能を提供します。Nautilusの「ネットワーク」セクションで、Linuxマシンの/etc/nsswitch.confを編集して相互の共有フォルダーとWindows(およびその逆)の共有フォルダーを表示する必要はありません。

これがお役に立てば幸いです!:D


2
以下のためnsswitch.congの事:IFがping HOSTNAMEあなたのlibnss-winbindのパッケージが必要であること、信号のシステムエラーを与えます。
マイケルスタム

18

デフォルトでは、DNSサーバーがなくても、WindowsはNetBIOS(Microsoft名前解決プロトコル)を使用して、ネットワークにローカルな他のWindowsシステムの名前を検出できます。この回答で述べように、Linux側でSAMBA(または少なくともwinbind)をセットアップする必要があるようです。ここで、命令の基本的なセットは

LinuxコンピューターからWindows netbios名前解決を有効にするには、Sambaがインストールされていることを確認します(ただし、smbサービスを実行する必要はありません)。Sambaスイートには、Windowsホスト名の解決を可能にするwinbindが含まれています。次に、/ etc / nsswitch.confを編集して、次の行を変更します。

hosts: files dns

これに:

hosts: files dns wins

次に、LAN上のWindowsマシンのコンピューター名にpingを実行してテストします。

$ ping windowsbox

ところで、これはWINSとは直接関係ありません。WINSは、大規模なネットワークで一般的に使用されるNetBIOSサーバーであり、ブロードキャストトラフィックを削減し、レガシーな集中型名前解決プラットフォームを提供し、最終的に異なるネットワーク上のシステムがお互いのNetBIOS名からIPへのマッピングを認識できるようにします。

SAMBAの代替手段は、DNSサーバーをセットアップし、動的DNS更新が構成されていること、またはDHCPがDNSレコードを登録できることを確認することです。


3

おそらくLLMNR


1
それでは、ルーターのDHCP登録情報を使用して、WindowsマシンがLinuxボックスを見つけますか?しかし、Linuxはルーター登録名を使用した検索をサポートしていませんか?
サルミ

3
これは理論的には質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
マークヘンダーソン

LLMNRがWindowsがLinuxボックスを見つけることができるが、その逆はできない理由を説明しているようには感じません。LinuxがLLMNRを使用しない場合、WindowsはWindowsを検出し、Linuxは検出しませんか?
サルミあたり

2

おそらく、Avahi / mDNS Resolutionをセットアップする必要があるだけです。WindowsのLLMNRと同じような動作をします。


0

Linuxはローカル名を解決できますが、必要なソフトウェアはデフォルトではインストールされていません...

ほとんどのLinuxディストリビューションは、カーネル以外のソフトウェア要件に関してほとんど推測しません... DebianリファレンスDNSMasq

apt-cache検索dnsmasq ...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.