一 ping工作原理
① 为什么ping不通
+++++++++++++++ "ping不通分为两类" +++++++++++++++
1) 请求没有到'目标'服务器
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值'来判断对方所使用的'操作系统'及数据包经过'路由器'数量
Windows 和Linux的 ping 的ttl
③ ping命令行参数
-I '网卡名称' '目标IP地址'
-c 执行 ping '几次' count,指定'发送ICMP ECHO-REQUEST报文'次数
-i 指定'间隔'秒数
-W 设置'超时'时间,以毫秒为单位,与 '-c' 一起使用才'有效'
-S 指定请求的'源ip',一般会'自动'选择
结果: ping命令的输出信息中包括'目的地址ip'、ICMP报文长度、序号、'TTL值'、以及'往返'时间
ping -S 的使用
④ 内核参数禁ping
++++++++++++++++ "禁止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
通过ipatles禁止ping
ping socket 不允许的操作
⑤ 探究ping 的发送和接收过程
说明: 后续'通过'tcpdump + wireshark 抓包'详细'查看
1、上面只是'最简单'的,同一个'局域网'里面的情况
2、如果'跨网段'的话,还会涉及'网关的转发'、'路由器的转发'等
⑥ traceroute 差错报文类型的使用