一 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、根据'域名解析'得到服务器ip3、根据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 -pecho 1 >/proc/sys/net/ipv4/icmp_echo_ignore_alliptables -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 差错报文类型的使用