ping命令的用途用来检查网络的联通性
1、命令作用
执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
2、命令语法
ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]
参数说明
- -d 使用Socket的SO_DEBUG功能。
- -c<完成次数> 设置完成要求回应的次数。
- -f 极限检测。
- -i<间隔秒数> 指定收发信息的间隔时间。
- -I<网络界面> 使用指定的网络界面送出数据包。
- -l<前置载入> 设置在送出要求信息之前,先行发出的数据包。
- -n 只输出数值。
- -p<范本样式> 设置填满数据包的范本样式。
- -q 不显示指令执行过程,开头和结尾的相关信息除外。
- -r 忽略普通的Routing Table,直接将数据包送到远端主机上。
- -R 记录路由过程。
- -s<数据包大小> 设置数据包的大小。
- -t<存活数值> 设置存活数值TTL的大小。
- -v 详细显示指令的执行过程。
3、检测步骤
1) 使用ifconfig观察本地网络设置是否正确
root@localhost:/# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:04:1e:e9
inet addr:192.168.2.32 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe04:1ee9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2036926 errors:0 dropped:951 overruns:0 frame:0
TX packets:1991397 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:574918960 (548.2 MiB) TX bytes:1412850063 (1.3 GiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:164154 errors:0 dropped:0 overruns:0 frame:0
TX packets:164154 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:45693824 (43.5 MiB) TX bytes:45693824 (43.5 MiB)
2) ping 127.0.0.1来检查本地的TCP/IP协议有没有设置好
root@localhost:/# ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.043 ms
64 bytes from 127.0.0.1: icmp_req=2 ttl=64 time=0.040 ms
3) ping本机IP地址,这样是为了检查本机的IP地址是否设置有误
root@localhost:/# ping 192.168.2.32
PING 192.168.2.32 (192.168.2.32) 56(84) bytes of data.
64 bytes from 192.168.2.32: icmp_req=1 ttl=64 time=0.024 ms
64 bytes from 192.168.2.32: icmp_req=2 ttl=64 time=0.044 ms
4) ping本网网关或本网IP地址来检查硬件设备或者本地网络是否正常
root@localhost:/# ping 192.168.2.200
PING 192.168.2.200 (192.168.2.200) 56(84) bytes of data.
64 bytes from 192.168.2.200: icmp_req=1 ttl=255 time=0.811 ms
64 bytes from 192.168.2.200: icmp_req=2 ttl=255 time=0.938 ms
5) ping本地DNS地址,这样做是为了检查DNS是否能够将IP正确解析
root@localhost:/# ping localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_req=1 ttl=64 time=0.020 ms
64 bytes from localhost (127.0.0.1): icmp_req=2 ttl=64 time=0.045 ms
6) ping远程IP地址,这主要是检查本网或本机与外部的连接是否正常
root@localhost:/# ping 192.168.2.50
PING 192.168.2.50 (192.168.2.50) 56(84) bytes of data.
64 bytes from 192.168.2.50: icmp_req=1 ttl=255 time=0.811 ms
64 bytes from 192.168.2.50: icmp_req=2 ttl=255 time=0.938 ms
7)ping 使用参数ping本地ip
-i 3 发送周期为 3秒 -s 设置发送包的大小 -t 设置TTL值为 255
root@localhost:/# ping -i 3 -s 1024 -t 255 192.168.2.32
PING 192.168.2.32 (192.168.2.32) 1024(1052) bytes of data.
1032 bytes from 192.168.2.32: icmp_req=1 ttl=64 time=0.032 ms
1032 bytes from 192.168.2.32: icmp_req=2 ttl=64 time=0.050 ms
^C
--- 192.168.2.32 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.032/0.041/0.050/0.009 ms
4、故障信息
1) No Answer: 原因可能是,对方主机没工作,双方网络配置不正确,路由问题等。
2) Request Time Out: 对方主机已关机,路由问题或对端防火墙设置禁止ping
3) Unknown Host Name: DNS设置问题,或者对方主机不存在
4) Destination Net Unreachable: 双方没有建立连接,或对方主机不存在
5) Bad IP Address: IP地址不存在或IP不能被DNS服务器解析
5、Linux下允许禁止ping的方法
# 临时允许、禁止ping的设置
# 永久允许、禁止ping的设置
1) /etc/sysctl.conf 中增加一行
net.ipv4.icmp_echo_ignore_all=1 # 1表示禁止
net.ipv4.icmp_echo_ignore_all=0 # 0表示允许
2) 修改完成后执行sysctl -p使新配置生效
6、检查同一网段ip地址是否网络联通的脚本
第一种写法:
#!/bin/bash
echo "检查同一网段ip地址是否网络联通"
ip=1
while [ $ip != 254 ]
do
ping 192.168.0.$ip -c 2 | grep -q "ttl=" && echo "192.168.0.$ip yes" || echo "192.168.0.$ip no"
ip=`expr "$ip" "+" "1"`
done
第二种写法:
#!/bin/bash
for ip in $(seq 1 254)
do
site="192.168.2.${ip}"
ping -c2 -W1 ${site} > /dev/null 2>&1
if [ "$?" == "0" ]; then
echo "$site is up!"
else
echo "$site is down!"
fi
done