Linux下的单向ping通问题
一、现象
(1)主机A与主机B不在同一个局域网内,需要经过交换机或路由器连接。
(2)主机A能ping通主机B,但是主机B不能ping通主机A。
一、常见情况
(1)防火墙:检查SELinux、iptables配置
(2)ICMP:是否允许被ping配置文件——/proc/sys/net/ipv4/icmp_echo_ignore_all 或者在文件 /etc/sysctl.conf 配置字段 net.ipv4.icmp_echo_ignore_all
(3)反向路径过滤:验证反向数据包的流向,若出口与入口不一致,则认为是网络攻击,会丢弃该ICMP包。配置文件:/etc/sysctl.conf 字段:net.ipv4.conf.default.rp_filter net.ipv4.conf.all.rp_filter
(4)网关配置:默认网关配置错误
(5)主机故障:MAC地址是否正常
二、排查思路
(1)查看无法ping通的错误原因:地址不可达一般是IP问题,超时一般是对端配置问题;
(2)本地IP配置和路由信息: ifconfig,route;
(3)在对端抓取ICMP包:利用tcpdump工具抓包,分析是否有ICMP请求包,再看是否主机是否恢复ICMP消息;
若无请求包,则需要查看交换机或路由器环境配置;若有请求包无回复消息,则可能是对端与默认网关之间通信异常;
(4)在对端读取arp缓存表项,查看是否有默认网关对应的表项,再确认IP和MAC地址是否匹配;
(4)如果还有问题,可以想办法查看交换机或路由器上的arp选项,查找主机对应的IP和MAC地址是否与本机查询一致。