如何在Linux中创build虚拟以太网设备?

我正在testing使用以太网(而非IP)在两台计算机之间进行协商的协议的实现。 为了实际上不必有两台物理计算机,我想创build两个虚拟以太网接口。 这些只能相互交谈,所以一个端点程序将绑定到一个接口,另一个端点将绑定到另一个端点。

这是可能的,我该怎么做?

Solutions Collecting From Web of "如何在Linux中创build虚拟以太网设备?"

您可以使用虚拟交换机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”虚拟以太网驱动程序,让用户程序伪装成以太网接口。 这是一段时间的标准内核功能(尽管它可能不会在你的内核中启用)。

如果需要,可以使用ns3在两个水龙头设备之间模拟复杂的网络: http : //www.nsnam.org/

我曾经在两个virtualbox实例之间模拟两台交换机,一个无线客户端和一个AP。

man接口man ifconfig

只需在/ etc / network / interfaces中添加一个新的节

我的示例配置:

 iface eth0 inet static address 192.168.2.150 netmask 255.255.255.0 network 192.168.2.0 broadcast 192.168.2.255 gateway 192.168.2.253 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 8.8.4.4 iface eth0:1 inet static address 192.168.2.2 netmask 255.255.255.0 network 192.168.2.0 broadcast 192.168.2.255 gateway 192.168.2.253 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 8.8.4.4 

eth0的IP地址为192.168.2.150,而eth0:1的地址为192.168.2.2

如果你想要自己的子网,不想打扰使用vde。

看看这个 。 简而言之:

 # tunctl -t eth0 Set 'eth0' persistent and owned by uid 0 # ifconfig eth0 eth0 Link encap:Ethernet HWaddr a6:9b:fe:d8:d9:5e BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) 

或者用ip:

 # ip tuntap add dev eth0 mode tap # ip link ls dev eth0 7: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 500 link/ether 0e:55:9b:6f:57:6c brd ff:ff:ff:ff:ff:ff 

您可以使用vconfig命令示例:

 vconfig add eth0 10 #virtual interface eth0.10 will be created 

也许我错过了重要的东西..但是这不正是什么回环(低)接口是什么?