PVE中LXC 容器开启 TUN
一、无特权容器的配置方法
编辑容器配置文件
在宿主机上,找到对应 LXC 容器的配置文件,路径通常为 /etc/pve/lxc/<容器ID>.conf
,其中 <容器ID>
是你的 LXC 容器的 ID。 使用文本编辑器(如 vim
)打开该文件:
vim /etc/pve/lxc/<容器ID>.conf
在文件末尾添加以下内容:
lxc.hook.autodev = sh -c "modprobe tun"
lxc.mount.entry = /dev/net/tun /var/lib/lxc/<容器ID>/rootfs/dev/net/tun none bind,create=file
将 <容器ID>
替换为实际的容器 ID。
重启 LXC 容器
pve qm restart <容器ID>
完成后,容器内的 /dev/net/tun
设备应该已经可用,可以进入LXC容器,输入`ls /dev/net/tun`检查
二、特权容器的配置方法
特权容器的配置方式略有不同,具体取决于 Proxmox VE 的版本。
(1)PVE 7.x 及更高版本
打开 /etc/pve/lxc/<容器ID>.conf
文件,在末尾添加以下内容:
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.hook.autodev = sh -c "modprobe tun; cd ${LXC_ROOTFS_MOUNT}/dev; mkdir net; mknod net/tun c 10 200; chmod 0666 net/tun"
重启 LXC 容器
pve qm restart <容器ID>
(2)PVE 6.x 版本
在 /etc/pve/lxc/<容器ID>.conf
文件末尾添加以下内容:
lxc.cgroup.devices.allow: c 10:200 rwm
lxc.hook.autodev = sh -c "modprobe tun; cd ${LXC_ROOTFS_MOUNT}/dev; mkdir net; mknod net/tun c 10 200; chmod 0666 net/tun"
重启 LXC 容器
pve qm restart <容器ID>
三、Proxmox VE 8.2 及更高版本的简化方法
从 Proxmox VE 8.2 开始,可以通过 Web 接口直接为 LXC 容器添加 TUN 设备,而无需手动编辑配置文件。
通过 Web 接口添加 TUN 设备
在 Proxmox VE 的 Web 界面中,进入对应 LXC 容器的设置页面,选择“资源”选项卡,点击“添加”按钮,选择“设备直通”。 在“设备路径”中输入/dev/net/tun
,然后保存设置。注意,直通后其他设备不能再配置直通/dev/net/tun
确保容器为特权模式
如果容器未启用特权模式,需要在创建容器时取消“无特权容器”的勾选。对于已创建的无特权容器,可以参考上述特权容器的配置方法进行调整。
四、其他
在
/etc/pve/lxc/<容器ID>.conf
文件中,如果存在unprivileged: 1
字段,则该容器为无特权容器;否则为特权容器。PVE6和PVE7及更高版本的差异仅是从PVE7开始,相关配置使用`cgroup2`而不是`cgroup`。