等风起

如果当誓时

All at vows.


PVE LXC下安装 OpenWRT 记录


前言

本文介绍笔者通过 Proxmox VE (PVE) LXC 安装 OpenWRT的折腾记录

前提条件

确保PVE系统已经安装了以下工具:

apt install squashfs-tools

下载 OpenWRT 镜像

OpenWRT 的官方网站下载squashfs格式的rootfs镜像,也可以自行编译。

选择与硬件架构匹配的镜像,文中以 openwrt-x86-64-generic-squashfs-rootfs.img为例。

解压镜像

下载完成后,使用以下命令解压镜像文件:

unsquashfs openwrt-x86-64-generic-squashfs-rootfs.img

进入解压后的目录:

cd squashfs-root

将文件打包为 tar.gz 格式,作为LXC模版:

tar zcf /var/lib/vz/template/cache/openwrt-x86-64-generic-rootfs.tar.gz ./*

创建 LXC 容器

使用以下命令创建一个新的 LXC 容器:

pct create 100 /var/lib/vz/template/cache/openwrt-x86-64-generic-rootfs.tar.gz --rootfs local-lvm:0.5 --ostype unmanaged --hostname openwrt --arch amd64 --cores 2 --memory 512 --swap 256 -net0 bridge=vmbr0,name=eth0 --features keyctl=1,nesting=1

参数说明

  • pct create 100: 创建一个 ID 为 100 的容器。

  • /var/lib/vz/template/cache/openwrt-x86-64-generic-rootfs.tar.gz: 指定要使用的根文件系统模板的路径。这里是 OpenWRT 的根文件系统。

  • --rootfs local-lvm:0.5: 设置容器的根文件系统存储位置。local-lvm 表示使用本地 LVM 存储,0.5 表示分配 0.5 GB 的存储空间。

  • --ostype unmanaged: 指定操作系统类型为"unmanaged",表示 Proxmox 不会对已知操作系统进行特定优化。

  • --hostname openwrt: 将容器的主机名设置为 openwrt

  • --arch amd64: 指定容器的架构为 64 位(amd64)。

  • --cores 2: 分配 2 个 CPU 核心给容器。

  • --memory 512: 分配 512 MB 的内存给容器。

  • --swap 256: 分配 256 MB 的交换空间给容器。

  • -net0 bridge=vmbr0,name=eth0: 配置第一个网络接口,连接到 vmbr0 桥接,并将接口命名为 eth0

  • --features keyctl=1,nesting=1: 启用特定功能。keyctl=1 允许使用内核密钥管理,nesting=1 允许嵌套虚拟化。

这些参数可以根据需要进行调整,以满足特定的性能和网络需求。 根据需要调整容器的 ID、CPU 核心数、内存和交换空间大小。

配置容器

编辑容器的配置文件:

nano /etc/pve/lxc/100.conf

在文件末尾添加以下内容:

lxc.cgroup2.devices.allow: a
lxc.cap.drop:
lxc.mount.auto: proc:mixed sys:ro cgroup:mixed
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file

参数说明

  • lxc.cgroup2.devices.allow: a:

    • 允许容器访问所有设备。a 表示所有设备权限。
  • lxc.cap.drop::

    • 该参数用于指定要从容器中删除的 Linux 功能(capabilities)。如果没有指定任何功能,表示不删除任何功能。此项通常用于限制容器的特权。
  • lxc.mount.auto: proc:mixed sys:ro cgroup:mixed:

    • lxc.mount.auto 用于自动挂载文件系统。
    • proc:mixed 表示以混合模式挂载 /proc 文件系统,允许容器访问进程信息。
    • sys:ro 表示以只读模式挂载 /sys 文件系统,容器可以读取系统信息但不能修改。
    • cgroup:mixed 表示以混合模式挂载 cgroup 文件系统,用于管理资源限制。
  • lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file:

    • 该参数用于手动挂载设备。
    • /dev/net/tun 是 TUN/TAP 虚拟网络设备的路径。
    • dev/net/tun 是容器内的挂载点。
    • none 表示不指定文件系统类型。
    • bind 表示将主机的设备绑定到容器中。
    • create=file 表示如果挂载点不存在则创建它。

这些配置项主要用于确保容器能够正常访问网络设备,并设置适当的权限和挂载点,以便 OpenWRT 能够正常工作。

启动容器

配置完成后,启动容器:

pct start 100

总结

通过以上步骤,笔者成功在 Proxmox VE 上安装并配置了 OpenWRT。









除另有声明外,本博客文章均采用 知识共享许可协议 - 署名标示 4.0(CC BY 4.0)进行授权许可。 Made with by AsVow

更早的文章

获取Cloudflare Tunnel下访客真实IP

背景介绍 假定局域网环境中,我们在 80 端口部署一个 PHP 网站,并且使用 Cloudflare Tunnel 将内网地址 http://127.0.0.1 转发至外网。然而,这种设置会导致所有访 ……

笔记 继续阅读