首页 文章
  • 3 votes
     answers
     views

    C(BSD套接字) - 在转发之前修改传入的数据包:

    我正在使用启用了IP转发的Linux(基于Debian)系统(/ proc / sys / net / ipv4 / ip_forward设置为1) . 我可以使用C原始套接字程序读取传入的数据包,但我想在转发之前修改它们的内容(仅使用BSD套接字) . This link提到我可以使用"iptables REDIRECT rule"将传入的数据包发送到我的程序正在侦听的端口...
  • 1 votes
     answers
     views

    无法使用PF_PACKET将原始数据包发送到本地mac?

    我一直在使用以太网协议(而不是IP)构建 socket(PF_PACKET,SOCK_RAW,ether_type) 我有一个小问题 . 我有一个数据包构造,源和目标mac设置为我的本地卡mac,我也绑定到套接字绑定 . 我可以从网络上收到很好的数据包 . 我能够将数据包发送到我看到它们出现在wireshark中的程度 . 但是,我的监听应用程序没有看到这些数据包 . 但是它能够看到来自网络上其他...
  • 4 votes
     answers
     views

    为什么在执行read()时ETH_P_IP和ETH_P_ALL之间存在差异

    我有以下设置: client(eth0) --- (eth2) linux bridge (eth1) --- (eth1) server 当我在linux桥上打开RAW套接字时使用 fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); 我有套接字绑定到eth2 . 当客户端向服务器发送数据包时,在网桥上运行的wireshark报告数据包的源m...
  • 1 votes
     answers
     views

    使用原始套接字捕获传入和传出的数据包

    我正在用C编写一个工具来记录在Linux系统上运行的不同应用程序的数据使用情况 . 为此我创建了一个原始套接字然后用“eth0”绑定它,这是我的接口的名称 . 但我的问题是,这个套接字只捕获传入的数据包(即:目的MAC地址作为我系统的MAC地址的数据包) . 我找不到任何源MAC地址作为我系统的MAC地址的数据包 . 所以它意味着我自己的机器写的数据包不会被原始套接字捕获 . 但我想在两个方向捕获...
  • 0 votes
     answers
     views

    在Mac OS中创建并发送源地址为0.0.0.0的DHCP数据包

    我正在尝试通过Mac OS X上的原始套接字创建和发送DHCP REQUEST消息 . 我能够创建并发送格式正确的消息,但源IP地址除外 . 它应该是0.0.0.0 . Wireshark指示源地址是我在IP头的ip_src.s_addr字段中设置的内容,除非我使用0.0.0.0 . 当我使用0.0.0.0时,Wireshark将IP显示为发送数据包的机器 . FWIW,我可以将目标IP设置为2...
  • 2 votes
     answers
     views

    无法接收到原始套接字的数据包

    我正在编写原始套接字客户端(成功发送UDP数据包)和服务器套接字,问题出在服务器部分 . 我用以下方式创建一个套接字: int raw_socket = socket(AF_INET, SOCK_RAW, IPPROTO_UDP); 我也尝试使用IPPROTO_RAW,但得到相同的结果,我绑定它: bind(raw_socket, (struct sockaddr*)&sockstr, s...
  • 1 votes
     answers
     views

    使用struct iphdr和ip.h解析原始套接字数据的文档

    我正在寻找有关如何在Linux上使用GNU LibC的原始套接字API的文档 . 到目前为止,我已阅读以下手册页: man 7 ip man 7 raw man 7 socket 看着 netinet/ip.h Headers ,我发现有一个 struct iphdr 定义 . 但是,无论是在GNU LibC Manual中,还是在上述任何手册页中,我都找不到有关如何使用此API的任何信息 ....
  • 1 votes
     answers
     views

    使用ioctl TIOCOUTQ进行套接字编程

    只是一个简单的问题,我正在做一个原始套接字编程: fd = socket(AF_PACKET, SOCK_RAW, IPPROTO_RAW); 并使用以下方法拉出发送缓冲区: bytes = sendto(fd, &buffer, send_size, 0,(struct sockaddr*)&socket_addr, addr_size); ioctl(fd, TIOCOUT...
  • 2 votes
     answers
     views

    我自己制作的Linux桥:arp请求永远不会成功

    我使用Boost.Asio扩展编写了一个桥(第2层交换机) . 我们可以轻松制作符合其类型要求的其他套接字, endpoints 和协议 . 我的扩展使用带有 AF_PACKET , SOCK_RAW 和 htons(ETH_P_ALL) 的linux数据包套接字(有关数据包套接字的更多信息,请参阅man 7 packet) . 这是一个解释我的桥如何工作的例子: [PC1] <----&g...
  • 1 votes
     answers
     views

    IPv6原始套接字的UDP错误长度

    我的程序应该发送UDP数据报,使用Raw套接字用于IPv6协议 . 我必须在套接字选项中使用 IPV6 CHECKSUM . 代码编译得很好,但是TCPDump的长度很差 . IP6 fe80 :: 20c:29ff:fe95:c051.24576> waw02s13-in-x03.1e100.net.0:UDP,坏长度12280> 40 我错过了什么或我做错了什么? int m...
  • 0 votes
     answers
     views

    逐跳扩展头ipv6

    我一直试图找到答案,但我现在变得绝望,因为我无法找到任何可靠的来源或参考文件 . 我正在尝试做的是,使用高级API将一个ipv6数据包发送到一个连接了HopbyHop扩展头的客户端RFC 3542 HopbyHop扩展头的选项类型是OPT_X,它是用户定义的 . 现在,当我将数据包发送到接收器时,数据包不会显示在接收端 . 但它表明我在界面上收到了一个带有Wireshark的正确数据包 . 我正在...
  • 0 votes
     answers
     views

    如何将数据包发送到内核?

    我的Linux系统中有两个接口 - eth0和eth1 . 我在eth0上打开了一个原始套接字,我正在监听传入的数据包 . 当数据包来自eth0时,我在更改以太网头(特别是目标MAC到eth1的MAC地址)后将其转发到eth1 . 现在,接口应该接受该数据包并将其发送到内核以进行进一步处理,并最终发送到等待它的应用程序 . 但由于某种原因,数据包达到eth1(我可以从wireshark看到),但...
  • 0 votes
     answers
     views

    DHCP客户端发现数据包

    在网络中使用Windows 7 PC和单个网卡与DHCP服务器 . PC已配置接口 .因此我试图通过此网卡发送(借助winpcap原始套接字)DHCP DISCOVER消息与OTHER MAC,以进行测试 . 当然使用DHCP Message type选项发送为广播 . 但DHCP服务器不回答这个问题(Wireshark除了发现数据包外不显示任何内容) .所以我的问题:服务器\客户端是问题,还是...
  • 5 votes
     answers
     views

    原始套接字帮助:为什么内核UDP不接收原始套接字创建的UDP数据包?

    我正在研究原始套接字 . 我使用IP_HDRINCL选项来构建自己的IP头 . 在IP标头之后,我正在构建UDP标头 . 然后我将数据包发送到我系统的环回地址 . 我有另一个程序正在运行,它将捕获UDP数据包 . 为了检查数据包是否正确形成和接收,我正在运行另一个正在读取原始IP数据报的进程 . 我的问题是虽然第二个进程(读取原始数据报)运行良好(所有IP和UDP字段似乎都没问题),但第一个进程(...

热门问题