在 Linux 中创建并桥接虚拟网络接口

在 Linux 中创建并桥接虚拟网络接口

我有一个工具可以重放 .pcap 文件中的流量,还有一个工具可以解释该流量。为了进行测试,我需要将流量从一个接口播放出来,然后将其输入到另一个接口。显然,我只需在两个 NIC 之间连接一条交叉电缆,但肯定有更好的方法可以在 Linux 中完成此操作?我尝试过使用环回接口(播放 lo 中的流量,解释 lo 中的流量),但没有成功。

有没有办法可以创建虚拟接口,然后桥接两个虚拟接口?理想情况下,我可以将流量从“virt-eth1”发送出去,并让我的其他工具监听“virt-eth2”。当流量发送到 virt-eth1 时,应该会桥接并进入 virt-eth2。从那里发生的事情无关紧要。

答案1

我认为您在这里需要使用 TUN/TAP 接口。安装 tunctl(CentOS 软件包),然后您就可以开始创建虚拟网络接口:

tunctl -t tap0
ifconfig tap0 up

更多信息请点击这里:http://backreference.org/2010/03/26/tuntap-interface-tutorial/

Tun/tap 接口是 Linux(可能还有其他类 UNIX 操作系统)提供的一项功能,可用于用户空间联网,即允许用户空间程序查看原始网络流量(以太网或 IP 级别)并对其进行任意处理。本文档试图解释 tun/tap 接口在 Linux 下的工作原理,并提供一些示例代码来演示其用法。

我记得,使用环回接口时,它无法与 PCAP 库正常工作,因为它实际上不是一个“真实”接口(或者肯定不会被系统视为真实接口)。如果您在其上运行 ifconfig,它甚至没有 MAC 地址。但是,TUN/TAP 接口有,并且对于您要尝试执行的操作而言,它可能正是您正在寻找的解决方案(无需创建额外的虚拟机等)。

我还认为,您只需一个 Tap 接口(无需在两个接口之间进行桥接)即可完成任务。只需将第一个进程绑定到虚拟接口并写入流量,然后让第二个进程绑定到该接口并读取流量即可。

相关内容