我知道有一些主题是关于强制 Linux 计算机的本地 IP 流量通过 LAN(通过 WireShark 捕获流量的网络),但所有解决方案都意味着 IP 地址修改。
现在我的设置:
- 一台具有 ONE 接口和两个 IP 的 Linux PC:192.168.1.2 (eth0:0) 和 192.168.1.3 (eth0:1)
- 监听 192.168.1.2 的服务器
- 连接到 192.168.1.2 的客户端(绑定在 192.168.1.3 上)
我的问题是:是否可以强制Linux内核让IP数据包通过网络(交换机+带有Wireshark的PC)而不更改IP地址和端口,以便WireShark将192.168.1.2和192.168.1.3视为源和目标(反之亦然)?
就像我说的,我在这里找到了一些 IP 更改的答案:强制捕获网段上的本地 TCP 数据包和这里的另一个:强制本地 IP 流量流向外部接口
如果不修改驱动程序或内核,也许根本不可能?我是一名 C 程序员,因此如果我必须寻求内核修改,这可能是一个可能的解决方案。
-
经过一番调查:
我找到了一个可能的解决方案,使用 sysctl 参数:accept_local 与 rp_filter 结合:“接受具有本地源地址的数据包。与适当的路由相结合,这可以用于通过线路在两个本地接口之间引导数据包并正确接受它们。 ”我会尝试一下,然后让您知道它是否仅适用于一个接口和虚拟 IP
我尝试了许多路由表替代方案,但我认为在一个接口上这是不可能的。
答案1
如果您使用的是 Linux,则可以在lo
(环回)接口上捕获数据包。无需强制将流量传输到线路上。