在Linux中,是什么处理ping? [英] What handles ping in linux?

查看:2
本文介绍了在Linux中,是什么处理ping?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想覆盖/更改Linux处理ping ICMP回应请求数据包的方式。 这意味着我要运行自己的服务器来回复传入的ICMP(回应请求或其他)数据包。

但要使其正常工作,我想我需要禁用来自Linux的默认ping ICMP包处理。 但我想不出该怎么做(我甚至不知道用什么来处理ICMP请求……内核?一些用户空间代码?)...我找到的所有内容都是关于使用iptable丢弃ICMP回应请求的。

为了帮助理解,让我解释一下我的目标: 我希望能够用ping发送一些数据。(简单) 但我需要能够读取和提取这些数据。此外,我还希望能够使用特殊的回应回复(嵌入一些数据)

ICMP

若要覆盖推荐答案回应请求(ping)的默认内核行为,您可以执行以下操作,而不必深入内核或编写筛选器。

  • 首先:指示iptables丢弃ICMP回应请求。但是,它们会来到您的主机并进入您的网卡,但内核不会响应它们:

    iptables -A INPUT- p icmp --icmp-type 8 -j DROP

  • 第二:使用tcpdump嗅探ICMP包(或编写使用libcapp自己捕获的程序)。tcpdump具有显示有效负载数据或将转储的数据包写入文件的选项。您可以使用最后一个特性从程序中打开带有-w选项的tcpump,将其输出连接到管道并读取该管道。通过这种方式,您可以访问传入的ICMP回应请求,即使这些请求将被iptables丢弃。从您的程序中,您将能够分析负载数据。

    tcpdump -p icmp -i eth0 -s 0 -Xnlt

    (这是为了在标准输出上以可读的人类十六进制和ASCII格式显示数据,根据将原始数据写入文件/套接字更改-X-l选项)

    /li>
  • 第三:使用原始套接字,您的程序可以使用您希望的有效负载发送一个定制的包,假装是对以前的ICMP回应请求的响应。此SO问题可能会在此领域为您提供更多线索:How to receive ICMP request in C with raw sockets

这篇关于在Linux中,是什么处理ping?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆