当前位置:  开发笔记 > 运维 > 正文

如何在linux中创建虚拟以太网设备?

如何解决《如何在linux中创建虚拟以太网设备?》经验,为你挑选了2个好方法。

我正在测试一个协议的实现,该协议使用以太网(而不是IP)在两台计算机之间进行通信.为了实际上不必拥有两台物理计算机,我想创建两个虚拟以太网接口.这些只能相互通信,因此一个端点程序将绑定到一个接口,另一个端点将绑定到另一个端点.

这可能吗,我该怎么办?



1> Tobu..:

您可以使用虚拟交换机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

在一侧键入,它将出现在另一侧.


此示例不起作用:所有流量都通过'lo'接口,可以通过使用'tcpdump'看到.您可能还注意到两个分接接口仍处于关闭状态.启动后,tcpdump可以在tap接口上运行,但在它们上面根本不显示流量.Linux内核使用它本地路由表(参见'ip route show table local')来发现这些IP是本地的,只是在本地路由数据包,而不使用'vde_switch'.说了这么多,我还没有找到一种方法来建立一个socat连接_through_ vde_switch和tap接口.

2> MarkR..:

您可以使用"tap"虚拟以太网驱动程序,该驱动程序允许用户空间程序伪装成以太网接口.这是一段时间的标准内核功能(虽然可能没有在你的内核中启用).


该模块称为tun,它也提供"tap"设备.有关完整的用户空间界面,请参阅内核的Documentation/networking/tuntap.txt; 通过在字符设备/ dev/net/tun上使用ioctl来创建虚拟接口
推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有