Добавление «local» в домены поиска DNS не влияет.

У меня есть Mac Mini (Yosemite) в моей локальной сети, и на нем вообще не работает DNS-сервер. Когда я хочу получить к нему доступ через SSH из терминала на моем Macbook Air (Yosemite), я могу ввести:

$ ssh myserver.local

И это прекрасно работает.

Но я хотел избежать необходимости каждый раз вводить домен «.local», поэтому я добавил «локальный» домен в список доменов поиска в настройках сети (для моего адаптера Wi-Fi, который в настоящее время используется в моем MBA). ).

Если я попытаюсь:

$ ssh myserver

это не работает (не удалось разрешить имя хоста).

Есть идеи, почему?

Ответы (2)

Разрешение имени хоста в Mac OS X (начиная с ~ 10.3) грубо говоря - я исключаю различные механизмы кэширования - следующая последовательность операций:

  1. 'Файлы' (например, /etc/hosts) ->
  2. мДНС ->
  3. DNS (поиск доменов) ->
  4. DNS

Допустимые имена для различных методов разрешения имен:

для 1: почти произвольные имена
для 2: name.local
для 3: имя (+ search.domain в настройках вашей сети) Запись Start Of Authority (SOA) для домена верхнего уровня обязательна.
для 4: полное доменное имя

В вашем первом сценарии ( myserver.local) вы используете только «Файлы» и mDNS. myserver.local«Файлы» не работают, потому что в вашем файле hosts нет записи . mDNS успешно разрешает его, потому что это допустимое и разрешимое имя mDNS.

Во втором сценарии ( myserver& search.domain local) вы используете 1, 2, 3 (и 4). «Файлы» не работают, потому что у вас нет записи myserver, mDNS не работает, потому что это недопустимое имя mDNS. DNS (поиск доменов) не работает, потому что у вас нет DNS-сервера с записью SOA для .local в вашей сети (а также DNS).

Так что просто войдите sudo nano /etc/hostsв Терминал и добавьте строку:

 a.x.y.z      myserver

(axyz= IP-номер вашего сервера) и все должно работать. Если вы действительно ленивы, даже буквы «а» в качестве имени может быть достаточно. Но не используйте одиночные числа (например, 1 или 123), потому что тогда ssh может попытаться подключиться к 0.0.0.1 или 0.0.0.123. По крайней мере, ping подключается к 0.0.0.1 или 0.0.0.123.

Идеальный ответ. Теперь я понимаю разрешение имен в OS X, а также добавил свой сервер в /etc/hosts, чтобы иметь к нему быстрый доступ. Большое спасибо.
@introiboad добро пожаловать ;-) Я попытаюсь улучшить ответ позже, но сначала мне нужно глубже изучить Apple mDNS и DNS. На самом деле это намного сложнее, и есть некоторые изменения между различными системами 10.3-10.10...

Ответ @klanomath прекрасно объясняет, как работает разрешение имен, почему ваша попытка не удалась и как вы можете создать псевдоним на своем локальном компьютере для статического адреса через файл /etc/hosts.

Однако, если myserverу него нет статического адреса, а он назначается динамически (например, DHCP), то /etc/hostsэто не идеально, так как нужно найти какой-то способ обновлять адрес в нем.

Вместо этого для SSH можно создать псевдоним /etc/ssh/ssh_config(для всей системы) или ~/.ssh/config(для пользователя):

Host myserver
    HostName myserver.local

Тогда можно просто ssh myserver.

Спасибо за совет. «myserver» имеет статический IP-адрес (это Mac Mini, действующий как сервер резервного копирования и медиаплеер). Если я когда-нибудь решу переключиться на DHCP, я воспользуюсь функциональностью псевдонима, которую вы описываете.