在PVE中的LXC容器而非虚拟机中运行openwrt可以有效降低系统占用。我的方法不一定正确,分享出来供大家参考。

我目前试了两种方案,一种是在直接在lxc中跑openwrt;另一种是先在lxc中跑一个linux,在linux中安装docker,docker中再跑openwrt作为旁路网关。该方法仅供参考,不一定具有实际意义。优点主要有两个,LXC的系统占用比较低;由于docker上的openwrt可以方便的更新docker镜像,从而减少了更新openwrt的繁琐步骤。

以下方案均基于**PVE虚拟机:7.1-10**


方案1:

  1. 固件选用,我推荐esir大佬的固件。自行选取其他固件也可以

01 - Lean Code x86_64 Firmware | 固件 - Google Drive

  1. 任选eSir高大全版eSir精品小包的img.gz文件解压得到img文件,再次用windows的7zip软件打开这个img ,解压出里面最大的文件,得到里面是三个文件0.img、1.img、2.img,假设我是1.img最大,解压出来备用
  2. 把刚才的1.img上传到PVE宿主机的目录**/var/lib/vz/template/cache**
  1. 打开PVE的Shell

输入以下命令:

1
2
3
4
5
apt install squashfs-tools
cd /var/lib/vz/template/cache
unsquashfs 1.img
cd squashfs-root
tar zcf ../openwrt.tar.gz ./*
  1. 清理临时文件:
1
2
rm -R /var/lib/vz/template/cache/squashfs-root
rm -f 1.img
  1. 创建LXC容器
1
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接口。

在PVE的后台启动openwrt后,在LXC容器内输入:

1
nano /etc/config/network

修改Lan口部分,所有的 192.168.123.x需要根据设备所处网段修改,option gatewayoption dns填写主路由的 IP,option ipaddr 定义了 OpenWrt 的 IP 地址,在完成网段设置后,IP最后一段可根据自己的爱好修改(前提是符合规则且不和现有已分配 IP 冲突)

1
2
3
4
5
6
7
8
9
10
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.123.100'
option netmask '255.255.255.0'
option ip6assign '60'
option gateway '192.168.123.1'
option broadcast '192.168.123.255'
option dns '192.168.123.1'

修改完后,重启网络

1
/etc/init.d/network restart

方案2:

  1. 选择一个你熟悉的linux进行下载,我建议用ubuntu或debian
  1. 利用下载好的模板创建LXC容器,作为宿主机使用
  2. 在LXC容器中安装Docker

安装过程参考这两个网址

安装 Docker

Install Docker Engine

  1. 拉取Docker镜像,这里我推荐SuLinggg或小鸡过河的镜像,这是他们的Docker仓库地址

Docker Hub

Docker Hub

可以用以下命令拉取镜像

1
docker pull registry.cn-shanghai.aliyuncs.com/suling/openwrt:x86_64

1
docker pull kiddin9/openwrt-nginx:x86_64
  1. 创建并启动镜像

如果你使用SuLinggg的镜像:

1
docker run --restart always --name openwrt -d --network macnet --privileged registry.cn-shanghai.aliyuncs.com/suling/openwrt:x86_64 /sbin/init

使用小鸡过河的镜像

1
docker run --restart always --name openwrt -d --network macnet --privileged kiddin9/openwrt-nginx:x86_64 /sbin/init

启动容器后,我们可以使用 docker ps -a命令查看当前运行的容器:

  1. 进入容器并修改相关参数
1
docker exec -it openwrt bash

执行此命令后我们便进入 OpenWrt 的命令行界面,首先,我们需要编辑 OpenWrt 的网络配置文件:

1
vim /etc/config/network

更改 Lan 口设置:

1
2
3
4
5
6
7
8
9
10
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.123.100'
option netmask '255.255.255.0'
option ip6assign '60'
option gateway '192.168.123.1'
option broadcast '192.168.123.255'
option dns '192.168.123.1'
  1. 重启网络
1
/etc/init.d/network restart
  1. 修复宿主机网络

由于 docker 网络采用 macvlan 的 bridge 模式,即使宿主机与容器在同一网段,相互之间也是无法通信的。 为了解决这个问题,需利用多个 macvlan 接口之间是互通的原理,在 LAN 口新建一个 macvlan 虚拟接口:

  • 若宿主机 IP:192.168.1.21
  • OPENWRT IP:192.168.1.20

把下面这行加到宿主机的/etc/rc.local里

1
2
3
4
5
6
#!/bin/bash
ip link set eth0 promisc on
ip link add mynet link eth0 type macvlan mode bridge
ip addr add **192.168.1.21** dev mynet
ip link set mynet up
ip route add **192.168.1.20** dev mynet

注意加横线的这两个ip要根据你的实际情况进行更改

  1. 最后宿主机执行
1
sudo systemctl enable rc-local

以上内容仅供参考,具体以你的网络环境为准。如果有不对的地方也可以在评论区指出,供大家参考

主要思路:AdguardHome 分两组,一组上游全是国内 DNS,一组上游全是 DoT 或 DoH 的国外 DNS,分别作为富强软件的内外上游。

国内DNS组的AdguardHome:

国际DNS组的AdguardHome:

9.9.9.11
149.112.112.11
8.8.8.8
1.1.1.1

Passwall设置:

DHCP/DNS设置:

若采用双软路由时,Passwall的功夫网list模式出现无法正常联网的问题,可以采取以下措施试试:

  • 修改主路由的DHCP服务器设置项,在DNS服务器里把旁路由的LAN IP设置为首选DNS,旁路由里的设置不用改动,实测这样设置可以正常使用功夫网LIST

  • 或者客户端手动设置IP DNS服务器,把首选NDS改为旁路由的LAN IP,实测也可以解决问题

mikrotik logo

本文将是基于 PVE 7.1环境进行安装的ROS系统,仅记录安装ROS的整个配置的流程,安装PVE虚拟机的流程这里就不赘述了,网上资料比较都多。

使用到的固件镜像:

PVE虚拟机:7.1-10

ROS软路由:7.1.2

  1. 下载PVE安装镜像

Proxmox VE 7.1 ISO Installer

  1. 安装、配置PVE虚拟机

首先将所有网口添加进虚拟机节点,点击 数据中心 - 虚拟机 - 系统 - 网络 - 创建 - Linux Bridge,将没有被添加到网桥的网络设备的名字复制并填入桥接端口,可以添加备注,方便后续管理

添加完之后如下图所示,名称一般是一一对应的,另外可以将上面四个网络设备的开机启动打开

  1. 下载RouterOS镜像

进入RouterOS官网后之后,在Software→Cloud Host Router→Raw disk image对应下载7.1.2稳定版镜像,如下图所示

或者直接点击如下链接进行下载

将下载好的镜像解压,并重命名为RouterOS.img,将镜像文件上传到服务器,点击 数据中心 - 节点 - local(节点名称) - ISO Images
 ,然后选择文件并上传镜像

  1. 安装RouterOS

在PVE中新建虚拟机,虚拟机名称自定

在操作系统这一项,选择不使用任何介质

CPU核心数跟内存大小可以按照需求给,内存大小我是给的2G,其余设置默认,之后点击完成创建虚拟机。

创建完成以后,将虚拟机的默认硬盘分离并删除

进入PVE的Shell界面

输入如下命令

1
qm importdisk XXX /var/lib/vz/template/iso/RouterOS.img local-lvm

这里的XXX应该替换为你所创建的ROS虚拟的ID,例如,我创建的RouterOS的ID为111,故我要输入的命令为

1
qm importdisk 111 /var/lib/vz/template/iso/RouterOS.img local-lvm

出现类似如下所示

双击这个未使用的磁盘进行添加

最后将硬盘大小扩大一些

对虚拟机引导顺序进行调整

将所添加的RouterOS硬盘拖拽到最上面并打上勾

此时,ROS虚拟机的设置就已经完成了。具体网络设置部分,网上有比较多教程,设置也比较常规。我只说下防火墙设置。

另外,ROS系统需要激活才能使用,不然会限速,可以到ROS官网注册一个账号

MikroTik

依照下图所示进行激活

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

0%