一 ping工作原理
① 为什么ping不通
- +++++++++++++++ "ping不通分为两类" +++++++++++++++
-
- 1) 请求没有到'目标'服务器
-
- 细节: 要注意是'ip'不通还是'域名'不能解析导致'ping'不通
-
- 2) 请求到了'目标'服务器,但是'没有'回包
-
- +++++++++++++++ "常见原因" +++++++++++++++
-
- 1、对方'关机/ip'不存在
-
- 备注: ping同网段'不存在的'ip地址
-
- 2、网段不同,通过'路由'也'无法'找到
-
- 3、'防火墙 [安全组]'设置,过滤了ping发出的ICMP数据包,导致'无反馈',time out
-
- 备注:ping的结果是"超时或者time out",属于ping的请求已经'成功发出'了,但目标主机'没有回复'
-
- 4、ip地址设置错误,'多网卡ip同一网段'造成路由'不知'选择哪一个出口
-
- 备注: 对'多个网卡的服务器'来说,每个网口的ip配置必须'不能'在同一个网段
-
- 5、'网线'故障
-
- 6、未设置'网关',如果'未配置'将无法路由
-
- 7、内核参数禁止'ping'
-
- 强调: ping'不通'不代表'网络不可达',所以'ping不通'不代表有问题
② ping应用场景
- 1、用来检测'网络的连通'情况和分析'网络'速度
-
- 2、根据'域名解析'得到服务器ip
-
- 3、根据ping返回的'TTL值'来判断对方所使用的'操作系统'及数据包经过'路由器'数量
③ ping命令行参数
- -I '网卡名称' '目标IP地址'
-
- -c 执行 ping '几次' count,指定'发送ICMP ECHO-REQUEST报文'次数
-
- -i 指定'间隔'秒数
-
- -W 设置'超时'时间,以毫秒为单位,与 '-c' 一起使用才'有效'
-
- -S 指定请求的'源ip',一般会'自动'选择
-
- 结果: ping命令的输出信息中包括'目的地址ip'、ICMP报文长度、序号、'TTL值'、以及'往返'时间
- ++++++++++++++++ "禁止ping [三种方式]" ++++++++++++++++
-
- echo net.ipv4.icmp_echo_ignore_all=1 >> /etc/sysctl.conf && sysctl -p
-
- echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
-
- iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 \
-
- -j DROP -icmp-type 8 echo request
-
- 1、表示回显请求'ping请求'
-
- 2、0/0 表示'所有 ip'
-
- 需求1: 直接'拒绝' icmp 的请求包
-
- iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
-
- --> Destination port unreachable.
-
- 需求2: 直接'丢弃' icmp 的请求包
-
- iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
-
- --> Request timed out.
-
- 需求3: 禁止主机的'ping'功能 --> 直接'丢弃'向外发送的ICMP包
-
- iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP
-
- --> ping: sendmsg: Operation not permitted
说明: 后续'通过'tcpdump + wireshark 抓包'详细'查看
- 1、上面只是'最简单'的,同一个'局域网'里面的情况
-
- 2、如果'跨网段'的话,还会涉及'网关的转发'、'路由器的转发'等