前言
由于家庭环境下上网设备众多,在每个设备上配置科学上网环境是一件很麻烦的事情。并且手里还有一块闲置的机械硬盘和一个机械硬盘盒。
有了这两个原因,琢磨了半天下定决心搞一台能够运行PVE的虚拟化主机,既能当软路由,又能当轻量级的NAS。这次先分享一下硬件选购心得和PVE的搭建、openWRT的安装、配置。
硬件选购
我对于设备的硬件的要求有这些:
- 至少有三个2.5G网口,以保证局域网的传输效率(树莓派、PC、主路由)
- 能够运行PVE虚拟化(CPU架构只能是x86_64)
- 模块化设计,方便更换内存、硬盘
- 拥有USB-A 3.0(方便插机械硬盘盒)
- 能效比优秀,能够更省电
第二个要求下,只能选择intel 10代及以上或者AMD zen2及以上的CPU了。在B站上看了各路大佬的软路由硬件之后,最终锁定了Intel N100这款CPU。
这期间也考虑过J4125这款CPU,虽然准系统价格算下来能够比N100便宜100~200左右,但是它的能效比不怎么出色,性能不如N100,但是TDP比N100高了6W。
N100是intel于2023年第一季度发布的,最高支持单通道16G DDR4 3200或者16G DDR5 4800,采用了较新的Intel 7工艺,TDP仅有6W。4核4线程, 基础频率1.8 GHz,最大睿频3.4Ghz,这对于我的要求来说已经绰绰有余了,甚至可以说是有一些奢侈,但考虑到稳定性,以及未来可能会作为家庭网络的主路由使用还是选择了它。
在闲鱼上500~600左右可以淘到拥有4个Intel 2.5G i226-v网卡、2个USB-A 3.0、4个USB-A 2.0、1个M.2、1个SO-DIMM、1个SATA、1个mini-PCIe的N100准系统工控机。
安装PVE
下载PVE的ISO镜像(PVE镜像官网下载:https://www.proxmox.com/en/downloads/proxmox-virtual-environment/iso)
写入U盘
将U盘插入电脑(至少8G)
打开写盘工具rufus(https://static.gm-aaa.cloud/exe/rufus.exe)
设备选择需要写入的U盘,镜像文件选择PVE的ISO镜像
给主机接入键盘、显示器,将U盘插入主机进入BIOS选择从U盘启动,根据提示即可安装PVE系统。需要注意的是,在安装时填写的IP就是待会访问PVE的web管理界面的IP(以192.168.1.101为例),IP的网段最好和主路由网段相同,这样当之后配置好以后,其他设备也能通过连接到主路由的WIFI时也能够进入到PVE的管理后台。
在PVE上安装openWRT
这时就可以拔下键盘和显示器了,将主路由和PVE主机用网线连接起来,再将PC和PVE主机用网线连接起来,手动修改PC的IP为192.168.1网段下没有使用的任意IP,浏览器输入192.168.1.101:8006。
进入PVE的web管理后台,用户名是root,密码是安装系统时输入的密码。
网络配置
进入后,找到网络,将除了需要接主路由的网口之外的其他三个进行桥接,这时应该默认有一个网口已经被桥接,CIDR是PVE管理后台的IP,我们可以同时设置一下这个网桥的网关,网关指向待会想要配置的openWRT的IP,比如主路由的IP为192.168.1.1,那么这里的网关也就是接下来要配置的OpenWRT的管理IP可以设置为192.168.1.100,这一步是保证PVE的网络流量能够经过openWRT的处理。
我们可以将连接主路由的lan口直通给openWRT以达到最大的性能,网卡直通的意思是将某个网口配置成只能由某个虚拟机独享,由于少了虚拟化的过程,性能基本没有损耗。
由于网口众多,很容易就搞乱了。一般在机器外壳上标的eth0就是PVE中的eth0,以此类推。
这里的网络拓扑差不多是这样的,openWRT作为整套系统的网关,PVE的流量也会流经openWRT:
openWRT虚拟机创建
openWRT的镜像文件下载地址:https://openwrt.ai/?target=x86%2F64&id=generic
其次就可以创建虚拟机了,按照图示的方式一步一步来。CPU核心数和内存根据实际情况设置,先将磁盘删掉,等虚拟机创建好之后再添加,cpu的运行模式可以选择host,其他默认即可。
等创建好虚拟机之后,我们可以先在openWRT的硬件选项中,将其他三个网桥给到openWRT以保证任意其他网口将来插上都能正常连接网络。然后将连接主路由的网口进行直通:在硬件中添加原始设备,找到对应的网口,选择并添加。
接下来,进入到local中的ISO镜像,将下载在PC上的openWRT镜像上传到PVE主机。在PVE的shell界面输入
pm disk import <虚拟机的vid> /var/lib/vz/template/iso/<镜像文件名> local-lvm |
这行命令的含义是将指定的镜像使用local-lvm的磁盘空间,导入到指定的虚拟机
这时,在openWRT虚拟机->硬件中,应该能够看到一块未使用的硬盘,双击选中它,添加给openWRT。
在选项中的引导顺序,启用刚才添加的硬盘,并且将引导顺序拉到最上面,启动虚拟机。
网络配置
一般openwrt自带vim文本编辑器,进入openwrt的控制台,编辑**/etc/config/network**文件。