- Вопрос или проблема
- Ответ или решение
- Почему компьютеры на Windows могут разрешать локальные имена, в то время как Linux не может?
- 1. Использование протокола NetBIOS
- 2. Отсутствие встроенной поддержки для NetBIOS в Linux
- 3. Необходимость установки Samba и настройки NSS
- 4. Потребности в дополнительных пакетах
- 5. Альтернативные решения
- Заключение
Вопрос или проблема
У меня небольшая сеть с машинами на 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-машинам взаимодействовать по именам, что значительно упростит управление и взаимодействие в локальной сети.