如何在 CentOS 启动时创建 TAP 设备?

如何在 CentOS 启动时创建 TAP 设备?

我希望在 CentOS 7 上启动后有一个 TAP 设备可供使用。但是如果我创建一个文件ifcfg-tap0,我不知道如何填写DEVICE=字段,因为它后面可能没有物理设备。而且我找不到tapifcfg-tap0文件中指定模式的位置。

我该怎么办?我可以在 ifcfg-* 文件中嵌入命令来创建像在 Debian 中一样的 TAP 设备吗?

答案1

/etc/sysconfig/网络脚本/ifcfg-tap0

DEVICE=tap0
ONBOOT=yes
BOOTPROTO=none
TYPE=Tap

提出来

ifup tap0

答案2

兄弟,经过 3 个小时的研究,我找到了“正确”的答案。

其实 Centos 支持 tun/tap 接口,但是由于某种原因,缺少了一个步骤。

该机制位于 /etc/sysconfig/network-scripts 中。此机制允许您为自定义接口编写自定义 ifup-xxx 和 if-down-xxx 脚本。这个发现是受这篇文章启发的:http://mmc.com.au/pub/internode-tunnel/

另一个令人惊讶的发现是,原始的 Centos ifup-eth 脚本实际上支持 tun/tap 接口。只需查看一下即可。对于这两种 tun/tap 设备,TYPE 参数都应设置为“Tap”(注意大写 T)。实际模式通过 DEVICE(接口名称)来区分。因此,tap 设备应命名为 tap100,tun 设备应命名为 tun100 或类似的名称。

但这不会自动为您带来 tun/tap 接口支持。下一步是创建指向 ifup-eth 和 ifdown-eth 脚本的 2*2 符号链接,并将它们命名为 ifup-tun/ifup-tap 和 ifdown-tun/ifdown-tap。(这是缺少的步骤!我不知道 Centos 为什么不提供开箱即用的功能。)然后就可以了。您在 Centos 中拥有一个持久的 tun/tap 设备。

这是 ifcfg-tun100 配置文件。(文件名中的“tun”表示将调用 ifup-tun,因此要小心)。

DEVICE=tun100
BOOTPROTO=none
ONBOOT=yes
TYPE=Tap
USERCTL=yes
ARPCHECK=no
ARPUPDATE=no
IPADDR=1.1.1.10
NETMASK=255.255.255.0

DEVICE 字段中的名称指示隧道的模式 (tun/tap)。始终使用 Tap 作为 TYPE。这是 ifup/down-eth 中识别的关键字。如果处于 tun 模式,请禁用 ARPCHECK/ARPUPDATE(因为不支持)。其他一切都会很顺利和简单。

相关内容