Чому машини 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, крім маршрутизатора?
Пер Сальмі

Невпевнені в цьому конкретному маршрутизаторі, але більшість маршрутизаторів споживачів не інтегрують клієнтів 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. Ось основний набір інструкцій :

Щоб увімкнути роздільну здатність імені Windows netbios з комп’ютера Linux, переконайтеся, що встановлено Samba (хоча сервіс smb не потрібно запускати). Набір Samba включає winbind, що дозволяє вирішувати імена хостів Windows. Потім відредагуйте /etc/nsswitch.conf та змініть цей рядок:

hosts: files dns

до цього:

hosts: files dns wins

Потім перевіряйте, вводячи пінг в комп'ютерне ім'я машини Windows в локальній мережі:

$ ping windowsbox

До речі, це не має нічого спільного безпосередньо з WINS. WINS - це сервер NetBIOS, який зазвичай використовується у великих мережах для скорочення трансляційного трафіку, надання застарілої централізованої платформи роздільної здатності імен та, в кінцевому рахунку, для того, щоб системи в різних мережах знали відображення мереж NetBIOS від імені до IP.

Альтернативою SAMBA було б встановити DNS-сервер і забезпечити налаштування динамічних оновлень DNS або DHCP може реєструвати записи DNS.


3

Найімовірніше LLMNR .


1
Отже, що змусило машини Windows знаходити скриньки Linux, використовуючи інформацію про зареєстрований на маршрутизаторі DHCP? Але Linux не підтримує використання зареєстрованих ігрових імен, щоб знайти щось?
Пер Сальмі

3
Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Марк Хендерсон

Це не здається, що LLMNR пояснює, чому Windows може знайти вікна Linux, але не навпаки. Якщо Linux не використовує LLMNR, це призведе до того, що Windows знайде Windows, але не Linux?
Пер Сальмі

2

Вам, мабуть, просто потрібно налаштувати роздільну здатність Avahi / mDNS. Це так само, як LLMNR у Windows.


0

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

Більшість дистрибутивів Linux мають декілька припущень щодо ваших програмних вимог, що перевищують ядро ​​... Посилання на Debian DNSMasq

apt-кеш пошуку dnsmasq ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.