我正在测试一个协议的实现,该协议使用以太网(而不是IP)在两台计算机之间进行通信。为了实际上不必拥有两台物理计算机,我想创建两个虚拟以太网接口。这些只能相互通信,因此一个端点程序将绑定到一个接口,另一个端点将绑定到另一个端口。
这可能,我该怎么做?
答案 0 :(得分:21)
您可以使用虚拟交换机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
在一侧键入,它将出现在另一侧。
答案 1 :(得分:6)
您可以使用“tap”虚拟以太网驱动程序,该驱动程序允许用户空间程序伪装成以太网接口。这是一段时间的标准内核功能(虽然可能没有在你的内核中启用)。
答案 2 :(得分:2)
如果您需要,可以使用ns3在两个分接设备之间模拟复杂的网络:http://www.nsnam.org/
我已经在两个虚拟机实例之间模拟了两个交换机,一个无线客户端和一个AP。
答案 3 :(得分:1)
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
答案 4 :(得分:1)
如果你想要自己的子网而又不想打扰使用vde。
看看this。简而言之:
# 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
答案 5 :(得分:0)
您可以使用vconfig命令 例如:
vconfig add eth0 10 #virtual interface eth0.10 will be created
答案 6 :(得分:0)
也许我错过了一些重要的东西..但这不正是环回(lo)接口的用途吗?