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地址是否與本機查詢一致。
