我正在测试一个协议的实现,该协议使用以太网(而不是IP)在两台计算机之间进行通信.为了实际上不必拥有两台物理计算机,我想创建两个虚拟以太网接口.这些只能相互通信,因此一个端点程序将绑定到一个接口,另一个端点将绑定到另一个端点.
这可能吗,我该怎么办?
您可以使用虚拟交换机VDE2.
例如(你需要几个术语):
# Install vde2 (assumes Debian/Ubuntu) sudo aptitude install vde2 # Create the switch and two tap interfaces attached to it sudo vde_switch -tap tap0 -tap tap1 # Configure the interfaces sudo ip addr add 10.0.31.10 dev tap0 sudo ip addr add 10.0.31.11 dev tap1 # Start a server socat - TCP-LISTEN:4234,bind=10.0.31.10 # Alternatively, an echo server: #socat PIPE TCP-LISTEN:4234,bind=10.0.31.10 # Start a client socat - TCP:10.0.31.10:4234,bind=10.0.31.11
在一侧键入,它将出现在另一侧.
您可以使用"tap"虚拟以太网驱动程序,该驱动程序允许用户空间程序伪装成以太网接口.这是一段时间的标准内核功能(虽然可能没有在你的内核中启用).