Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Cách khắc phục lỗi "No Route to Host" (Không có đường dẫn đến máy chủ) trên Linux

Khi bạn cố gắng kết nối đến một dịch vụ trên Linux, "No route to host" (Không có đường dẫn đến máy chủ) là một trong những thông báo cuối cùng bạn muốn thấy. Đây là thông báo rộng rãi có nghĩa là máy tính của bạn không thể đến được máy chủ đích, चाहे đó là daemon server cục bộ chạy trên hệ thống của bạn hay server từ xa mà bạn không thể truy cập vì bất kỳ lý do gì. Ở đây chúng tôi sẽ chỉ cho bạn cách khắc phục lỗi kết nối "no route to host" trong Linux.

Tại sao tôi gặp lỗi "No Route to Host"?

Có nhiều lý do khiến bạn gặp lỗi này. Mạng trong Linux là một ngăn xếp phức tạp למדי, và do đó, rất khó xác định chính xác nơi sự cố xảy ra.

Máy chủ ngoại tuyến / Dịch vụ không chạy

Có vẻ hiển nhiên, nhưng bạn nên kiểm tra trước xem server bạn đang cố kết nối có trực tuyến không. Nó có thể đã bị tắt để bảo trì hoặc đang gặp sự cố.

Chính dịch vụ đó có thể chưa được khởi động. Nếu đó là server của bạn, bạn có thể kiểm tra xem dịch vụ đã được khởi động và chạy đúng chưa. Để làm vậy với Systemd, chạy lệnh sau:

sudo systemctl status TÊN_DỊCH_VỤ

Sai cổng (Port)

Bạn có thể đang cố kết nối trên cổng sai. Nhiều quản trị viên hệ thống chọn chạy các dịch vụ thường bị tấn công như SSH trên các cổng khác nhau để ngăn chặn kẻ tấn công tiềm năng.

Nếu server không phải của bạn, hãy kiểm tra tài liệu có sẵn hoặc liên hệ bộ phận hỗ trợ của họ.

Đối với server của riêng bạn, bạn có thể thử dùng NMAP để tìm ra nơi bạn đã khởi động dịch vụ của mình.

sudo nmap -sS your.server.ip

Nếu bạn nghĩ mình dùng một cổng rất lạ, bạn có thể dùng cờ -p- để quét tất cả. Tuy nhiên, sẽ mất một chút thời gian.

Iptables đang chặn kết nối

Bạn có thể đã vô tình cấu hình iptables chặn kết nối trên cổng đó. Bạn sẽ nhận được thông báo giống hệt nhau dù bạn cấu hình iptables trên server hay trên máy tính để bàn, vì vậy đáng giá để kiểm tra cả hai. Để xem các quy tắc iptables, chạy lệnh sau:

sudo iptables -S

DNS của bạn được cấu hình không đúng

Nếu tất cả các cách khác đều thất bại, bạn nên thử ping đến địa chỉ IP bạn muốn kết nối. Có thể máy tính của bạn không kết nối đúng với server DNS.

ping -c3 your.server.ip

Nếu ping hoạt động nhưng kết nối bằng tên miền không được, bạn đang gặp vấn đề DNS.

Người dùng Systemd có thể chạy systemd-resolve --status để kiểm tra các server DNS mà hệ thống của bạn đang dùng. Nó được chia theo giao diện, vì vậy hãy chắc chắn kiểm tra giao diện bạn thực sự đang cố kết nối qua.

Trong hầu hết các trường hợp, máy tính của bạn sẽ khám phá thông tin DNS liên quan qua DHCP. Nếu bạn đang dùng IP tĩnh hoặc có thứ gì đó trên mạng được cấu hình khác, bạn có thể phải đặt DNS thủ công.

Mở file "/etc/systemd/resolved.conf". Trong file đó, bỏ comment dòng DNS và thêm IP của router hoặc một server DNS biết khác. DNS dự phòng mặc định của Systemd là các server DNS của Google được liệt kê dưới FallbackDNS.

DNS=192.168.1.1

Nếu bạn đang dùng OpenRC hoặc một hệ thống thay thế Systemd khác, bạn có thể tìm thông tin DNS trong "/etc/resolv.conf".

nameserver 192.168.1.1

Nếu không có gì ở đó, hãy nhập địa chỉ IP của router hoặc bất kỳ server DNS biết nào bạn muốn dùng.

Sau đó, khởi động lại mạng hoặc toàn bộ máy tính.

Cách dùng GUI

Nếu bạn đang dùng máy tính để bàn đồ họa với Network Manager, bạn có thể chỉnh sửa thông tin kết nối theo cách đó. Mở applet hoặc vào cài đặt hệ thống. Chọn kết nối của bạn và tìm tab "IPv4". Chuyển kết nối sang "Thủ công" (Manual) và nhập thủ công địa chỉ IP của máy tính bạn và IP của router làm gateway. Sau đó, trong trường DNS bên dưới, nhập IP của router hoặc IP của một server DNS khác.

Cấu hình mạng hoặc máy chủ không đúng

Có một số tùy chọn cấu hình khác có thể không đúng. Bất kỳ thứ nào trong số đó cũng sẽ khiến máy tính của bạn không thể kết nối đến server.

Trước hết, hãy chắc chắn rằng cấu hình mạng của máy tính bạn là đúng. Kiểm tra kỹ các file cấu hình bản thân và, tất nhiên, xem xem bạn có thể kết nối Internet theo cách khác không.

Nếu bạn đang dùng một hostname cụ thể để kết nối hoặc đã thiết lập các host cụ thể trên server hoặc client, bạn cần chắc chắn cả hai máy đều có thể kết nối với nhau. Kiểm tra cấu hình của "/etc/hosts", "/etc/hosts.allow", và "/etc/hosts.deny".

Cuối cùng, kiểm tra cấu hình server của bạn. Có thể có thứ gì đó được cấu hình sai trên server, ngăn cản client kết nối đúng cách.

Hy vọng, sử dụng các mẹo này đã giúp bạn khắc phục được bất kỳ vấn đề nào gây ra lỗi "No Route to Host". Trong khi đó, bạn có thể học cách kiểm soát mạng Wi-Fi trong Linux hoặc kiểm tra xem tường lửa có chặn kết nối đến và đi không.