2017-08-10 每天2个Linux命令 ping命令
ping命令用来测试主机之间网络的连通性。
(1)用法:
用法: ping [参数] [主机名或IP地址]
(2)功能:
功能: 确定网络和各外部主机的状态;跟踪和隔离硬件和软件问题;测试、评估和管理网络。
细节: 执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,
因而得知该主机运作正常。例如: “ping一下某机器,看是不是开着”、不能打开网页时“先ping网关地址192.168.1.1试试”。
ping 命令每秒发送一个数据报并且为每个接收到的响应打印一行输出。ping 命令计算信号往返时间和(信息)包丢失情况的统计信息,
并且在完成之后显示一个简要总结。ping 命令在程序超时或当接收到 SIGINT 信号时结束。Host 参数或者是一个有效的主机名或者是因特网地址。
注意: 有些服务器为了防止通过ping探测到,通过防火墙设置了禁止ping或者在内核参数中禁止ping,这样就不能通过ping确定该主机是否还处于开启状态。
(3)选项参数:
1) -b n: 测试与网关IP的连通性
2) -c n: 执行指定次数 n的ping命令
3) -i n: 设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
4) -s 字节数: 指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。
5) -t 存活数值: 设置存活数值TTL的大小。
(4)实例:
1)[root@localhost ~]# ping 192.168.120.205 用ping命令测试与目标站点IP的连通情况
复制代码
[root@localhost ~]# ping 192.168.120.205
PING 192.168.120.205 (192.168.120.205) 56(84) bytes of data.
64 bytes from 192.168.120.205: icmp_seq=1 ttl=64 time=0.720 ms
64 bytes from 192.168.120.205: icmp_seq=2 ttl=64 time=0.181 ms
64 bytes from 192.168.120.205: icmp_seq=3 ttl=64 time=0.191 ms
64 bytes from 192.168.120.205: icmp_seq=4 ttl=64 time=0.188 ms
64 bytes from 192.168.120.205: icmp_seq=5 ttl=64 time=0.189 ms
--- 192.168.120.205 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.181/0.293/0.720/0.214 ms
[root@localhost ~]#
2)[root@localhost ~]# ping 192.168.120.202 ping命令不连通时
复制代码
[root@localhost ~]# ping 192.168.120.202
PING 192.168.120.202 (192.168.120.202) 56(84) bytes of data.
From 192.168.120.204 icmp_seq=1 Destination Host Unreachable
From 192.168.120.204 icmp_seq=2 Destination Host Unreachable
From 192.168.120.204 icmp_seq=3 Destination Host Unreachable
From 192.168.120.204 icmp_seq=4 Destination Host Unreachable
From 192.168.120.204 icmp_seq=5 Destination Host Unreachable
From 192.168.120.204 icmp_seq=6 Destination Host Unreachable
--- 192.168.120.202 ping statistics ---
packets transmitted, 0 received, +6 errors, 100% packet loss, time 7005ms
, pipe 4
[root@localhost ~]#
3)[root@localhost ~]# ping -b 192.168.120.1 ping命令测试与网关IP的连通性
复制代码
[root@localhost ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.120.0 * 255.255.255.0 U 0 0 0 eth0
192.168.0.0 192.168.120.1 255.255.0.0 UG 0 0 0 eth0
10.0.0.0 192.168.120.1 255.0.0.0 UG 0 0 0 eth0
default 192.168.120.240 0.0.0.0 UG 0 0 0 eth0
[root@localhost ~]# ping -b 192.168.120.1
PING 192.168.120.1 (192.168.120.1) 56(84) bytes of data.
bytes from 192.168.120.1: icmp_seq=1 ttl=255 time=2.02 ms
bytes from 192.168.120.1: icmp_seq=2 ttl=255 time=1.83 ms
bytes from 192.168.120.1: icmp_seq=3 ttl=255 time=1.68 ms
bytes from 192.168.120.1: icmp_seq=4 ttl=255 time=1.98 ms
bytes from 192.168.120.1: icmp_seq=5 ttl=255 time=1.88 ms
--- 192.168.120.1 ping statistics ---
packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 1.682/1.880/2.020/0.129 ms
4)[root@localhost ~]# ping -c 10 192.168.120.206 ping指定的次数
复制代码
[root@localhost ~]# ping -c 10 192.168.120.206
PING 192.168.120.206 (192.168.120.206) 56(84) bytes of data.
bytes from 192.168.120.206: icmp_seq=1 ttl=64 time=1.25 ms
bytes from 192.168.120.206: icmp_seq=2 ttl=64 time=0.260 ms
bytes from 192.168.120.206: icmp_seq=3 ttl=64 time=0.242 ms
bytes from 192.168.120.206: icmp_seq=4 ttl=64 time=0.271 ms
bytes from 192.168.120.206: icmp_seq=5 ttl=64 time=0.274 ms
bytes from 192.168.120.206: icmp_seq=6 ttl=64 time=0.295 ms
bytes from 192.168.120.206: icmp_seq=7 ttl=64 time=0.269 ms
bytes from 192.168.120.206: icmp_seq=8 ttl=64 time=0.270 ms
bytes from 192.168.120.206: icmp_seq=9 ttl=64 time=0.253 ms
bytes from 192.168.120.206: icmp_seq=10 ttl=64 time=0.289 ms
--- 192.168.120.206 ping statistics ---
packets transmitted, 10 received, 0% packet loss, time 9000ms
rtt min/avg/max/mdev = 0.242/0.367/1.251/0.295 ms
[root@localhost ~]#
5)[root@localhost ~]# ping -c 10 -i 0.5 192.168.120.206 指定时间间隔和参数限制
复制代码
[root@localhost ~]# ping -c 10 -i 0.5 192.168.120.206
PING 192.168.120.206 (192.168.120.206) 56(84) bytes of data.
bytes from 192.168.120.206: icmp_seq=1 ttl=64 time=1.24 ms
bytes from 192.168.120.206: icmp_seq=2 ttl=64 time=0.235 ms
bytes from 192.168.120.206: icmp_seq=3 ttl=64 time=0.244 ms
bytes from 192.168.120.206: icmp_seq=4 ttl=64 time=0.300 ms
bytes from 192.168.120.206: icmp_seq=5 ttl=64 time=0.255 ms
bytes from 192.168.120.206: icmp_seq=6 ttl=64 time=0.264 ms
bytes from 192.168.120.206: icmp_seq=7 ttl=64 time=0.263 ms
bytes from 192.168.120.206: icmp_seq=8 ttl=64 time=0.331 ms
bytes from 192.168.120.206: icmp_seq=9 ttl=64 time=0.247 ms
bytes from 192.168.120.206: icmp_seq=10 ttl=64 time=0.244 ms
--- 192.168.120.206 ping statistics ---
packets transmitted, 10 received, 0% packet loss, time 4499ms
rtt min/avg/max/mdev = 0.235/0.362/1.241/0.294 ms
[root@localhost ~]# ping -c 10 -i 0.01 192.168.120.206
PING 192.168.120.206 (192.168.120.206) 56(84) bytes of data.
bytes from 192.168.120.206: icmp_seq=1 ttl=64 time=0.244 ms
bytes from 192.168.120.206: icmp_seq=2 ttl=64 time=0.195 ms
bytes from 192.168.120.206: icmp_seq=3 ttl=64 time=0.219 ms
bytes from 192.168.120.206: icmp_seq=4 ttl=64 time=0.204 ms
bytes from 192.168.120.206: icmp_seq=5 ttl=64 time=3.56 ms
bytes from 192.168.120.206: icmp_seq=6 ttl=64 time=1.93 ms
bytes from 192.168.120.206: icmp_seq=7 ttl=64 time=0.193 ms
bytes from 192.168.120.206: icmp_seq=8 ttl=64 time=0.193 ms
bytes from 192.168.120.206: icmp_seq=9 ttl=64 time=0.202 ms
bytes from 192.168.120.206: icmp_seq=10 ttl=64 time=0.211 ms
--- 192.168.120.206 ping statistics ---
packets transmitted, 10 received, 0% packet loss, time 90ms
rtt min/avg/max/mdev = 0.193/0.716/3.564/1.080 ms
[root@localhost ~]#
参数说明:
什么是TTL?
TTL 指定数据报被路由器丢弃之前允许通过的网段数量。它是为了防止数据包在网络中无限制的循环,
而设定的网络数据包在网络传输中最大的转发次数。因为每转发一次在路由器,就会转向下一跳,所以,又通常称为最大跳数。
具体的含义是这样的。我们本地机器会发出一个数据包,数据包经过一定数量的路由器传送到目的主机,但是由于很多的原因,
一些数据包不能正常传送到目的主机,那如果不给这些数据包一个生存时间的话,这些数据包会一直在网络上传送,
导致网络开销的增大。当数据包传送到一个路由器之后,TTL就自动减1,如果减到0了还是没有传送到目的主机,那么就自动丢失。
例如:你定义了数据包的TTL为64.那么在你的数据包被转发了64次,也就是经过了63个中间路由器后,还没有到达目的网络,
那么,你的电脑就会显示Requet time out (请求超时)了。例如:你定义了数据包的TTL为64.那么在你的数据包被转发了64次,
也就是经过了63个中间路由器后,还没有到达目的网络,那么,你的电脑就会显示Requet time out (请求超时)了。这就是TTL的意思了。
在此补充一点,由于不同的操作系统所定义的TTL是不同的,一般有如下规则:默认情况下,Linux系统的TTL值为64或255,
Windows NT/2000/XP系统的TTL值为128,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。
(5)其他:
1)ICMP协议:
ping 程序使用 ICMP 协议的强制回显请求数据报以使主机或网关发送一份 ICMP 的回显应答。
ICMP是“Internet Control Message Protocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,
用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
2)回显请求数据报:
回显请求数据报(" pings ")含有一个 IP 及 ICMP 的报头,后跟一个时间值关键字,然后是一段任意长度的填充字节用于把保持分组长度为16的整数倍。
3)Linux下的ping和windows下的ping的区别:
linux下的ping和windows下的ping稍有区别,linux下ping不会自动终止,需要按ctrl+c终止或者用参数-c指定要求完成的回应次数。
4)VMWare网络模式介绍及配置:
4.1VMWare的网络模式:
VMWare提供了三种工作模式,它们是bridged(桥接模式)、NAT(网络地址转换模式)和host-only(主机模式)。
桥接模式:在桥接模式下,VMware虚拟机里的系统就像是局域网中的一台独立的主机,它可以访问同一个网段内任何一台机器,即可以相互ping通。在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立的主机系统,就可以手工配置它的IP,DNS服务器,网关等信息,以实现通过局域网的网关或通过交换机访问外网。
让虚拟机具有与宿主机不同的各自独立IP地址,但与宿主机保持在同一网段,最终结果是所有虚拟机都加入宿主主机所在的局域网,
这与在该局域网中添加入其他宿主主机在效果上没什么区别。从网络技术上相当于在宿主主机前端加设了一个虚拟交换机,
然后宿主主机和所有虚机共享这个交换机;或者干脆理解成在宿主主机上作点增强,使其兼具一个交换机(当然是虚拟的)功能,
供该宿主主机和网段内其他虚机使用。
图中的局域网,可能由路由器或者交换机建立。本地物理网卡和虚拟网卡通过虚拟交换机进行桥接,
物理网卡和虚拟网卡在拓扑图上处于同等地位。Vmware默认给虚拟系统提供了一个虚拟网卡(linux下默认为eth0设备),
虚拟系统通过该网卡与外部通信。图中虚拟交换机由vmware提供,其默认设备名为 VMnet0。
NAT模式:NAT 即 Network Address Translation 缩写,即网络地址转换,由 NAT服务完成。在vmware里默认为VMnet8虚拟交换机,
它将虚拟系统的IP地址转换成宿主机的IP地址,从而借用宿主机访问其他主机。使用NAT模式,
也可以让虚拟系统通过宿主机器所在的网络来访问公网。
在这种模式下,虚拟系统是不能被LAN内其他PC访问的,只能虚拟机以宿主机的名义访问LAN内的计算机。
默认情况下NAT模式的虚拟系统的TCP/IP配置信息由VMnet8(NAT)虚拟网络的DHCP服务器提供,
因此采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。
使用NAT方式时,宿主机(Windows)网络管理里会多出一块虚拟网卡, 名为VMware Network Adepter VMnet8 如下图:
虽然从表面现象看,虚机无自己的IP地址,而是共享宿主主机的IP地址,但技术本质上却是基于Host-only方式的
(即,虚机还是有自己独立IP地址的,只不过实际中不投入使用),与Host-only方式一样,宿主主机成为双网卡主机,
同时参与现有的宿主局域网和新建的虚拟局域网,但由于加设了一个虚拟的NAT服务器,使得虚拟局域网内的虚机在对外访问时,
完全“冒用”宿主主机的IP地址,这样从外部网络来看,只能看到宿主主机,完全看不到新建的虚拟局域网。
Host-only(主机模式):让虚机具有与宿主机不同的各自独立IP地址,但与宿主机位于不同网段,同时为宿主主机新增一个IP地址,
且保证该IP地址与各虚机IP地址位于同一网段。最终结果是新建了一个由所有虚机与宿主主机所构成的局域网,
但该局域网与宿主主机本身所处的现有局域网是相互独立的,如果不做额外路由设置,这两个局域网之间不会连通,
因此新建的局域网可以认为是一个单独从属于当前宿主主机的私有网络,其成员为当前宿主主机和相关的所有虚机,
这也是Host-only命名的由来。
从网络技术上相当于为宿主主机增添了一个虚拟网卡,让宿主主机变成一台双网卡主机(宿主网卡+虚拟网卡)。
同时在宿主主机后端加设一个虚拟交换机,让宿主主机和所有虚机构成另一个虚拟的局域网。由于具备双网卡,
宿主主机可同时参与两个局域网(现有的宿主局域网+新建的虚拟局域网),只不过缺省情况下两个局域网不连通。
2017-08-10 每天2个Linux命令 traceroute命令
traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes。
(1)用法:
用法: traceroute [参数] [主机]
(2)功能:
功能: 通过traceroute可以知道信息从计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)
到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。
traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。
输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其ip地址。
(3)选项参数:
1) -m 设置检测数据包的最大存活数值TTL的大小。
2) -n 直接使用IP地址而非主机名称。
3) -w<超时秒数> 设置等待远端主机回报的时间
4) -r 忽略普通的Routing Table,直接将数据包送到远端主机上。
5) -q 设置发送探测包的个数
(4)实例:
1)[root@localhost sunjimeng]# traceroute www.baidu.com 查询到百度的站点经过的路径
复制代码
[root@localhost sunjimeng]# traceroute www.baidu.com
traceroute to www.baidu.com (14.215.177.37), 30 hops max, 60 byte packets
1 192.168.142.2 (192.168.142.2) 0.116 ms 0.071 ms 0.132 ms
2 * * *
3 * * *
4 * * *
5 * * *
......
30 * * *
复制代码
注意:
有时我们traceroute一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,
所以我们得不到什么相关的数据包返回数据。
2)[root@localhost sunjimeng]# traceroute -q 4 www.baidu.com 把探测包的个数设置为值4(默认是三次)
复制代码
[root@localhost sunjimeng]# traceroute -q 4 www.baidu.com
traceroute to www.baidu.com (14.215.177.38), 30 hops max, 60 byte packets
1 192.168.142.2 (192.168.142.2) 0.114 ms 0.143 ms 0.103 ms 0.135 ms
2 * * * *
3 * * * *
4 * * * *
5 * * * *
......
30 * * * *
3)[root@localhost sunjimeng]# traceroute -n www.baidu.com 显示IP地址,不查主机名
复制代码
[root@localhost sunjimeng]# traceroute -n www.baidu.com
traceroute to www.baidu.com (14.215.177.38), 30 hops max, 60 byte packets
1 192.168.142.2 0.151 ms 0.107 ms 0.060 ms
2 * * *
3 * * *
4 * * *
5 * * *
......
30 * * *
注意:
有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,
不能解析主机名、域名时,也会 有延时长的现象;您可以加-n参数来避免DNS解析,以IP格式输出数据。
4)[root@localhost sunjimeng]# traceroute -m 5 www.baidu.com 设置跳数
复制代码
[root@localhost sunjimeng]# traceroute -m 5 www.baidu.com
traceroute to www.baidu.com (14.215.177.38), 5 hops max, 60 byte packets
1 192.168.142.2 (192.168.142.2) 0.100 ms 0.130 ms 0.052 ms
2 * * *
3 * * *
4 * * *
5 * * *
[root@localhost sunjimeng]#
5)[root@localhost sunjimeng]# traceroute -r www.baidu.com 绕过正常的路由表,直接发送到与当前主机相连的IP地址
[root@localhost sunjimeng]# traceroute -r www.baidu.com
traceroute to www.baidu.com (14.215.177.38), 30 hops max, 60 byte packets
connect: 网络不可达
[root@localhost sunjimeng]# traceroute -r 0.0.0.0
traceroute to 0.0.0.0 (0.0.0.0), 30 hops max, 60 byte packets
1 localhost (127.0.0.1) 0.104 ms 0.012 ms 0.009 ms
(5)其他:
traceroute的工作原理:
Traceroute程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field):
首先,traceroute送出一个TTL是1的IP datagram(其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)
到目的地。当路径上的第一个路由器(router)收到这个datagram时,它将TTL减1。此时,TTL变为0了,
所以该路由器会将此datagram丢掉,并送回一个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),
traceroute 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个TTL是2 的datagram,
发现第2 个路由器......
traceroute 每次将送出的datagram的TTL 加1来发现另一个路由器,
这个重复的动作一直持续到某个datagram 抵达目的地。当datagram到达目的地后,该主机并不会送回ICMP time exceeded消息,
因为它已是目的地了,那么traceroute如何得知目的地到达了呢? Traceroute在送出UDP datagrams到目的地时,
它所选择送达的port number 是一个一般应用程序都不会用的号码(30000 以上),
所以当此UDP datagram 到达目的地后该主机会送回一个「ICMP port unreachable」的消息,而当traceroute 收到这个消息时,
便知道目的地已经到达了。所以traceroute 在Server端也是没有所谓的Daemon 程式。
Traceroute提取发 ICMP TTL到期消息设备的IP地址并作域名解析。每次 ,Traceroute都打印出一系列数据,
包括所经过的路由设备的域名及 IP地址,三个包每次来回所花时间。
windows下的tracert:
在大多数情况下,我们会在linux主机系统下,直接执行命令行: traceroute hostname。
而在Windows系统下是执行tracert的命令: tracert hostname。