记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

Proxmox ve 中lxc容器开启tun虚拟网卡

Proxmox ve 中lxc容器开启tun虚拟网卡
本教程已测试支持 PVE 6.x-8.x。ZeroTier 等虚拟组网工具是通过绑定 /dev/net/tun 的 tun 接口来进行组网的,然而 PROXMOX 中用 ct 创建的 lxc 小鸡都默认不存在这个接口,因此需要一些小技巧来给这台 lxc 机器装上这个接口。特别是Proxmox ve版本不同,有没有开启特权容器,设置不一样。
解决方案:
请注意下文中的 XXX 都应使用你的容器 id 替代
无特权容器
在宿主机(母鸡)中修改文件 /etc/pve/lxc/XXX.conf
vim /etc/pve/lxc/【NNN】.conf
在末尾添加如下代码
XML/HTML代码
  1. lxc.hook.autodev = sh -c "modprobe tun"
  2. lxc.mount.entry=/dev/net/tun /var/lib/lxc/XXX/rootfs/dev/net/tun none bind,create=file
重启 lxc 容器,就可以正常安装使用 ZeroTier 啦。
特权容器
在宿主机(母鸡)中修改文件 /etc/pve/lxc/XXX.conf
XML/HTML代码
  1. vim /etc/pve/lxc/XXX.conf
根据 PVE 版本在末尾添加如下代码
PVE 7+
XML/HTML代码
  1. lxc.cgroup2.devices.allow: c 10:200 rwm
  2. lxc.hook.autodev = sh -c "modprobe tun; cd ${LXC_ROOTFS_MOUNT}/dev; mkdir net; mknod net/tun c 10 200; chmod 0666 net/tun"
PVE 6.x
XML/HTML代码
  1. lxc.cgroup.devices.allow: c 10:200 rwm
  2. 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 容器,就可以正常安装使用 ZeroTier 啦
常见问题:
1、我改如何分辨我的小鸡是否是特权容器
如果在 /etc/pve/lxc/.conf 中有 unprivileged: 1 的字段,该容器是无特权容器。
2、开不了机
请检查是否使用了错误的命令,如为无特权容器使用了特权容器的指令等。
3、无特权容器,可以正常开机,却还是无法使用
在容器中自查 ls -lh /dev/net,是否存在 /dev/net/tun ,如不存在,请认真读题,并自查是否将所有的 xxx 改为了容器 id。
注意:在Proxmox ve 8.2 或者更新版本中,通过在LXC容器--资源--添加--Device Passthrough--Device Path 写入 /dev/net/tun 添加,就可以实现快速直通宿主机tun虚拟网卡。特别注意需要设置成特权容器,建立容器时候给无特权容器前面勾取消了。特殊情况就是命令模式创建的Openwrt系统,直接添加不行,需要用上面的修改配置参数,参考 PVE 7+ 的修改方法即可。详细操作参考之前 PVE安装以及简单设置教程 的文章。
PVE工具箱+ LXC容器OpenWrt安装、更新
1、安装curl、wget、squashfs-tools工具
以下请在PVE命令行中操作
使用root用户登录,执行以下命令
XML/HTML代码
  1. apt update && apt install -y curl wget squashfs-tools
2、PVE一键换源、去订阅等
方式一:PVE中输入以下命令安装pve.sh,然后在PVE命令行中直接输入 pve 运行 推荐
XML/HTML代码
  1. wget https://mirror.ghproxy.com/https://raw.githubusercontent.com/roacn/pve/main/pve.sh -O /usr/bin/pve && chmod +x /usr/bin/pve
在PVE命令行中输入以下命令即可运行脚本
XML/HTML代码
  1. pve
方式二:直接运行
XML/HTML代码
  1. bash -c  "$(curl -fsSL https://mirror.ghproxy.com/https://raw.githubusercontent.com/roacn/pve/main/pve.sh)"
3、LXC容器OpenWrt安装、更新
3.1 下载
方式一:PVE中直接使用 openwrt 命令运行自动安装更新脚本 推荐
XML/HTML代码
  1. wget https://mirror.ghproxy.com/https://raw.githubusercontent.com/roacn/pve/main/openwrt.lxc.sh -O /usr/bin/openwrt && chmod +x /usr/bin/openwrt
在PVE命令行中输入以下命令运行脚本,进行安装或更新操作!
XML/HTML代码
  1. openwrt
方式二:直接运行
XML/HTML代码
  1. bash -c  "$(curl -fsSL https://mirror.ghproxy.com/https://raw.githubusercontent.com/roacn/pve/main/openwrt.lxc.sh)"
完成!
3.2 设置
固件下载相关
XML/HTML代码
  1. 选项               说明                    默认值  
  2. 仓库地址       github用户名称/仓库名称      roacn/build-actions
  3. TAG名称        所在release的tag名称        AutoUpdate-x86-lxc
  4. API文件        所在release的附件api文件名称 zzz_api
  5. 固件格式.tar.gz或.img.gz格式固件;
  6. 设置为default,默认获取云端两种格式固件;
  7. 设置为.tar.gz,则只获取云端.tar.gz格式固件;
  8. 设置为.img.gz,则只获取云端.img.gz格式固件   default
OpenWrt容器相关
XML/HTML代码
  1. 选项              说明                  默认值
  2. 容器ID      lxc容器id,需要>=100          100
  3. 容器名称    lxc容器管理页面显示的名称     OpenWrt
  4. CPU核心     lxc容器分配CPU核心数           4
  5. 内存大小    lxc容器分配内存大小,单位MB     1024
  6. 磁盘大小    lxc容器分配磁盘大小,单位GB      2
  7. 交换分区    lxc容器分配交换分区大小,单位MB  512
  8. 网络接口    lxc容器分配的网络接口数量         1
  9. 开机自启    是否启用开机自启动,1为开启,0为不开启    1
  10. 启动顺序    在所有PVE虚拟机的启动排序         1
Openwrt的命令配置文件在 /etc/openwrt.conf 也可以通过openwrt命令在设置里面修改,至于其他的修改需要通过源代码,自行测试。

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):