ProxmoxVE 7.0 LXC下搭建openwrt软路由

前言

本文探讨在赛扬J1900双网卡系统上使用ProxmoxVE 7.0 LXC环境下搭建OpenWrt软路由。
整体网络结构如下:

+----------------------------------------------------------------+
| LXC                                                            |
|       +------------------------------------------------+       |
|       | OpenWrt                                        |       |
|       |     +--------+     +--------+    +--------+    |       |
|       |     | br-lan |←---→|  eth0  |    | enp4s0 |    |       |
|       |     +--------+     +--------+    +--------+    |       |
|       |     192.168.1.1        ↑             ↑         |       |
|       +------------------------|-------------|---------+       |
|                              veth          phys                |
|................................|.............|.................|
| ProxmoxVE 7.0                  |             |                 |
|                                |             |                 | 
|                                ↓             ↓                 |
|               +------+     +--------+     +------+             |
|               |enp3s0|←---→|  vmbr0 |     |enp4s0|             |
|               +------+     +--------+     +------+             |
|                   ↑        192.168.1.2       ↑                 |
|                   |                          |                 |
|                   |                          |                 |
+-------------------|--------------------------|-----------------+
                    ↓                          ↓
    +----+      +--------+     +----+      +-------+
    | PC |←---→ | switch |←---→| TV |      | modem |
    +----+      +--------+     +----+      +-------+

一、创建容器

1. 下载模版

这里选择使用openwrt-21.02.0-rc3版本,rootfs包官方下载地址

2021.09.14修改:
目前稳定版openwrt-21.02.0已发布,rootfs包官方下载地址

下面步骤涉及的文件名称做了相应修改
如果之前已经安装了旧版本想更新到稳定版openwrt-21.02.0,看这里

2. 上传模板到PVE

上传模版

3. 新建LXC容器

通过SSH或者是网页端打开PVE终端,执行以下命令创建新容器

pct create 100 \
	local:vztmpl/openwrt-21.02.0-rc3-x86-64-rootfs.tar.gz \
	--rootfs local-lvm:4 \
	--ostype unmanaged \
	--hostname OpenWrt \
	--arch amd64 \
	--cores 2 \
	--memory 2048 \
	--swap 0 \
	-net0 bridge=vmbr0,name=eth0
各参数说明:
vmid:100		
	容器编号,可以根据需要自行设置,这里设为100,后面的相关设置会用到该编号。
local:vztmpl/openwrt-21.02.0-rc3-x86-64-rootfs.tar.gz	
	容器模板, local:vztmpl/ 指向 /var/lib/vz/template/cache/目录,是pve的默认模板存放目录,webUI上传的模板就存在该位置,可根据需要改为其他目录,openwrt-21.02.0-rc3-x86-64-rootfs.tar.gz为模板文件名。
--rootfs local-lvm:4
	根磁盘位置,local-lvm可以根据实际情况修改为其他存储位置,4表示空间大小为4G。
--ostype unmanaged
	系统类型,之后可在设置文件中修改。
--hostname OpenWrt
	容器名称,之后可在设置文件中修改。
--arch amd64
	系统架构,amd64 | arm64 | armhf | i386。
--cores 2
	分配给容器的核心数。
--memory 2048
	分配给容器的内存大小,这里是2G。
--swap 0
	分配给容器的交换区大小,这里是0。
-net0 bridge=vmbr0,name=eth0
	容器网络设置,这里设置网络0为容器中增加网卡eth0,桥接到主机的vmbr0接口。

二、修改容器设置

1. 修改容器配置文件

vim /etc/pve/lxc/100.conf

添加以下内容

# openwrt.common.conf是PVE自带的openwrt配置文件示例,内含一些基本设置
lxc.include: /usr/share/lxc/config/openwrt.common.conf
# /dev/ppp  pppoe拨号等功能需要用到
lxc.cgroup.devices.allow: c 108:0 rwm
# 钩子脚本,用于添加 /dev/ppp等设备
hookscript: local:snippets/hookscript.pl
# 将主机的网卡enp4s0分配给容器使用,根据自己的实际情况更改
lxc.net.1.type: phys
lxc.net.1.link: enp4s0
lxc.net.1.flags: up

Tips:不管有没有设置,容器都会加载/usr/share/lxc/config/common.conf配置文件

2. 创建钩子脚本

这里在官方示例guest-example-hookscript.pl的基础上进行修改,大家可以根据需要自行

img2kvm是一个在PVE下将OW固件添加到VM的工具,可以方便地将固件文件(包括gz方式的压缩格式)快速添加到OW虚拟机中,从而简化让人工操作的麻烦。 若是你的PVE主机能访问Internet,可以直接下载到目录“/usr/bin”或“/usr/local/bin”下,下面是将img2kvm下载到目录“/usr/local/bin”以及增加其可执行权限的命令: wget -P /usr/local/bin http://dl.everun.top/softwares/utilities/img2kvm/img2kvm chmod +x /usr/local/bin/img2kvm 若是PVE主机不能直接访问Internet,可以先下载到电脑中,然后上传到指定的目录“/usr/bin”或“/usr/local/bin”下,然后再通过chmod命令增加可执行权限。 这样完成后,就可以直接使用img2kvm命令了。 img2kvm详细的帮助信息可以通过命令“img2kvm -h”直接获取,旧版本img2kvm帮助信息的主要内容如下: A utility that convert OpenWrt firmware to disk image for KVM guest in Proxmox VE. Copyright (C) 2017-2018 everun.top usage: img2kvm [storage] -h or --help display this help. -V or --version output img2kvm version informaton. Command parameters: img_name the name of OpenWrt image file, e.g. 'openwrt-x86-kvm64-combined-ext4.img'. vm_id the ID of VM for OpenWrt guest, e.g. '200'. vmdisk_name the name of disk for OpenWrt guest, e.g. 'vm-200-disk-1'. storage Storage pool of Proxmox VE, default is 'local-lvm'. 其中,-h可以获得所有的帮助信息,-V可以获得版本信息。 所用的命令格式为: img2kvm [storage] 其具体参数说明如下: img_name:是OW固件的文件名称。一般为“xxx.img”或“xxx.img.gz”的格式。img2kvm可以直接识别并转换“img.gz”压缩格式的固件文件,对于“xxx.img.gz”来说,只需要输入“xxx.img”作为名称即可,不需要再另外加“.gz”。 vm_id:是创建好的OW虚拟机的ID。一般为一组非零开头的数字,如200。 vmdisk_name:是OW虚拟机要使用的磁盘名称。建议采用vm--disk-的命名方式,如vm-200-disk-1。 storage:是指导入使用的存储池的ID,默认为“local-lvm”,这是安装PVE时自动创建的。此项为可选项,若不指定则使用默认值。 v0.1.8版之后的img2kvm对所需的选项参数进行了简化,取消了参数“”,简化后的命令格式如下: img2kvm [storage] 即img2kvm命令后面仅需要加加两个参数:固件的文件名称和需要添加磁盘的虚拟机ID。 其中,固件的文件可以是img的映像格式,也可以是.gz的压缩格式。 例如,将文件名为“openwrt-x86-kvm64-combined-squashfs.img.gz”的固件导入到ID为“123”的VM中的命令为: img2kvm openwrt-x86-kvm64-combined-squashfs.img.gz 123 这里使用了默认的存储池local,故可以省略。 * 增补信息: 当前img2kvm最新的版本为v0.1.10。 最后更新于2019年3月20日。 特注:本下载已获得原作者授权。
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值