Bạn đang gặp rắc rối với việc mDNS server không thể tìm thấy các thiết bị trong mạng nội bộ khi không có kết nối internet? Đừng lo lắng, bài viết này sẽ cung cấp cho bạn một hướng dẫn toàn diện về cách chẩn đoán và khắc phục sự cố này. Chúng ta sẽ đi sâu vào các nguyên nhân tiềm ẩn, từ cấu hình mạng đến các xung đột phần mềm, và cung cấp các giải pháp từng bước để đảm bảo dịch vụ mDNS của bạn hoạt động trơn tru ngay cả khi offline.
mDNS (Multicast DNS) là một giao thức cho phép phân giải tên miền trong mạng cục bộ mà không cần đến một máy chủ DNS tiêu chuẩn. Điều này đặc biệt hữu ích trong các môi trường như mạng gia đình hoặc văn phòng nhỏ, nơi việc thiết lập và duy trì một máy chủ DNS riêng có thể không thực tế. mDNS giúp các thiết bị tự động khám phá và kết nối với nhau một cách dễ dàng, ví dụ như tìm kiếm máy in, chia sẻ tập tin hoặc truy cập các dịch vụ web nội bộ.
Khi mDNS hoạt động bình thường, bạn có thể truy cập các thiết bị bằng tên miền ".local" thay vì phải nhớ địa chỉ IP phức tạp. Tuy nhiên, khi mất kết nối internet, một số cấu hình mặc định có thể gây ra sự cố, khiến mDNS server không thể tìm thấy các thiết bị khác trong mạng. Đây là lúc chúng ta cần can thiệp để cấu hình lại hệ thống.
Có một vài lý do phổ biến khiến mDNS server gặp sự cố khi không có kết nối internet:
Dưới đây là các bước chi tiết để bạn có thể tự mình khắc phục sự cố mDNS:
Đảm bảo rằng các thiết bị trong mạng của bạn được cấu hình với địa chỉ IP tĩnh hoặc địa chỉ IP được cấp bởi DHCP server nội bộ. Kiểm tra xem tất cả các thiết bị có cùng subnet mask hay không. Ví dụ, nếu một thiết bị có địa chỉ 192.168.1.10/24, các thiết bị khác cần có địa chỉ trong khoảng 192.168.1.1 - 192.168.1.254 với subnet mask là 255.255.255.0.
Nếu bạn đang sử dụng Linux với systemd-resolved, hãy kiểm tra trạng thái của dịch vụ này bằng lệnh:
sudo systemd-resolve --status
Đảm bảo rằng "MulticastDNS setting" được đặt thành "yes" cho cả global và interface mạng của bạn. Nếu không, hãy chỉnh sửa file `/etc/systemd/resolved.conf` và thêm hoặc sửa các dòng sau:
[Resolve]
MulticastDNS=yes
Sau đó, khởi động lại dịch vụ systemd-resolved:
sudo systemctl restart systemd-resolved
Tạm thời tắt tường lửa để xem liệu nó có phải là nguyên nhân gây ra sự cố hay không. Nếu mDNS hoạt động trở lại sau khi tắt tường lửa, bạn cần cấu hình lại tường lửa để cho phép các gói tin mDNS (UDP port 5353) đi qua.
Ví dụ, nếu bạn sử dụng `firewalld` trên Linux, bạn có thể sử dụng các lệnh sau:
sudo firewall-cmd --permanent --add-service=mdns
sudo firewall-cmd --reload
Sử dụng lệnh `lsof` (Linux) hoặc `netstat` (Windows) để kiểm tra xem có phần mềm nào khác đang sử dụng cổng 5353 hay không:
sudo lsof -i UDP:5353 -n -P
Nếu tìm thấy phần mềm nào đang sử dụng cổng này, hãy tắt nó hoặc cấu hình để nó sử dụng một cổng khác.
Đảm bảo rằng file `/etc/nsswitch.conf` được cấu hình để sử dụng mDNS. Mở file này bằng trình soạn thảo văn bản và kiểm tra dòng `hosts:`. Nó phải chứa `mdns4_minimal` hoặc `mdns4`. Ví dụ:
hosts: files mdns4_minimal [NOTFOUND=return] dns
Một người dùng Arch Linux đã gặp sự cố với Avahi, một triển khai mDNS phổ biến, mặc dù đã thấy lưu lượng mDNS trên mạng. Sau khi kiểm tra kỹ lưỡng, họ phát hiện ra rằng Chrome đang chiếm cổng 5353. Mặc dù đã tắt Chrome, sự cố vẫn tiếp diễn. Cuối cùng, họ nhận ra rằng vấn đề nằm ở cấu hình không chính xác của `/etc/nsswitch.conf`. Sau khi sửa đổi file này để bao gồm `mdns4_minimal`, Avahi đã hoạt động trở lại.
Việc khắc phục sự cố mDNS server khi mất kết nối internet có thể đòi hỏi một chút kiên nhẫn và hiểu biết về cấu hình mạng. Tuy nhiên, bằng cách làm theo các bước được trình bày trong bài viết này, bạn có thể chẩn đoán và giải quyết vấn đề một cách hiệu quả, đảm bảo rằng các thiết bị của bạn luôn có thể tìm thấy và kết nối với nhau trong mạng nội bộ.
Hy vọng rằng hướng dẫn này sẽ giúp bạn giải quyết các vấn đề liên quan đến mDNS và mang lại trải nghiệm mạng mượt mà hơn.
Bài viết liên quan