我有3个主机:
客户A
客户 B
服务器。
我有以下测试场景:
客户端 A 向服务器发送原始数据包(将源 MAC 地址更改为客户端 B)
服务器回复此数据包(我使用 tcpdump 确保服务器已回复此数据包)
客户端 B 在 netfilter 预路由上安装了一个注册钩子函数的模块,但什么也没收到。
有人知道为什么客户端 B 的钩子函数什么都没有收到吗?
谢谢!
我有3个主机:
客户A
客户 B
服务器。
我有以下测试场景:
客户端 A 向服务器发送原始数据包(将源 MAC 地址更改为客户端 B)
服务器回复此数据包(我使用 tcpdump 确保服务器已回复此数据包)
客户端 B 在 netfilter 预路由上安装了一个注册钩子函数的模块,但什么也没收到。
有人知道为什么客户端 B 的钩子函数什么都没有收到吗?
谢谢!
可能是因为您的交换机在客户端 A 的端口上看到了客户端 B 的 MAC 地址并记住了这一点。因此,它将通过以太网端口将回复发送到客户端 A,而不是客户端 B 的 erhernet 端口。
这似乎是网络问题,而不是编程问题。因此,这个问题在不同的论坛上可能更合适。
服务器端有一个 ARP 缓存,可能它已经包含主机 A 和主机 A 的原始 MAC 之间的关联(我猜这个关联是在客户端 A 与服务器建立连接时出现的)。
arp -n
将显示 ARP 表的内容。每个 ARP 表条目都有一些过期超时。当它过期时,服务器尝试通过向本地网络中的所有主机发送 ARP who-has 请求来刷新过期的条目。所以只有在主机A的缓存条目过期后,服务器才会吸收更新的信息。