在尝试ping或连接远程主机时,我发现一个错误“no route to host”。如何调试并解决此错误?我们知道IP网络是逐跳构建的,这意味着有不同的中间路由器在两个远程主机之间传输数据包。这些路由器根据它们的路由表决定到目的地的路由。如果目标路由在路由器路由表中不存在,它将用ICMP协议返回“no route to host error”。
原因及解决办法
这个 No Rout To Host
错误是一个非常普遍的错误,但我们将尝试列出一些错误的原因。
远程主机或IP地址脱机
第一个原因可能是远程系统未运行或处于脱机位置。无法连接到网络或internet。这可以用 traceroute
该命令将尝试访问远程系统hope by hope,但也将检查每个中间跃点的状态。
$ traceroute 8.8.8.8

解决方案是联系远程系统管理员,讨论系统的情况。
尝试连接错误的端口
当试图连接远程系统与给定的端口,我们可能会使用错误的端口号,这是不服务。连接远程系统时,请仔细检查端口号。
$ telnet 8.8.8.8 23

解决方案是提供我们想要访问的正确端口。
服务未运行
另一个原因可能是我们要访问的服务没有运行。所以港口也不会打开。我们可以通过以下方法检查Linux和Windows的服务可用性。
$ sudo systemctl status sshd

我们将使用 Get-Service
要检查的PowerShell commandlet Apache2.2
服务。有关的详细信息 Get-Service
请看下面的教程。
PS> Get-Service Apache2.2

这个问题的解决方案是使用如下相关命令启动服务。
$ sudo systemctl start sshd
或者
PS> Start-Service Apache2.2
我们不能上网
我们主要讨论了 No route to host
但在某些情况下,问题可能与我们的网络和系统有关。我们可以用简单的 ping
命令如下。
$ ping google.com

与系统管理员或ISP交谈。
相关文章: 什么是DHCP及其工作原理?
远程系统防火墙块
防火墙是用于安全系统的主要工具。服务器或公司网络通常使用防火墙来阻止对内部系统和端口的访问。所以这可以阻止访问我们的目标主机。请与远程网络管理员联系。
无法解析DNS
如果我们使用的域名是由DNS服务器翻译,这可能会造成问题。如果名为DNS的解析不正确,我们可能无法访问远程系统。 更改DNS服务器,如 8.8.8.8
. 在下面的教程中可以找到更多的DNS服务器。