gpt4 book ai didi

c - 发往自身的 UDP RAW_SOCKET 数据包在环回接口(interface)而不是 eth0 上捕获

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:06 27 4
gpt4 key购买 nike

使用本文中的资源 RAW_SOCKET to forge UDP packets我正在从其他主机生成数据包到自己的 eth0 ip 地址,例如 192.168.10.1 --> 192.168.10.131。

但是 tcpdump 显示,数据包正在到达 lo,而不是 eth0...在 lo -

10:10:18.332284 IP (tos 0x0, ttl 64, id 768, offset 0, flags [DF], proto UDP (17), length 71)
192.168.10.1.57961 > 192.168.10.131.12001: [udp sum ok] UDP, length 43

在 eth0 上是沉默的。

如何更改代码,使数据包到达 eth0? direct link to C source file

最佳答案

如我所见,您必须使用 tcp 函数而不是 udp

对于 UDP,您可以将 optname 设置为 SO_BINDTODEVICE

const char device[] = "eth0";
rc=setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, device, sizeof(device));
if (rc != 0)
{
printf ("%s: could not set SO_BINDTODEVICE (%s)\n",
argv[0], strerror(errno));
exit (EXIT_FAILURE);
}

关于c - 发往自身的 UDP RAW_SOCKET 数据包在环回接口(interface)而不是 eth0 上捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13320538/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com