destination host unreachable目标主机不可达,消息属于icmp协议层的消息,用于ip层的差错报文的传递,由出问题的网关发出,用于差错控制。IP 路由器无法将 IP 数据报发送给目的地址时,会给发送端主机返回一个目标不可达 ICMP 消息,并在这个消息中显示不可达的具体原因。我们经常在ping命令的回显中看到这个消息,表示1到目的主机没有路由或者找不到目的主机。2这种情况是源主机已经能够到达目的主机的网络,但目的主机的无法到达。
icmp消息的发出源ip是出现问题的节点发出的,表明是在那个节点出的问题。发出时使用的ip地址是访问正常时使用的ip和硬件端口。根据此ip我们就能判断是那个节点有了问题。
这个消息一般是由经过节点的路由器的ip地址发出的,当是目的ip同和自身ip是直连路由时,此消息由直连路由的网关就是设备自身ip产生。
当跨网段的访问,是由一个节点设备,有多个ip配置时,会查路由表,选定一个和正常回包时的出口端口和ip地址,作为icmp消息的源ip发给源主机。和直连路由时打印的区别就是用节点ip打印目的主机不可达,从流程来说,ping的request消息已经发给节点,只是节点没法找到目的ip,查询目的ip的mac地址失败,所以后向给源主机返回一个错误消息。
简单的说,同网段用arp消息探查,超时没有arp响应,打印目的主机不可达,跨网段用ping的request消息发送到网关,网关发出arp探查,超时没有收到,给源ip发出目的主机不可达。
这就像大教室老师找人,老师问谁谁来了没有?可以问几次,这好比直连路由,在本地可以处理。连问几次没有响应,就认为这人没来,得出结论目的主机不可达。而找的另外一个人,只有他们办公室电话,打过去,告诉,我找谁谁谁?接电话不是本人,那边找了以后,反馈人不在办公室。这好比非直连路由,你要把你找谁的信息告诉所属的网关,这个反馈就是差错消息目的主机不可达。一个本地探查,一个要把我找谁谁谁信息带给目的节点方。
无法访问目的主机的可能性:
1、对方没有开机,或者开机但没有接入对应的广播域,导致arp查询消息没有得到应答。
2、对方ip不存在。
3、设备本身路由错误,没有对应访问的路由。
4、设备自身路由错误,应该走默认网关的ping消息,认为是同一网段,发出arp查询消息,在广播域里没到得到应答。
一次ping的request的源主机流程:
节点收到ping的request的处理流程:
第一种情况,双网卡,没有路由时的情况,回显是自身的ip地址回的destnation unreachable。
如图:pc双网卡,有网关设置的网卡ip地址192.168.205.201/24,网关是192.168.205.1,网线断开。另一个网卡没有配置网关,如下图:
本地没有路由时的回显如下:
本机的网卡配置,没有配置网关。路由表如下:
去ping192.168.207.25,同样显示无法访问目标主机
回显的ip地址是自己主板网卡配置的ip地址回复的无法访问目的主机。
Wireshark里看没有发出任何arp和icmp消息
这个是本机发出的目的主机不可达消息。
去ping18.250.0.45,这个ip要么没开机,要么不存在时的,要么网络的广播消息不通,对方没收到情况:
显示无法访问目标主机,查看一下wireshark里的表现?
一秒一次,发出三次arp请求,没有响应,打印一次无法目的主机,发出12次arp请求,打印四次无法访问目的主机。
第二种情况是,跨网段对方网络网关没有找到对应的ip地址的mac地址情况,由经过网络节点正常路由的接口ip回的icmp destnation unreachable消息。
pc的配置如上图。
去ping192.168.206.10的情况:
pc上抓包如下:
注意看,ping的request发出后,三秒后,节点发来目的主机不可达,destnation host unreachable。
因为192.168.206.10的vlan206和vlan205的svi在同一台交换机上,所以显示是192.168.205.1回的icmp目的主机不可达消息。
三层交换机发出查询主机地址arp命令,没有得到响应,发三次arp请求,后给目的ip回目的主机不可达。
在接入交换机的级联口上抓包(接入交换机上有网口属于206网段,所以能抓到广播包),过滤对应目的ip c0-a8-ce-0a的arp广播消息,看到收到源主机的一个ping的request,网关每隔一秒发出一次arp的广播查询消息,发三次,第三次超时后,发出目的主机不可达,一共收到4个ping的request,所以会12次arp请求。如下图:
Arp查询没有成功,所以交换机用可达路由的ip给源主机回主机不可达的icmp消息。
ping出现无法访问目的主机时,我们要看回显的发起的ip地址是否是本地地址,是本机地址,意味着本机认为这是直连路由(因为直连路由的下一跳是自身的ip地址),可能arp去查询目的mac地址没有成功造成的显示。若是其他ip地址回的消息,那就看是否这个ip是个网关设备的ip(可能和目的ip在同一网段,是目的ip的网关,也可能不是,但肯定是个网关设备的ip地址),这时就可能网关找不到对应的主机,或者对应的主机未开机,没有在线的原因。
还有一种极端情况是,设备所有网卡都是down,未接线的状态时,这是ping出去,也会显示host unreachable。
第四种情况见