摘自:https://www.cnblogs.com/lynetwork/articles/17271495.html
PROXMOX 中用 ct 创建的 lxc 小鸡都默认不存在tun接口,因此需要一些小技巧来给这台 lxc 机器装上这个接口。

解决方法

在宿主机(Proxmox)中修改/etc/pve/lxc/XXX.conf 请注意下文中的 XXX 都应使用你的容器 id 替代

无特权容器

1
vim /etc/pve/lxc/XXX.conf

在conf文件末尾中添加

1
2
lxc.hook.autodev = sh -c "modprobe tun" 
lxc.mount.entry=/dev/net/tun /var/lib/lxc/XXX/rootfs/dev/net/tun none bind,create=file

重启Lxc容器

特权容器

Proxmox 7+

1
2
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"

Proxmox 6.x

1
2
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容器

常见问题

Q:我改如何分辨我的小鸡是否是特权容器?
A:如果在 /etc/pve/lxc/.conf 中有 unprivileged: 1 的字段,该容器是无特权容器。
Q:修改后Lxc容器无法启动
A:检查conf文件末尾添加的内容是否正确,1·检查lxc容器是否为特权容器,2·检查lxc容器是否为Proxmox 7+还是Proxmox 6.x,使用错误的配置会导致Lxc容器无法启动。
Q:如何查看是否成功创建了tun接口
A:在容器中自查 ls -lh /dev/net,检查是否存在 /dev/net/tun
Shell Output