前言

今天在 Rock Linux 9 系统下配置 Tap 网卡,使用常规的例如 ip tuntap 指令手动创建的 Tap 网卡都只在当前有效,系统重启后并不会自动创建;所以还是要想办法由 NetworkManager 来管理和创建 Tap 网卡,才能保证在系统启动时自动创建和激活 Tap 网卡;

网上找的好多教程,包括问 GPT 给出的方案都是如下直接通过如下 nmcli 指令创建一个类型为 Tap 的网络接口;

nmcli connection add type tap ifname tap0 con-name tap0 

但在目前较新版本的 NetworkManager(1.42.2)版本下,这条命令会报如下的错误信息,提示不支持创建 tap 类型的连接

错误:错误的连接类型:"tap" 不在 [6lowpan, 802-11-olpc-mesh (olpc-mesh), 802-11-wireless (wifi), 802-3-ethernet (ethernet), adsl, bluetooth, bond, bridge, cdma, dummy, generic, gsm, hsr, infiniband, ip-tunnel, loopback, macsec, macvlan, ovs-bridge, ovs-dpdk, ovs-interface, ovs-patch, ovs-port, pppoe, team, tun, veth, vlan, vpn, vrf, vxlan, wifi-p2p, wimax, wireguard, wpan, bond-slave, bridge-slave, team-slave] 中

后来经过仔细查阅 NetwrokManager 和 nmcli 的帮助文档总算找到了正确的通过 nmcli 命令配置 tap 网卡的方法,这里记录以下;

正确的方法

新版本的 NetworkManager 也是支持创建 Tap 接口的连接的,不过它不是直接创建 type 为 tap 的连接;而是通过创建 type 为 tun 类型的连接,然后指定 mode 为 tap 来创建;完整的指令如下:

//创建 tun 类型的连接,并指定 mode 为 tap
nmcli con add type tun ifname tap0 con-name tap0 mode tap owner `id -u`

//为 tap0 这个 connection 设置静态IP地址
nmcli connection modify tap0 ipv4.method manual ipv4.addresses 10.0.5.1/24

//激活 connection
nmcli connection up tap0

这样创建的 tap0 连接就是一个由 NetworkManager 服务管理的,可以随操作系统启动而自动配置激活的 Tap 网络连接;
虽然查看 connection 和 device 的 type 都显示为 tun;
nmcli-tap-connection.png
但其实该连接所对应的接口已经是 Tap 接口了,可以看到 tun.mode 为 2(tap),同时该网络接口也有自己的 MAC 地址(tun接口是没有MAC地址的);
nmcli-tap-mode.png

经过多次重启系统测试,这个 tap 接口已经可以正常加载并激活!

Last modification:February 24, 2025
如果觉得我的文章对你有用,请随意赞赏