ICMP协议(二)

一  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值'来判断对方所使用的'操作系统'及数据包经过'路由器'数量

Windows 和Linux的 ping 的ttl

③  ping命令行参数

ICMP协议(二)_第1张图片

-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 的发送和接收过程

ICMP协议(二)_第2张图片

说明: 后续'通过'tcpdump + wireshark 抓包'详细'查看

ICMP协议(二)_第3张图片

1、上面只是'最简单'的,同一个'局域网'里面的情况

2、如果'跨网段'的话,还会涉及'网关的转发'、'路由器的转发'等

ICMP协议(二)_第4张图片

⑥   traceroute  差错报文类型的使用

你可能感兴趣的:(TCP/IP,icmp,iptables,echo_ignore_all,ping不通的原因)