如何修复 Linux 上的“No Route to Host”连接错误

当您尝试连接到 Linux 上的服务时,“No route to host”是您最不想听到的内容之一。 这是一个广泛的消息,意味着您的计算机无法访问目标服务器,无论是在您的系统上运行的本地服务器守护程序还是您出于任何原因都无法访问的远程服务器。 在这里,我们向您展示如何修复 Linux 中的“no route to host”连接错误。

为什么我会收到“No Route to Host”错误?

您可能会收到该错误的原因有很多。 Linux 中的网络是一个相当复杂的堆栈,非常复杂,因此很难确定问题出在哪里。

主机离线/服务未运行

这似乎很明显,但您应该首先检查您尝试连接的服务器是否在线。 它可能已因维护而停机或遇到问题。

服务本身可能尚未启动。 如果是您的服务器,您可以检查该服务是否已启动并正常运行。 要使用 Systemd 执行此操作,请运行以下命令。

错误的端口

您可能正在尝试连接不正确的端口。 许多系统管理员选择在不同的端口上运行常见的目标服务,如 SSH,以帮助阻止潜在的攻击者。

如果服务器不是您自己的,请查看可用文档或联系他们的支持服务。

对于您自己的服务器,您可以尝试使用 NMAP 来确定您的服务是从哪里开始的。

如果你认为你使用了一个非常不起眼的端口,你可以使用 -p- 标记以扫描它们。 不过这需要一段时间。

iptables 正在阻止连接

您可能不小心将 iptables 配置为阻止该端口上的连接。 无论您是在服务器上还是在桌面上配置了 iptables,您都会收到相同的消息,因此两者都值得检查。 要查看您的 iptables 规则,请运行以下命令。

您的 DNS 配置不正确

如果一切都失败了,你应该尝试 ping 您要连接的 IP 地址。 可能是您的计算机未正确连接到 DNS 服务器。

如果 ping 有效但连接域名无效,则您正在查看 DNS 问题。

Systemd 用户可以运行 systemd-resolve --status 检查您的系统正在使用的 DNS 服务器。 它按接口细分,因此请务必检查您实际尝试连接的接口。

没有路由到主机 Systemd Resolve

在大多数情况下,您的计算机将通过 DHCP 发现相关的 DNS 信息。 如果您使用的是静态 IP 或网络上的某些配置不同,则可能必须手动设置 DNS。

打开“/etc/systemd/resolved.conf”。 在该文件中,取消注释 DNS 行并添加路由器的 IP 或另一个已知的 DNS 服务器。 Systemd 的默认后备 DNS 是 Google 的 DNS 服务器,列在下面 FallbackDNS.

如果您使用 OpenRC 或其他 Systemd 替代方案,您可以在“/etc/resolv.conf”中找到您的 DNS 信息。

如果那里没有任何内容,请输入您的路由器或您希望使用的任何其他已知 DNS 服务器的 IP 地址。

之后,重新启动网络或整个计算机。

GUI方式

如果您使用带有网络管理器的图形桌面,您可以通过这种方式编辑您的连接信息。 打开小程序或浏览您的系统设置。 选择您的连接并找到“IPv4”选项卡。 将连接切换到“手动”并手动输入计算机的IP地址和路由器的IP作为网关。 然后,在下面的 DNS 字段中,输入您的路由器 IP 或另一个 DNS 服务器的 IP。

网络或主机配置不正确

还有其他几个可能不正确的配置选项。 它们中的任何一个都会使您的计算机无法连接到服务器。

首先,确保您的计算机的网络配置正确。 仔细检查配置文件本身,当然,看看您是否可以通过其他方式连接到 Internet。

如果您使用特定主机名进行连接,或者您在服务器或客户端上设置了特定主机,则需要确保两台机器可以相互连接。 检查“/etc/hosts”、“/etc/hosts.allow”和“/etc/hosts.deny”的配置。

没有途径托管猫主机

最后,检查您的服务器配置。 服务器上的某些配置可能不正确,导致客户端无法正确连接。

希望使用这些技巧可以让您修复导致“无路由到主机”错误的任何问题。 同时,您可以学习如何在 Linux 中控制您的 Wi-Fi 网络或检查您的防火墙是否阻止了任何传入和传出连接。

订阅我们的新闻!

我们的最新教程直接发送到您的收件箱

注册所有时事通讯。 注册即表示您同意我们的隐私政策并且欧洲用户同意数据传输政策。 我们不会共享您的数据,您可以随时取消订阅。 订阅