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

Вопрос или проблема

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

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

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

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

Мои текущие выводы:

  • 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.

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

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

hosts: files dns

на эту:

hosts: files dns wins

Затем протестируйте, пингуя имя компьютера с машины Windows в LAN:

$ ping windowsbox

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

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

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

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

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

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

apt-cache search dnsmasq…

Ответ или решение

Почему компьютеры на Windows могут разрешать локальные имена, в то время как Linux не может?

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

1. Использование протокола NetBIOS

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

2. Отсутствие встроенной поддержки для NetBIOS в Linux

На большинстве современных дистрибутивов Linux (например, Ubuntu, Fedora и др.) в качестве основного протокола именования используется Avahi, который обеспечивает поддержку mDNS (Multicast DNS). При этом, Avahi использует доменные суффиксы .local, что позволяет указывать на имена хостов в локальной сети. Однако, чтобы Linux-машины могли видеть друг друга, необходимо, чтобы соответствующее программное обеспечение было установлено и настроено.

3. Необходимость установки Samba и настройки NSS

Хотя дистрибутивы Linux могут использовать Avahi для локального разрешения имен, при этом изначально они не настроены для использования протокола NetBIOS по умолчанию. Установка пакета Samba на Linux-машину позволяет этой машине отправлять широковещательные запросы и отвечать на них, что дает возможность Windows-компьютерам обнаруживать ее. Однако для того, чтобы Linux-машины могли использовать NetBIOS для разрешения имен, необходимо внести изменения в файл конфигурации /etc/nsswitch.conf:

hosts:          files dns wins

4. Потребности в дополнительных пакетах

Для успешного использования NetBIOS и Samba может потребоваться установка дополнительных пакетов, таких как winbind и libnss-winbind. Эти пакеты позволяют Linux-машинам совместно использовать имена и обеспечивают полный функционал для взаимодействия с Windows-системами.

5. Альтернативные решения

Существует несколько способов решить проблему разрешения имен в сети. Вы можете:

  • Установить Avahi на Windows: Хотя Windows-системы используют LLMNR, установка Avahi позволит Linux-компьютерам видеть их.
  • Настроить сервер DNS: Если у вас есть возможность, настройка локального DNS-сервера с поддержкой динамических обновлений позволит всем устройствам в сети правильно разрешать имена.

Заключение

Разрешение локальных имен в параллельных сетях Windows и Linux зависит от используемых протоколов и установленного программного обеспечения. Windows использует NetBIOS по умолчанию, тогда как Linux требует дополнительных настроек для достижения аналогичного поведения. Инсталляция Samba и корректная настройка конфигурации позволят Linux-машинам взаимодействовать по именам, что значительно упростит управление и взаимодействие в локальной сети.

Оцените материал
Добавить комментарий

Капча загружается...