<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="Proxmox ve 中lxc容器开启tun虚拟网卡">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2024-08-25 10:58<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
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代码


    lxc.hook.autodev = sh -c &quot;modprobe tun&quot;

    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代码


    vim /etc/pve/lxc/XXX.conf







根据 PVE 版本在末尾添加如下代码


PVE 7+




XML/HTML代码


    lxc.cgroup2.devices.allow: c 10:200 rwm

    lxc.hook.autodev = sh -c &quot;modprobe tun; cd ${LXC_ROOTFS_MOUNT}/dev; mkdir net; mknod net/tun c 10 200; chmod 0666 net/tun&quot;







PVE 6.x




XML/HTML代码


    lxc.cgroup.devices.allow: c 10:200 rwm

    lxc.hook.autodev = sh -c &quot;modprobe tun; cd ${LXC_ROOTFS_MOUNT}/dev; mkdir net; mknod net/tun c 10 200; chmod 0666 net/tun&quot;







重启 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安装、更新


Github：https://github.com/roacn/pve


OpenWrt：https://github.com/roacn/OpenWrt


1、安装curl、wget、squashfs-tools工具


以下请在PVE命令行中操作


使用root用户登录，执行以下命令




XML/HTML代码


    apt update &amp;&amp; apt install -y curl wget squashfs-tools




2、PVE一键换源、去订阅等


方式一：PVE中输入以下命令安装pve.sh，然后在PVE命令行中直接输入 pve 运行 推荐




XML/HTML代码


    wget https://mirror.ghproxy.com/https://raw.githubusercontent.com/roacn/pve/main/pve.sh -O /usr/bin/pve &amp;&amp; chmod +x /usr/bin/pve




在PVE命令行中输入以下命令即可运行脚本




XML/HTML代码


    pve







方式二：直接运行




XML/HTML代码


    bash -c  &quot;$(curl -fsSL https://mirror.ghproxy.com/https://raw.githubusercontent.com/roacn/pve/main/pve.sh)&quot;




3、LXC容器OpenWrt安装、更新


3.1 下载


方式一：PVE中直接使用 openwrt 命令运行自动安装更新脚本 推荐




XML/HTML代码


    wget https://mirror.ghproxy.com/https://raw.githubusercontent.com/roacn/pve/main/openwrt.lxc.sh -O /usr/bin/openwrt &amp;&amp; chmod +x /usr/bin/openwrt




在PVE命令行中输入以下命令运行脚本，进行安装或更新操作！




XML/HTML代码


    openwrt







方式二：直接运行




XML/HTML代码


    bash -c  &quot;$(curl -fsSL https://mirror.ghproxy.com/https://raw.githubusercontent.com/roacn/pve/main/openwrt.lxc.sh)&quot;




完成！


3.2 设置


固件下载相关




XML/HTML代码


    选项               说明                    默认值  

    仓库地址       github用户名称/仓库名称      roacn/build-actions

    TAG名称        所在release的tag名称        AutoUpdate-x86-lxc

    API文件        所在release的附件api文件名称 zzz_api

    固件格式.tar.gz或.img.gz格式固件；

    设置为default，默认获取云端两种格式固件；

    设置为.tar.gz，则只获取云端.tar.gz格式固件；

    设置为.img.gz，则只获取云端.img.gz格式固件   default







OpenWrt容器相关




XML/HTML代码


    选项              说明                  默认值

    容器ID      lxc容器id，需要&gt;=100          100

    容器名称    lxc容器管理页面显示的名称     OpenWrt

    CPU核心     lxc容器分配CPU核心数           4

    内存大小    lxc容器分配内存大小，单位MB     1024

    磁盘大小    lxc容器分配磁盘大小，单位GB      2

    交换分区    lxc容器分配交换分区大小，单位MB  512

    网络接口    lxc容器分配的网络接口数量         1

    开机自启    是否启用开机自启动，1为开启，0为不开启    1

    启动顺序    在所有PVE虚拟机的启动排序         1







Openwrt的命令配置文件在 /etc/openwrt.conf 也可以通过openwrt命令在设置里面修改，至于其他的修改需要通过源代码，自行测试。


</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
