PVE下使用LXC容器部署openwrt旁路由

  • PVE中将img镜像转换为CT容器专用模板
  • iStoreOS的img镜像文件已经通过PVE的web ui上传到iso文件存放的目录中,找到PVE的ISO文件存放位置,一般是在/var/lib/vz/template/iso/
1、创建一个文件夹,用来挂载要转换的iso文件,文件夹的名称可以自定义
mkdir /mnt/iso
2、然后加载NBD模块,使磁盘镜像可以映射到本地使用(应该是类似windows里面的虚拟光驱一样)
modprobe nbd
3、使用qemu-nbd -c 路径格式和镜像名,挂载指定格式及镜像文件,img文件的格式一般是raw,也就是原始磁盘映像,还有qcow2(QMENU映像格式)和vmdk(VMware映像格式)
qemu-nbd -c /dev/nbd0 -f raw /var/lib/vz/template/iso/op24315.img

op24315 可以根据实际情况修改。

4、查看所挂载的分区
lsblk -f /dev/nbd0

只选择squashfs分区,一般是第二个分区(nbd0p2)

5、使用mount指定分区和文件夹,挂载指定镜像分区到指定文件夹,把squashfs分区挂载到之前建立的文件夹
mount /dev/nbd0p2 /mnt/iso
6、进入挂载的目录,并查看一下目录的文件
cd /mnt/iso && ls
7、使用tar -czvf命令,将挂载的文件夹内的文件打包成CT容器专用的模板并存放在CT容器模板目录下
tar -czvf /var/lib/vz/template/cache/istoreos.rootfs.tar.gz *
8、最后查看一下CT模板专用文件夹的内容,看看模板是否制作成功
ls /var/lib/vz/template/cache/

如果显示有内容,表示转换成功。

9、转换成功后要卸载之前挂载的镜像文件,在卸载之前要把当前所在的目录切换成其他目录,否则无法卸载
cd
10、使用umount命令,指定文件夹,卸载指定的文件夹
umount /mnt/iso

使用qemu-nbd -d命令卸载镜像文件

qemu-nbd -d /dev/nbd0
目前这个方式只成功转换了openwrt这样的img镜像文件,类似Deepin或Windows的iso镜像文件是无法直接转换的,挂载NBD分区的时候会提示写保护,处于只读状态,后续就无法操作了。

PVE下使用LXC容器部署openwrt旁路由

  • 使用PVE自带的功能将istoreos的img镜像文件转换为LXC的专用CT模板之后,是无法通过WEB UI进行创建的,会报错,无法创建成功,只能通过命令进行创建。
pct create 100 \
  local:vztmpl/istoreos-rootfs.tar.gz \
  --rootfs local-lvm:2 \
  --ostype unmanaged \
  --hostname OpenWrt \
  --arch amd64 \
  --cores 4 \
  --memory 1024 \
  --swap 0 \
  -net0 bridge=vmbr0,name=eth0
  • pct create 100:LXC容器的ID,我设置的100
  • local:vztmpl/ 下载或者自己上传的储存路径就在这里,不需要改动,只需要修改后面的文件名,记得带文件扩展名 .gz
  • --rootfs local-lvm:2:根磁盘2G大小,磁盘位置: local-lvm默认不需要改动
  • --ostype unmanaged:系统类型,不需要改动
  • --hostname OpenWrt :容器名OpenWrt,可以自己命名
  • --arch amd64:系统架构,x86设备默认amd64
  • --cores 4:核心数,我直接分配了4个核心
  • --memory 1024 :分配1G内存
  • --swap 0:不分配swap
  • -net0 bridge=vmbr0,name=eth0 :网络配置,为OpenWrt增加网卡eth0,桥接到主机的vmbr0接口
执行完创建命令之后,先不要启动容器,需要进行一些设置。
PVE下使用LXC容器部署openwrt旁路由

开机自启动,打开

创建好之后编辑配置文件
vim /etc/pve/lxc/100.conf
修改容器配置文件:
lxc.include /usr/share/lxc/config/openwrt.common.conf

新增一行

启动容器之后,配置网络
vi /etc/config/network

默认的是192.168.1.1,按照实际需求修改,例如 192.168.2.2

config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
option ip6assign '60'

配置之后,在最后再加上DNS和网关的配置,DNS用的阿里云,网关就是路由器IP

config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.2.2'
option netmask '255.255.255.0'
option ip6assign '60'
list dns '223.5.5.5'
option gateway '192.168.2.1'
重启网络服务
service network restart

访问OpenWrt后台:http://192.168.2.2,输入密码:password进入后台,调整设置即可访问外网了。

摘抄自以下文献:

参考自粥粥笔记

PVE下使用LXC容器配置openwrt旁路由

正文完
 1

Lucky° 点滴记录