Pve 使用 Lxc 创建 Openwrt 容器
共计 1510 个字符,预计需要花费 4 分钟才能阅读完成。
之前也提到过 Docker 安装 openwrt 软路由,与本文所实现的效果类似,但是实则性能不同。在 docker 中创建 openwrt,其一需要开启网卡的混杂模式,极大了增加了 cpu 的负担,因为来自网络的所有流量都不能丢弃,都要判断目的地是不是自己;其二,需要在 openwrt 中安装软件包,实际上是对容器的修改,这种方式不利于迁移,而 lxc 容器创建的容器则没有这两个问题。想了解更多,可以参考其他大佬的这篇文章 使用lxc搭建openwrt旁路由。
如果你不了解 lxc 容器的话,请看之前的文章 Lxc 简介以及使用。
之前挺疑惑 pve 的 ct 模板是干什么用的,原来正是创建 lxc 容器使用。而 lxc 技术是使用 Linux 内核的命名空间特性来隔离不同容器之间的进程,其实容器之间是共用内核的,所以只需要一个根文件系统即可启动容器了。
好巧不巧,记得之前编译 openwrt 的时候,正好也编译了 openwrt 的根文件系统的压缩包,具体可以看文章 Openwrt 编译官方固件详解。
我这编译出来的文件名为 openwrt-x86-64-generic-rootfs.tar.gz,接下来只需要将它上传到 pve 的 ct 模板即可。
/>
此时只需要运行如下命令即可:
pct create 115 \
local:vztmpl/openwrt-x86-generic-generic-rootfs.tar.gz \
-rootfs local:1 \
--ostype unmanaged \
--hostname Openwrt \
--arch amd64 \
--cores 2 \
--memory 512 \
--swap 0 \
-net0 bridge=vmbr0,name=eth0
-
pct create 115:创建容器 id 为 115 的容器。pct 是 pve 管理 lxc 容器的命令,后面这个 id 根据自己的实际情况来。
-
local:vztmpl/openwrt-x86-generic-generic-rootfs.tar.gz:指定容器的操作系统模板的路径。这里使用本地存储的容器模板 openwrt-x86-generic-generic-rootfs.tar.gz,注意,位置也有可能是 local-lvm,这个也要看实际情况。
-
--rootfs local:1:指定容器的根文件系统存储位置。local:1 表示使用本地存储器位置,容量大小为1G。
-
--ostype unmanaged:指定容器的操作系统类型为 unmanaged,表示该容器的操作系统不受 Proxmox VE 管理和支持。
-
--hostname Openwrt:设置容器的主机名为 Openwrt。这个名称也将是在 luci 登录界面和左上角展示的名称。
-
--arch amd64:指定容器的架构为 amd64,表示容器是在 x86-64 架构上运行的。
-
--cores 2:分配给容器的 CPU 核心数为 2。
-
--memory 512:为容器分配的内存大小为 512 MB。
-
--swap 0:禁用容器的交换空间。
-
-net0 bridge=vmbr0,name=eth0:配置容器的网络接口。-net0 表示第一个网络接口,bridge=vmbr0 表示使用名为 vmbr0 的桥接网络作为容器的网络连接,name=eth0 表示将容器内的网络接口命名为 eth0。
运行后即可进行常规的操作,在 pve 界面上选择刚刚创建的 openwrt 容器,进入控制台,运行命令 vim /etc/config/networt
修改网络配置,需要根据实际情况进行修改。然后重启网卡:
/etc/init.d/network restart
接下来就可以通过刚刚配置的 ip 访问了,然后比较重要的一点就是进入接口,关闭接口的 dhcp 功能,否则会搞坏网络环境。
提醒:本文发布于346天前,文中所关联的信息可能已发生改变,请知悉!
/>
Tips:清朝云网络工作室