PVE中LXC 容器开启 TUN

61

一、无特权容器的配置方法

编辑容器配置文件

在宿主机上,找到对应 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 设备,而无需手动编辑配置文件。

  1. 通过 Web 接口添加 TUN 设备
    在 Proxmox VE 的 Web 界面中,进入对应 LXC 容器的设置页面,选择“资源”选项卡,点击“添加”按钮,选择“设备直通”。 在“设备路径”中输入 /dev/net/tun,然后保存设置。注意,直通后其他设备不能再配置直通 /dev/net/tun

  2. 确保容器为特权模式
    如果容器未启用特权模式,需要在创建容器时取消“无特权容器”的勾选。对于已创建的无特权容器,可以参考上述特权容器的配置方法进行调整。

四、其他

  1. /etc/pve/lxc/<容器ID>.conf 文件中,如果存在 unprivileged: 1 字段,则该容器为无特权容器;否则为特权容器。

  2. PVE6和PVE7及更高版本的差异仅是从PVE7开始,相关配置使用`cgroup2`而不是`cgroup`。