目录
前言
本文探讨在赛扬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的基础上进行修改,大家可以根据需要自行