0

我一直在尝试使用 tc、tc-nat 和 tc-pedit 来执行无状态的 nat 操作。我的目标是将数据包从一个接口 (eth0) 镜像到另一个接口 (eth1),但我还想更改目标 IP 和目标 MAC,以便可以将数据包传递到另一台主机。

主机 A [Eth0 -> Eth1(更改 IP dst,更改 MAC dst)] -------> HOST B

因为我有其他应用程序在 Eth0 上侦听,所以我无法在 Eth0 的入口/出口上执行 tc-nat 或 tc-pedit。所以这就是我所做的

  1. 创建一个虚拟接口
  2. 将数据包从 Eth0 镜像到虚拟接口
  3. 在 dummy 的出口端运行 tc-nat(更改目标 IP),通过管道进入 tc-pedit(更改目标 MAC),并通过管道镜像到 Eth1。

上述装置按预期工作,但性能很差(特别是与基于 libpcap 的应用程序(如 tcpbridge)相比时)。

我开始这种方法是希望在内核空间与用户空间中基于 libpcap 的应用程序相比获得更好的性能。我很好奇有没有更好的方法。

4

0 回答 0