问题描述:
ping是最常见的网络命令,用来测试和远程机器是否连通的方法。
我们常常会遇到一个问题:无法ping一台远程主机。
原因分析:
ping不通远程机器,最常见的原因有:
1、自己所在机器本身处于断网状态;
2、远程机器处于断网状态;
3、远程机器处于联网状态,但是屏蔽了ping命令。
解决方案:
如何判断是哪个原因导致ping不通呢?
-
首先排除情况1:自己所在机器本身处于断网状态
办法:使用ping命令测试是否和公网服务器相通。例如:
ping www.sina.com.cn
-
其次排除情况2:远程机器处于断网状态
办法:通过其他手段登录到远程服务器,从服务器端ping公网服务器地址。 -
最后排除情况3:远程机器处于联网状态,但是屏蔽了ping命令
办法(以Linux服务器为例):
有些服务器从网络安全角度出发,会屏蔽ping命令,即屏蔽ICMP协议(ping是一个命令名,不是协议名称,其底层是利用ICMP协议实现的)。
Linux服务器有一个文件/proc/sys/net/ipv4/icmp_echo_ignore_all
,当这个文件的内容是1
时候,为允许ICMP协议,当为0
时,为屏蔽ICMP协议。
解决方法很简单:
如果想打开ICMP协议:echo “1”>/proc/sys/net/ipv4/icmp_echo_ignore_all
cat /proc/sys/net/ipv4/icmp_echo_ignore_all
如果想禁止ICMP协议:
echo “0”>/proc/sys/net/ipv4/icmp_echo_ignore_all
cat /proc/sys/net/ipv4/icmp_echo_ignore_all
(命令行很简单,第一句话就是向文件写内容,第二句就是查看文件内容)