Tại sao máy Windows có thể phân giải tên cục bộ khi Linux không thể?


18

Tôi có một mạng nhỏ với các máy Windows và Linux được kết nối với bộ định tuyến D-Link DIR-825.

Các máy Windows trên mạng có thể tiếp cận tất cả các máy khác theo tên trong khi các máy Linux chỉ có thể tiếp cận các máy khác theo địa chỉ IP.

Tôi có thể thấy tất cả các máy được liệt kê có tên và địa chỉ được gán DHCP của chúng trong danh sách trạng thái máy khách DHCP trong giao diện quản trị web của bộ định tuyến.

Tại sao các máy Linux không thể tìm thấy bất kỳ máy nào khác theo tên trong khi Windows không gặp vấn đề gì khi tìm máy Linux?


2
Làm thế nào là giải quyết tên của bạn được thực hiện? DNS? Bạn có một hậu tố tìm kiếm được cấu hình?
Shane Madden

Tất cả các máy đang sử dụng DHCP, được kết nối với bộ định tuyến D-Link nơi chúng dường như tự đăng ký và điều đó có lẽ đủ để Windows tìm thấy tất cả các máy. Nhưng các máy Linux có thực sự yêu cầu máy chủ DNS cục bộ khác với bộ định tuyến không?
Per Salmi

Không chắc chắn về bộ định tuyến cụ thể đó, nhưng hầu hết các bộ định tuyến người tiêu dùng không tích hợp máy khách DHCP vào dịch vụ DNS nội bộ của họ. Câu trả lời của Joe có khả năng là thủ phạm của bạn.
Shane Madden

Sau đó, các máy Linux sẽ trả lời các tin nhắn LLMNR nhưng không sử dụng chính nó để tìm các máy khác?
Per Salmi

Câu trả lời:


32

Tôi không phải là chuyên gia mạng và tôi cũng đang nghiên cứu RẤT NHIỀU câu trả lời trong chủ đề này. Những phát hiện hiện tại của tôi là:

  • Windows sử dụng tên NetBIOS và giao thức như vậy, là một chương trình phát sóng, cho phép chúng tìm thấy nhau mà không cần bất kỳ máy chủ trung tâm nào.

  • Các máy Linux trong các bản phân phối hiện đại sử dụng một giao thức được gọi là Avahi , đây cũng là một giao thức phát sóng độc lập với máy chủ. Các máy mạng cục bộ có hậu tố .local, vì vậy bạn có thể ping từ Linux sang Linux bằng cách sử dụngping hostname.local hoặc xem chúng với avahi-discovergói. một số ứng dụng trong Gnome sử dụng avahi để liệt kê các máy trong mạng (ví dụ: Trình xem máy tính từ xa)

  • Cài đặt SAMBA trên máy Linux sẽ gán cho nó một tên NetBIOS (hoặc, về mặt kỹ thuật hơn, sẽ khiến một máy Linux tự quảng cáo trong các yêu cầu quảng bá với tên NetBIOS, theo mặc định là tên máy chủ của chúng) và cho phép các máy Windows tìm thấy Linux những cái .

  • Gotcha: Mặc dù các máy Linux có Samba sẽ trả lời các yêu cầu giao thức NetBIOS, nhưng với các cài đặt mặc định trong các bản phân phối như Ubuntu, nó sẽ không sử dụng NetBIOS như một phương pháp để phân giải tên và đó là lý do tại sao các máy Linux không thể "nhìn thấy" nhau hoặc Windows máy móc . Đối với điều đó, bạn cần chỉnh sửa /etc/nsswitch.conftập tin và thêm winsvào danh sách trong dòng này:

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

  • Bạn có thể cần cài đặt gói winbind(và, nếu không được cài đặt tự động libnss-winbind) để gói trên hoạt động.

  • Vì vậy, đối với vấn đề về khả năng hiển thị, bạn có thể cài đặt Samba trên tất cả các máy Linux (và cũng chỉnh sửa /etc/nsswitch.conf để bật độ phân giải tên NetBIOS) hoặc bạn cài đặt hỗ trợ Avahi trong các máy Windows.

  • Đối với chia sẻ tệp, Samba cung cấp khả năng chia sẻ tệp của máy Linux với Windows. Không cần chỉnh sửa /etc/nsswitch.conf cho các máy Linux để xem các thư mục được chia sẻ của nhau và Windows (và ngược lại) trong phần "Mạng" của Nautilus

Tôi hy vọng điều này sẽ giúp! : D


2
cho nsswitch.congđiều này: Nếu ping HOSTNAMEcung cấp cho bạn một lỗi hệ thống, đó là tín hiệu cho thấy gói libnss-winbind là cần thiết.
Michael Stum

18

Theo mặc định, không có máy chủ DNS, các cửa sổ có thể sử dụng NetBIOS (giao thức phân giải tên Microsoft) để khám phá tên của các hệ thống cửa sổ khác cục bộ trong mạng của họ. Như đã đề cập trong câu trả lời này , có vẻ như bạn cần thiết lập SAMBA (hoặc ít nhất là winbind) về phía Linux. Đây là một bộ hướng dẫn cơ bản :

Để bật độ phân giải tên Windows netbios từ máy tính Linux, hãy đảm bảo Samba đã được cài đặt (mặc dù dịch vụ smb không cần phải chạy). Bộ Samba bao gồm winbind, cho phép giải quyết tên máy chủ Windows. Sau đó chỉnh sửa /etc/nsswitch.conf và thay đổi dòng này:

hosts: files dns

đến đây:

hosts: files dns wins

Sau đó kiểm tra bằng cách ping tên máy tính của máy Windows trên mạng LAN:

$ ping windowsbox

BTW, điều này không có gì để làm trực tiếp với THẮNG. WINS là một máy chủ NetBIOS thường được sử dụng trong các mạng lớn hơn để cắt giảm lưu lượng phát sóng, cung cấp nền tảng phân giải tên tập trung kế thừa và cuối cùng để cho phép các hệ thống trên các mạng khác nhau biết ánh xạ tên NetBIOS của nhau.

Một giải pháp thay thế cho SAMBA sẽ là thiết lập máy chủ DNS và đảm bảo các cập nhật DNS động được định cấu hình hoặc DHCP có thể đăng ký bản ghi DNS.


3

Có lẽ nhiều nhất là LLMNR .


1
Vì vậy, điều đó sẽ làm cho các máy Windows tìm thấy các hộp Linux bằng cách sử dụng thông tin đã đăng ký DHCP của bộ định tuyến? Nhưng Linux không hỗ trợ sử dụng tên đã đăng ký của bộ định tuyến để tìm bất cứ thứ gì?
Per Salmi

3
Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
Mark Henderson

Nó không giống như LLMNR giải thích tại sao Windows có thể tìm thấy các hộp Linux mà không phải là cách khác. Nếu Linux không sử dụng LLMNR, nó sẽ dẫn đến việc Windows tìm thấy Windows chứ không phải Linux?
Per Salmi

2

Có lẽ bạn chỉ cần thiết lập Độ phân giải Avahi / mDNS. Nó không giống như LLMNR trên Windows.


0

Linux có thể phân giải tên cục bộ mặc dù phần mềm cần thiết không được cài đặt theo mặc định ...

Hầu hết các bản phân phối Linux tạo ra một số giả định liên quan đến các yêu cầu phần mềm của bạn ngoài kernel ... DNSMasq tham chiếu Debian

tìm kiếm apt-cache dnsmasq ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.