Linux 查看网络终端ping外网不通故障

因停电Linux机器重启,重启后远程连接正常,就没有在意。今儿有人报告连不上网。我本机测试了下网络显示是正常的,浏览器也能上网。打开终端尝试ping baidu.com ,结果半天没反应。

心理犯嘀咕:“浏览器能上网,终端连不上网?”

做了以下尝试:

  1. 重启网卡
    root账户下 service network restart;
  2. 账户登出又登入
  3. ifconfig 查看IP设置;more /etc/resolv.conf查看DNS设置;/etc/sysconfig/network-scripts/ifcfg-*(根据自己的网卡更改星号内容)查看网卡设置。

均无效!那怎么办?为什么要使用ping呢?


ping 是Windows、Unix和Linux系统下的一个命令。ping 也属于一个通信协议,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通。

如果ping不同可以通过以下方式查找故障原因:

1. ping <127.0.0.1>

127.0.0.1 是本机IP循环地址,如果本地址无法ping通,则表明本机TCP/IP协议不能正常工作。

2. ping <本机IP>

用ifconfig查看本机IP,然后ping <本机IP>,通则表明网络适配器(网卡或MODEM )正常工作,不通则是网络适配器出现故障。

3. ping <同网段其他IP>

ping <同网段其他IP>,不通则表示网络线路出现故障;若网络中还包含有路由器,则应先ping 路由器在本网段端口IP,不通则此段线路有问题;通则再ping路由器所连目标计算机所在网段的端口IP,不通则是路由器出现故障;通则再ping目的计算机IP地址。

4. ping <网址>

ping <网址>,比如ping baidu.com。若本机设置了DNS服务,则会显示该网址指向的IP,表明本机的DNS设置正确而且DNS解析正常,反之就可能是其中之一出现了故障。

以上前三项都通过没问题。最后连外网网址时DNS解析也正确,但是丢包。Why?

$ ping baidu.com
PING baidu.com (220.181.38.251) 56(84) bytes of data.
^C
--- baidu.com ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms

是否是机器处于联网状态,但是屏蔽了ping命令?

因为有些服务器从网络安全的角度出发,会屏蔽ping命令,即屏蔽ICMP协议(我也不清楚这是啥)。

如何检查是否屏蔽?

Linux服务器中有一个文件/proc/sys/net/ipv4/icmp_echo_ignore_all ,查看文件内容cat /proc/sys/net/ipv4/icmp_echo_ignore_all
(1)当这个文件的内容为1时,为屏蔽ICMP协议;
(2)当为0时,为启用ICMP协议

两者是可以变换的,

临时禁用ping
#禁ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
#启用ping
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
永久禁用ping
#编辑配置
vim /etc/sysctl.conf
#设置禁ping(如果有此配置就无需重复添加,仅更新值即可)
net.ipv4.icmp_echo_ignore_all = 1
#刷新配置
sysctl -p

#启用ping
net.ipv4.icmp_echo_ignore_all = 0

那么我的问题是:上述所有配置都通过了,网卡、网关、icmp设置都正常,能ping通内网、网关,能解析外网,但但但但是丢包。

排除了自己机器的配置方式禁止ping,因为如果配置禁用了ping,则内部ping也将失效。怀疑是外网出口设置了防火墙、或者路由器里设置了wan口禁ping,禁止ping连通外网,但可以ping自己内部网络。

一把鼻涕一把泪,排查了一通问题还是没解决,但不影响使用,就这样吧。。。。。。

参考:1.Linux普通用户无法ping,linux无法ping的几种原因

你可能感兴趣的:(Linux 查看网络终端ping外网不通故障)