如何知道有人正在 ping 服务器

admin 2024年2月3日12:04:13评论35 views字数 1354阅读4分30秒阅读模式

我们一般会使用 ping 来判断网络的连通性,如果再多问几个问题,能否全部回答出来,比如:

  • 如何知道是否有人正在发起 ping 

  • 对方执行 ping 的时候,能否在对方不知情的情况下获取对方的 IP

  • ping 命令工作在 OSI 网络模型的哪一层?

先说一个 ping 的工作机制,ping 使用的是 ICMP 协议。ICMP 协议既不是 TCP 也不是 UDP,TCP 和 UDP 是第四层,ICMP 比它们还要再低一层。

ping 命令工作在网络模型的第三层,即网络层。OSI 网络模型模型(Open Systems Interconnection),该模型将网络通信划分为七个层次,分别是:

  1. 物理层(Physical Layer)

  2. 数据链路层(Data Link Layer)

  3. 网络层(Network Layer)

  4. 传输层(Transport Layer)

  5. 会话层(Session Layer)

  6. 表示层(Presentation Layer)

  7. 应用层(Application Layer)


ping 命令使用 ICMP(Internet Control Message Protocol)协议来测试主机的可达性和测量往返时间(RTT)。ICMP 是 OSI 模型中的第三层协议,它通常用于网络设备之间的错误报告和网络状态信息的传递。

ping 命令通过发送 ICMP Echo Request 请求并接收 ICMP Echo Reply 响应,以测试主机之间的连接状态。

回到开头的问题,如果有人正在 ping 我们,有没有办法知道是谁在 ping ?

在 Linux 上比较容易回答以上问题。我们使用 iptables 创建一个日志过滤器可以跟踪 ping 请求。使用以下命令创建一条过滤器:

$ iptables -I INPUT  -p icmp  -j LOG  --log-prefix "ICMP: "
$ iptables -nL INPUTChain INPUT (policy ACCEPT)target  prot opt source destinationLOG icmp -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4 prefix "ICMP: "

当有人对主机发起 ping 请求时,使用 dmesg 可以查询到 iptables 的日志信息,其中包含 ping 请求的源地址 IP

如何知道有人正在 ping 服务器

除了使用 iptables 创建日志过滤器,也可以使用 tcpdump 查看 ping 请求:

$ tcpdump -n -q icmp

如何知道有人正在 ping 服务器

tcpdump 查看的是实时信息,如果此时有 ping 包进来,第一时间可以看到进包和回包。如果只想看请求包,不想看回包,可以在 tcpdump 中加过滤条件:

$ tcpdump -n -q icmp and icmp[icmptype] == 8$ tcpdump -n -q icmp and icmp[icmptype] == 0

icmptype 8 是请求包,icmptype 0 是回包。不加条件则是所有的 icmp 包。tcpdump 虽然命令里有个 tcp ,但它既可以处理 icmp 协议,也可以处理 udp 协议,它就是个抓包工具。

同样在 windows 上,也可以使用抓包工具分析是谁正在 ping 我们。使用的工具是 Wireshark。这里只给几张截图,就不多介绍了,原理类似。

如何知道有人正在 ping 服务器

如何知道有人正在 ping 服务器

全文完。

如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。

原文始发于微信公众号(生有可恋):如何知道有人正在 ping 服务器

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月3日12:04:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何知道有人正在 ping 服务器https://cn-sec.com/archives/2464753.html

发表评论

匿名网友 填写信息