最近在做项目转移工作,开发抛给我一个问题:和发送消息的节点ping不通了,但是发送消息的节点可以和我的Web节点通讯
防火墙
我第一反应就是防火墙,可能是 防火墙 拦截住了,小意思,一条命令搞定;
/etc/init.d/iptables stop
NAT表
然后奇怪的事情发生了,防火墙是关闭的状态,怎么会ping不通呢,有可能是nat表的原因,因为在关闭iptables的情况下, nat 表还是可以后添加上去工作的,
/etc/init.d/iptables start
/etc/init.d/iptables stop
还是不通,搞毛线啊,求助峰哥,通过峰哥知道了mtr命令
mtr命令
是几乎所有 Linux 发行版本预装的网络测试工具。他把 ping和 traceroute 的功能并入了同一个工具中,所以功能更强大。
mtr -I 47.90.15.000
My traceroute [v0.75]
linux-node1 (0.0.0.0) Sat Oct 8 19:18:54 2016
Resolver: Received error response 2. (server failure)er of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.1.1 0.0% 16 0.3 0.3 0.3 0.3 0.0
2. 124.193.164.121 0.0% 15 4.8 7.7 4.0 48.9 11.4
3. 10.255.148.185 0.0% 15 1.5 2.5 1.2 8.4 1.7
4. 10.255.52.113 0.0% 15 22.3 16.4 2.3 82.6 21.3
5. 124.205.98.145 0.0% 15 1.4 2.0 1.1 3.0 0.7
6. 124.205.98.57 28.6% 15 1.9 2.2 1.6 3.4 0.6
7. 218.241.244.129 0.0%
......
......
20. ???
21. 47.90.15.000 6.7% 15 48.1 79.5 46.3 125.3 35.3
常见可选参数说明:
-r 或 –report:以报告模式显示输出。
-p 或 –split:将每次追踪的结果分别列出来,而非如 –report统计整个结果。
-s 或 –psize:指定ping数据包的大小。
-n 或 –no-dns:不对IP地址做域名反解析。
-a 或 –address:设置发送数据包的IP地址。用于主机有多个IP时。
-4:只使用 IPv4 协议。
-6:只使用 IPv6 协议。
另外,也可以在 mtr 运行过程中,输入相应字母来快速切换模式,比如:
d:切换显示模式。
n:切换启用或禁用 DNS 域名解析
u:切换使用 ICMP或 UDP 数据包进行探测。
返回结果说明:
默认配置下,返回结果中各数据列的说明:
第一列(Host):节点IP地址和域名。如前面所示,按n键可以切换显示。
第二列(Loss%):节点丢包率。
第三列(Snt):每秒发送数据包数。默认值是10,可以通过参数 -c 指定。
第四列(Last):最近一次的探测延迟值。
第五、六、七列(Avg、Best、Wrst):分别是探测延迟的平均值、最小值和最大值。
第八列(StDev):标准偏差。越大说明相应节点越不稳定。
结果发现到达网关还是继续通讯的,但是在网关到节点的地方卡壳了
发送消息的节点到网关这一段是没问题的,判断得出就是发送节点的服务有什么做了限制
但是iptables 本身就是关闭的状态,那还有那些地方拦截了呢
Selinux
虽然可以没有多大的关系,但还是把它关了,排除一下吧。
[root@bj-web01-cang ~]# setenforce 0
setenforce: SELinux is disabled
[root@bj-web01-cang ~]# getenforce
Disabled
到这里困扰了很久,最后Google到一篇文章纯英文文章翻译了半天才明白 /(ㄒoㄒ)/~~
Linux内核有禁ping策略,一般是默认关闭的,但是之前的运维开启了这个,我不知道,栽了跟头
[root@bj-web01-cang ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
1
[root@bj-web01-cang ~]# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
[root@bj-web01-cang ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
0
OK,成功
[root@bj-web01-cang ~]# ping bj-message
PING bj-message (10.165.70.001) 56(84) bytes of data.
64 bytes from bj-message (10.165.70.001): icmp_seq=1 ttl=60 time=0.400 ms
64 bytes from bj-message (10.165.70.001): icmp_seq=2 ttl=60 time=0.268 ms
虽然这篇文章算不算什么高大上,但是有一些思路还是值得一些新手玩家看看的,推荐大家两篇关于网络的博客:
文章均为本站原创,转载请注明出处!