VPS主机可以通过一些常用操作命令来诊断网络的连通性,包括Traceroute命令、Ping命令、Host命令等,今天小编就来介绍下这几个不同的网络诊断的命令,以及VPS主机网络诊断的过程。
Ping命令的目的在于测试是否可以达到目标VPS主机,一般如果Ping不到某台主机,就说明对方主机网络连接出现问题,但不排除链路中防火墙的因素、Ping包被丢弃以及设置禁Ping等原因而造成Ping不通。
Ping命令最简单的使用方式是将VPS主机名或IP作为其单一的参数,在按回车键后,执行Ping命令的主机会向对端美国VPS主机发送一个ICMP的echo请求包,对端主机在接收到这个包后会回应一个ICMP的 reply回应包,VPS主机在 Linux系统下Ping命令并不会主动停止,需要使用Ctrl+C组合键来停止,Ping命令将会对发出的请求包和收到的回应包进行计数,这样就能计算网络丢包率。
Host命令是用来查询VPS主机DNS记录的,如果使用域名作为Host的参数命令将返回该域名的IP。
在IP包结构中有一个定义数据包生命周期的TTL字段,该字段用于表明IP数据包的生命值,当IP数据包在网络上传输时,每经过一个路由器该值就减1,当该值减为0时此包就会被路由器丢弃。这种设计可避免出现一些由于某种原因始终无法到达目的地的包不断地在互联网上传递,无谓地耗用网络资源。
不过路由器也不是直接就将TTL值为0的IP包丢奔的,它会同时给发送该IP数据包的VPS主机发送一个ICMP超时消息,主机在接收到这个ICMP包后就同时能得到该路由的IP地址。
根据上面两个特点,一个检测数据包是如何经由路由器的程序 Traceroute出现,该程序的工作原理是先构造出一个TTL值为1的数据包发送给目的VPS主机,这个数据包在经由第一个路由器时,路由器先将TTL值减1变为0,然后路由器将该IP包丢弃,同时给发送一份ICMP消息,这样就得到了经过的第一台路由器的IP地址,然后再构造出一个TTL值为2的数据包,以此类推,就能得到该IP包经历的整条链路的路由器IP。
这里会有一个问题,Traceroute如何确认该IP包成功地被目的主机接收。这里Traceroute所做的工作就是发送一个UDP包给目的主机,同时制定该UDP接收的端口为主机不可能存在的端口,VPS主机接收到这样的包后,由于端口不可达,因此会返回一个“端口不可达”的通知,这样就能确认目的主机是否可以接收到数据包。
1、确认网卡本身是否能正常工作,利用Ping工具可以确认这点。如果Ping不通,一般可以认为本机 TCP/IP协议有问题,但出现这种现象的概率比较低。
2、确认网卡是否出现了物理或驱动故障,使用Ping本机IP地址的方式,如果能Ping通则说明本地设备和驱动都正常。
3、确认是否能Ping通同网段的其他VPS主机,这一步主要是确认二层网络设备工作是否正常。如果Ping不通往往说明二层网络上出现了问题,可能涉及交换机的端口工作模式、Wan划分等因素。
4、确认是否能Ping通网关IP,如果数据包能正常到达网关,则说明VPS主机和本地网络都工作正常。
5、确认是否能Ping通公网上的IP,如果可以说明本地路由设置正确,否则就要确认路由设备是否做了正确的Nat或路由设置。
6、确认是否能Ping通公网上的某个域名,如果能Ping通,则说明VPS主机DNS部分设置正确。
即便实际工作中可能会受到诸如更复杂的网络环境、安全ACL、防火墙等众多因素的影响,而使网络排查的困难增大,但以上步骤是排VPS主机网络故障的主体躯干,在排除不同的网络之间个性化的设置之外,排查的主要步骤都大同小异。