web-dev-qa-db-ja.com

「.local」は何をしますか?

自宅のネットワーク上にいくつかのUbuntuマシンがありますが、DNSはWindowsサーバー(2K)によって提供されます。他からsshにsshするとき、「machine」としてsshに接続すると接続できませんが、「machine.local」として接続すると接続できます。

同様に、Windowsクライアント(PuTTYなど)からも接続できないと思います。

何が起きてる? -それは明らかにUbuntuのことです。

26
Marc

デフォルトでは、Ubuntuにはavahiが含まれています。これは、仮想ホスト名を仮想「.local」名で解決できるようにするzeroconfの実装です。コンピューターが「hostname.local」に接続しようとするたびに、avahiはローカルネットワークブロードキャストを実行して、そのホスト名を持つコンピューターがあるかどうかを確認します。 avahi(または互換性のあるもの)を実行している他のコンピューターが応答するはずです。

/etc/nsswitch.confを見ると、次の行があります。

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

Mdns4_minimalは、このリダイレクトを機能させる構成設定です。

あなたの質問は、「hostname.local」を使用してUbuntuコンピューターに接続できると言っているように、avahiが正常に実行されていることを実際に示唆しています。ただし、別のUbuntuコンピューターまたは別のWindowsコンピューターから接続しようとしている場合は、明確にしません(「別のユーザーからsshするとき...」)。 Bonjourなどの他のソフトウェアをインストールしないと、Windowsコンピューターはzeroconfスタイルの「hostname.local」名を解決できません。

32
user8979

問題を解決するには、Avahiが必要です。これにより、Ubuntuマシン名がWindowsロットにアナウンスされます。

Sudo apt-get install avahi-daemon

machinename.localは、Appleが作成した(IIRC)Bonjourと呼ばれるzeroconf(Avahiも同じ)の別の実装のおかげで機能します。デフォルトでインストールされます。なぜアバヒもそうではないのかは知りませんが、それが人々を引き起こす混乱を考えると、おそらくそうではないでしょう。

ウィキペディアにはこれに関する詳細があります。 http://en.wikipedia.org/wiki/.local

13
Oli