Dlaczego komputery z systemem Windows mogą rozpoznawać nazwy lokalne, gdy Linux nie?

18

Mam małą sieć z urządzeniami Windows i Linux podłączonymi do routera D-Link DIR-825.

Komputery z systemem Windows w sieci mogą uzyskać dostęp do wszystkich innych komputerów według nazwy, natomiast komputery z systemem Linux mogą uzyskać dostęp do innych komputerów tylko za pomocą adresu IP.

Widzę wszystkie maszyny z nazwami i przypisanymi do nich adresami DHCP na liście statusu klienta DHCP w interfejsie administratora routera.

Dlaczego maszyny z systemem Linux nie mogą znaleźć żadnej innej maszyny według nazwy, podczas gdy system Windows nie ma problemu ze znalezieniem maszyn z systemem Linux?

Per Salmi
źródło
2
Jak odbywa się rozpoznawanie imienia i nazwiska? DNS? Czy masz skonfigurowany sufiks wyszukiwania?
Shane Madden
Wszystkie komputery używają DHCP, podłączonego do routera D-Link, w którym wydają się rejestrować i prawdopodobnie wystarczy, aby Windows znalazł wszystkie komputery. Ale czy maszyny z systemem Linux naprawdę wymagają lokalnego serwera DNS innego niż router?
Per Salmi
Nie jesteś pewien tego konkretnego routera, ale większość routerów konsumenckich nie integruje klientów DHCP z wewnętrzną usługą DNS. Odpowiedź Joe jest prawdopodobnie twoim winowajcą.
Shane Madden
Czy maszyny z systemem Linux zareagowałyby na komunikaty LLMNR, ale same nie wykorzystałyby ich do znalezienia innych maszyn?
Per Salmi

Odpowiedzi:

32

Nie jestem ekspertem od sieci, a także dużo szukam odpowiedzi na ten temat. Moje obecne ustalenia to:

  • Windows używa nazw NetBIOS, a taki protokół, jako rozgłoszeniowy, pozwala im się znaleźć bez centralnego serwera.

  • Maszyny Linux we współczesnych dystrybucjach używają natywnie protokołu Avahi , który jest również niezależnym od serwera protokołem rozgłoszeniowym. Maszyny w sieci lokalnej mają przyrostek .local, więc możesz pingować z Linuksa na Linuxa za pomocąping hostname.local lub zobaczyć je z avahi-discoverpakietem. niektóre aplikacje w Gnome używają avahi do wyświetlania maszyn w sieci (na przykład Remote Desktop Viewer)

  • Zainstalowanie SAMBA na komputerze z systemem Linux spowoduje przypisanie mu nazwy NetBIOS (lub, bardziej technicznie, sprawi, że maszyna z Linuksa zareklamuje się w żądaniach rozgłaszania za pomocą nazwy NetBIOS, która jest domyślnie nazwą hosta), i pozwoli maszynom z systemem Windows na znalezienie systemu Linux te .

  • Gotcha: Chociaż maszyny Linux z Sambą będą odpowiadać na żądania protokołu NetBIOS, przy domyślnych ustawieniach w takich dystrybucjach jak Ubuntu nie użyje NetBIOS jako metody rozpoznawania nazw i dlatego maszyny Linux nie „widzą” siebie nawzajem lub systemu Windows maszyny . W tym celu musisz edytować /etc/nsswitch.confplik i dodać winsdo listy w tym wierszu:

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

  • Państwo może trzeba instalować winbind(a jeśli nie zostanie zainstalowane automatycznie libnss-winbind) pakiet dla powyższego do pracy.

  • Dlatego w przypadku problemu z widocznością albo instalujesz Sambę na wszystkich komputerach z systemem Linux (a także edytujesz /etc/nsswitch.conf, aby włączyć rozpoznawanie nazw NetBIOS) lub instalujesz obsługę Avahi na komputerach z systemem Windows.

  • Jeśli chodzi o udostępnianie plików, Samba zapewnia możliwość udostępniania plików przez maszyny z systemem Linux w systemie Windows. Nie ma potrzeby edytowania pliku /etc/nsswitch.conf dla maszyn z systemem Linux, aby zobaczyć foldery udostępnione dla siebie i systemu Windows (i odwrotnie) w sekcji „Sieć” programu Nautilus

Mam nadzieję, że to pomogło! :RE

MestreLion
źródło
2
na nsswitch.congrzecz: Jeśli ping HOSTNAMEdaje błąd systemowy, to sygnał, że pakiet libnss-winbind jest potrzebne.
Michael Stum
18

Domyślnie, bez serwera DNS, Windows może używać NetBIOS (protokół rozpoznawania nazw Microsoft), aby odkryć nazwy innych systemów Windows lokalnych dla ich sieci. Jak wspomniano w tej odpowiedzi , wygląda na to, że musisz skonfigurować SAMBA (lub przynajmniej Winbind) po stronie Linuksa. Oto podstawowy zestaw instrukcji :

Aby włączyć rozpoznawanie nazw Windows Netbios na komputerze z systemem Linux, upewnij się, że Samba jest zainstalowana (chociaż usługa smb nie musi być uruchomiona). Pakiet Samba zawiera program Winbind, który umożliwia rozpoznawanie nazw hostów Windows. Następnie edytuj /etc/nsswitch.conf i zmień ten wiersz:

hosts: files dns

do tego:

hosts: files dns wins

Następnie przetestuj, wysyłając polecenie ping do komputera z systemem Windows w sieci LAN:

$ ping windowsbox

BTW, to nie ma nic wspólnego bezpośrednio z WINS. WINS jest serwerem NetBIOS zwykle używanym w większych sieciach do ograniczania ruchu rozgłoszeniowego, zapewnia starszą scentralizowaną platformę rozpoznawania nazw i ostatecznie umożliwia systemom w różnych sieciach wzajemne poznanie mapowania nazwy NetBIOS na IP.

Alternatywą dla SAMBA byłoby skonfigurowanie serwera DNS i upewnienie się, że skonfigurowano dynamiczne aktualizacje DNS lub że DHCP może rejestrować rekordy DNS.

Eric C. Singer
źródło
3

Najprawdopodobniej LLMNR .

joeqwerty
źródło
1
Czy to spowodowałoby, że maszyny z systemem Windows znajdowałyby komputery z systemem Linux przy użyciu informacji zarejestrowanych w routerze DHCP? Ale Linux nie obsługuje używania zarejestrowanych nazw routera do znajdowania czegokolwiek?
Per Salmi
3
Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Mark Henderson
Nie wydaje się, aby LLMNR wyjaśniał, dlaczego Windows może znaleźć pudełka Linuksa, ale nie na odwrót. Jeśli Linux nie korzysta z LLMNR, Windows może znaleźć Windows, ale nie Linux?
Per Salmi
2

Prawdopodobnie wystarczy skonfigurować rozdzielczość Avahi / mDNS. To działa tak samo jak LLMNR w systemie Windows.

juwi
źródło
0

Linux może rozpoznać nazwy lokalne, chociaż niezbędne oprogramowanie nie jest domyślnie instalowane ...

Większość dystrybucji Linuksa robi niewiele domniemań dotyczących wymagań dotyczących oprogramowania poza jądrem ... Debian odwołuje się do DNSMasq

apt-cache search dnsmasq ...

Eddie B.
źródło