免费ARP响应中的源ip、目标ip、源mac、目标mac是什么意思

免费ARP响应中的源ip、目标ip、源mac、目标mac是什么意思

我现在在主机 A 上。我需要向主机 B 发送免费 ARP 响应。在免费 ARP 响应中,我不知道主机 B 的 MAC 地址(即 LAN 上的计算机)。但我可以将 0xFFFFFFFFFFFF 添加到我的目标主机 B MAC 地址吗?我知道 IP 是 192.168.10.21,所以这应该是目标 IP 地址。而我的 MAC 地址和 IP 的源地址可以是任何东西,所以这是 arp 的一个缺陷。所以它应该始终是我的主机 A 地址。这是正确的理解吗?所以如果我实现用户空间 tcp,我可以发送免费 ARP 响应来更新我的路由器和目标机器吗?这也是正确的理解吗?在我的宽带路由器上的主机之间发送免费 ARP 响应可以吗?允许这样做吗?两个主机都是我的计算机,带有我提供的互联网路由器


另外,为什么我需要这个?我喜欢创建 ebpf XDP 过滤器,在目标主机上丢弃这些数据包。所有不需要的数据包。这与网络无关,而是与 Ebpf XDP 有关。如果我在服务器上创建保护,那么如何测试它?我需要模拟这些传入的数据包。基本上在 arp 级别一开始就停止 ddos​​。主要用于学习 ebpf XDP 的工作原理。如果您告诉我替代测试方法,那么我会尝试该方法,而不是将这些数据包发送到我的目标主机,这也将发送到我的计算机。

更新

。我可以使用不是宽带路由器的路由器。另外我为什么需要这个?我喜欢创建 ebpf XDP 过滤器,在目标主机上丢弃这些数据包。所有不需要的数据包。这与网络无关,而是与 Ebpf XDP 有关。如果我在服务器上创建保护,那么如何测试它?我需要模拟这些传入的数据包。基本上在 arp 级别从一开始就停止 ddos​​。主要用于学习 ebpf XDP 的工作原理。如果您告诉我替代测试方法,那么我会尝试该方法,而不是将这些数据包发送到我的目标主机,这也将发送到我的计算机。

答案1

我喜欢创建 ebpf XDP 过滤器,将这些数据包丢弃在目标主机上。

通常,如果没有操作系统集成,您无法执行此操作,因为免费 ARP 响应和正常 ARP 响应之间的唯一区别在于操作系统之前发出了 ARP 请求。在 Linux 上,内核对 GARP 的行为可以通过 sysctl 控制

arp_accept - BOOLEAN
    Define behavior for gratuitous ARP frames who's IP is not
    already present in the ARP table:
    0 - don't create new entries in the ARP table
    1 - create new entries in the ARP table

    Both replies and requests type gratuitous arp will trigger the
    ARP table to be updated, if this setting is on.

    If the ARP table already contains the IP address of the
    gratuitous arp frame, the arp table will be updated regardless
    if this setting is on or off.

/usr/src/linux/Documentation/networking/ip-sysctl.txt参阅类似这样的 sysctl 列表。

可能可以使用 eBPF 复制这一点,但如果内核已经可以做到这一点,为什么还要这样做呢?

如果我在服务器上创建保护,那么如何测试它?我需要模拟这些传入的数据包。

您可以使用 模拟 ARP 响应arpping

如果你告诉我替代测试方法

无需尝试使用家庭网络路由器,只需在 Linux 机器上创建任意数量的网络命名空间(谷歌如何做到这一点),使用 veth 对将它们连接到主网络命名空间,将它们全部连接到一个网桥中,然后您便拥有了包含所需设备数量的“虚拟网络”。现在您可以观察真实的 ARP 请求和响应(使用tcpdumpwireshark),以及 Linux 内核在不同设置下执行的操作,以及 eBPF 规则会产生哪些影响(如果您仍然需要它们)。

相关内容