PVE 下的 LXC 容器配置 tun 功能

无特权容器

在宿主机(PVE)中修改 /etc/pve/lxc/<容器id>.conf 文件。

可直接在 PVE 的 Shell 中执行以下操作:

nano /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

保存后重启容器即可。

特权容器

同样需要在宿主机(PVE)中修改 /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"

功能验证

在启动后的容器中执行 ls -lh /dev/net ,将得到类似以下的内容:

total 0
crw-rw-rw- 1 nobody nogroup 10, 200 Jan 17 20:32 tun

若无内容输出则未开启 tun

特权容器的区分

1、通过 PVE 管理界面中对应容器的 概要 界面中 无特权 后面的 “是” 或 “否” 来区分。

2、在编辑/etc/pve/lxc/<容器id>.conf 文件时,若里面有 unprivileged: 1 字段则为无特权容器。

废话文学

最近,我发现了一个名为 EasyTier 的开源项目,其核心功能是实现内网穿透与异地组网。初步了解后,感觉它似乎相当不错,不少人评价它比Tailscale还要好用。于是,我依照作者提供的项目文档,尝试进行部署使用。然而,对于我这个从事机械行业的人来说,相关知识储备实在有限,虽略懂皮毛,但实际操作起来却困难重重,处处碰壁。

首先我的服务器端和本地都是使用 1panel 面板,我直接在应用商店进行安装部署。然后按照项目文档给出的指令操作,却未能成功。于是我直接将项目文档中的配置部分直接复制出来,简单修改后应用到配置文件中,就这样完成了服务器端的部署。

接着进行本地端部署,这下子就开始状况不断。先是在 1panel 面板中安装的 EasyTier 无法正常启动,无奈之下,我下载了Windows版本的GUI安装包,安装到电脑上,配置好后能够连接到服务器端。随后,我将配置文件拷贝出来,替换 1panel 上安装的配置文件,可依然无法启动。我寻思着,要不本地装个 Ubuntu 桌面环境版本,看看 Linux 端 EasyTier 的 GUI 版本配置文件是否有所不同,结果 Linux 版本的 GUI 程序根本打不开。

鉴于这些情况,我加入了交流群。群里有个公告,提到了 CG888 大佬的一键配置脚本,我便依照脚本快速部署,结果还是无法运行。好在群里大佬众多,终于有人帮我指出无法运行的原因——没有开启 tun 。说实话,我压根不知道 tun 是什么东西,虽然项目文档里有所提及,但我根本不理解。于是,我又开始查询 tun 相关知识,以及在 PVE 中 LXC 容器如何开启 tun,这才有了上面的记录。

© 版权声明

相关文章

没有相关内容!

暂无评论

none
暂无评论...