0

我有3个主机:

客户A

客户 B

服务器。

我有以下测试场景:

客户端 A 向服务器发送原始数据包(将源 MAC 地址更改为客户端 B)

服务器回复此数据包(我使用 tcpdump 确保服务器已回复此数据包)

客户端 B 在 netfilter 预路由上安装了一个注册钩子函数的模块,但什么也没收到。

有人知道为什么客户端 B 的钩子函数什么都没有收到吗?

谢谢!

4

2 回答 2

1

可能是因为您的交换机在客户端 A 的端口上看到了客户端 B 的 MAC 地址并记住了这一点。因此,它将通过以太网端口将回复发送到客户端 A,而不是客户端 B 的 erhernet 端口。

这似乎是网络问题,而不是编程问题。因此,这个问题在不同的论坛上可能更合适。

于 2013-07-05T06:47:27.180 回答
0

服务器端有一个 ARP 缓存,可能它已经包含主机 A 和主机 A 的原始 MAC 之间的关联(我猜这个关联是在客户端 A 与服务器建立连接时出现的)。

arp -n

将显示 ARP 表的内容。每个 ARP 表条目都有一些过期超时。当它过期时,服务器尝试通过向本地网络中的所有主机发送 ARP who-has 请求来刷新过期的条目。所以只有在主机A的缓存条目过期后,服务器才会吸收更新的信息。

于 2013-07-05T09:01:40.403 回答