Почему машины 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


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 .


1
Так что же заставило бы машины Windows находить Linux-боксы, используя информацию о зарегистрированном DHCP маршрутизатора? Но Linux не поддерживает использование зарегистрированных имен маршрутизатора, чтобы найти что-нибудь?
— Per Salmi

3
Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
— Марк Хендерсон

Не похоже, что LLMNR объясняет, почему Windows может найти Linux-боксы, а не наоборот. Если Linux не использует LLMNR, это приведет к тому, что Windows найдет Windows, но не Linux?
— Per Salmi

2

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


0

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

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

apt-cache search dnsmasq ...

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.