Почему машины Windows могут разрешать локальные имена, а Linux - нет?

18

У меня есть небольшая сеть с машинами Windows и Linux, подключенными к маршрутизатору D-Link DIR-825.

Машины Windows в сети могут обращаться ко всем остальным машинам по именам, в то время как машины Linux могут достигать других машин только по IP-адресу.

Я вижу все машины, перечисленные с именами и назначенными им адресами DHCP, в списке состояний клиентов DHCP в интерфейсе веб-администратора маршрутизатора.

Почему машины Linux не могут найти другую машину по имени, в то время как у Windows нет проблем с поиском машин Linux?

Пер Салми
источник
2
Как выполняется разрешение вашего имени? DNS? У вас настроен суффикс поиска?
Шейн Мэдден
Все машины используют DHCP, подключенный к маршрутизатору D-Link, где они, кажется, регистрируются, и этого, вероятно, достаточно для Windows, чтобы найти все машины. Но машинам Linux они действительно нуждаются в локальном сервере DNS кроме маршрутизатора?
Per Salmi
Не уверен насчет этого конкретного маршрутизатора, но большинство потребительских маршрутизаторов не интегрируют клиентов DHCP в свою внутреннюю службу DNS. Ответ Джо, вероятно, ваш виновник.
Шейн Мэдден
Тогда машины Linux будут отвечать на сообщения LLMNR, но сами не будут использовать его для поиска других машин?
Пер Сальми

Ответы:

32

Я не сетевой эксперт, и я также исследую много ответов на эту тему. Мои текущие выводы:

  • Windows использует имена NetBIOS, и такой протокол, будучи широковещательным, позволяет им находить друг друга без какого-либо центрального сервера.

  • Машины Linux в современных дистрибутивах изначально используют протокол под названием Avahi , который также является независимым от сервера широковещательным протоколом. Локальные сетевые машины имеют суффикс .local, так что вы можете пропинговать Linux с Linux, используяping hostname.local , или просмотреть их с помощью avahi-discoverпакета. некоторые приложения в Gnome используют avahi для вывода списка компьютеров в сети (например, средство просмотра удаленных рабочих столов)

  • Установка SAMBA на компьютере с Linux назначит ему имя NetBIOS (или, что более технически, заставит машину Linux объявить себя в широковещательных запросах со своим именем NetBIOS, которое по умолчанию является их именем хоста), и это позволит машинам Windows найти Linux те .

  • Понятно: хотя машины Linux с Samba будут отвечать на запросы протокола NetBIOS, с настройками по умолчанию в таких дистрибутивах, как Ubuntu, он не будет использовать NetBIOS в качестве метода разрешения имен, и именно поэтому машины Linux не могут «видеть» друг друга или Windows машины . Для этого вам нужно отредактировать /etc/nsswitch.confфайл и добавить winsв список в этой строке:

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

  • Вам может понадобиться установить winbind(и, если не установлен автоматически libnss-winbind) пакет, чтобы вышеуказанное работало.

  • Итак, для решения проблемы видимости вы либо устанавливаете Samba на все машины Linux (а также редактируете /etc/nsswitch.conf, чтобы включить разрешение имен NetBIOS), либо устанавливаете поддержку Avahi на машинах Windows.

  • Что касается общего доступа к файлам, Samba предоставляет возможности обмена файлами на компьютерах Linux с Windows. Нет необходимости редактировать /etc/nsswitch.conf для машин Linux, чтобы видеть общие папки друг друга и Windows (и наоборот) в разделе «Сеть» Nautilus.

Я надеюсь, что это помогло! : D

MestreLion
источник
2
для nsswitch.congвещи: если ping HOSTNAMEвыдает системную ошибку, это сигнал о необходимости пакета libnss-winbind.
Майкл Стум
18

По умолчанию без DNS-сервера Windows может использовать NetBIOS (протокол разрешения имен Microsoft) для обнаружения имен других систем Windows, локальных для их сети. Как упоминалось в этом ответе , похоже, что вам нужно настроить SAMBA (или хотя бы winbind) на стороне Linux. Вот основной набор инструкций :

Чтобы разрешить разрешение имен netbios Windows с компьютера Linux, убедитесь, что Samba установлена ​​(хотя служба smb не должна быть запущена). В комплект Samba входит winbind, который позволяет разрешать имена хостов Windows. Затем отредактируйте /etc/nsswitch.conf и измените эту строку:

hosts: files dns

к этому:

hosts: files dns wins

Затем выполните тестирование, отправив команду ping на имя компьютера с Windows в локальной сети:

$ ping windowsbox

Кстати, это не имеет ничего общего с WINS. WINS - это сервер NetBIOS, который обычно используется в больших сетях для сокращения широковещательного трафика, обеспечения устаревшей платформы централизованного разрешения имен и, в конечном итоге, для того, чтобы системы в разных сетях могли знать сопоставление NetBIOS-имен и IP-адресов друг друга.

Альтернативой SAMBA может быть настройка DNS-сервера и обеспечение настройки динамических обновлений DNS или того, что DHCP может регистрировать записи DNS.

Эрик С. Сингер
источник
3

Скорее всего, LLMNR .

joeqwerty
источник
1
Так что же заставило бы машины Windows находить Linux-боксы, используя информацию о зарегистрированном DHCP маршрутизатора? Но Linux не поддерживает использование зарегистрированных имен маршрутизатора, чтобы найти что-нибудь?
Per Salmi
3
Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
Марк Хендерсон
Не похоже, что LLMNR объясняет, почему Windows может найти Linux-боксы, а не наоборот. Если Linux не использует LLMNR, это приведет к тому, что Windows найдет Windows, но не Linux?
Per Salmi
2

Возможно, вам просто нужно настроить разрешение Avahi / mDNS. Это делает то же самое, что LLMNR в Windows.

Juwi
источник
0

Linux может разрешать локальные имена, хотя необходимое программное обеспечение не установлено по умолчанию ...

Большинство дистрибутивов Linux делают несколько предположений относительно ваших требований к программному обеспечению помимо ядра ... Справочник Debian DNSMasq

apt-cache search dnsmasq ...

Эдди Б
источник