最近经常需要搭建实验环境做测试,重复的系统部署工作无疑是枯燥的体力活。DarkRay大师先前也分享过基于ESXi虚拟化的Homelab方案,详见穷人的虚拟化实验室方案。这里记录一下我用Proxmox VE搭建实验环境的过程。

安装Proxmox VE

官网下载iso后烧到u盘后引导安装,一般情况下使用默认参数即可,没有特殊需要配置的地方。简单说明一下我的机器:

  • 主板:ASRock J3455-ITX
  • CPU:板载 Intel® Quad-Core Processor J3455 (up to 2.3 GHz)
  • 内存:8g ddr3 1600
  • 硬盘:三星 850 evo 120g

这是今年春节后配的NAS方案,最近将nas迁移到HPE MicroServer Gen10后便空闲了出来。

配置宿主网络

Proxmox支持Linux Bridge和OVS Bridge,安装完成后默认建立了一个Linux Bridge:vmbr0,并将宿主网卡加入该Bridge。我们创建vm时网络选择vmbr0,就会将虚拟机桥接进宿主网络,而选择NAT模式则会通过宿主机NAT联网,这两种模式和vmware的桥接模式和NAT模式是一致的。但是我们搭建实验环境时可能会需要模拟复杂的网络环境,如不同VLAN、ACL等。因此我们还是和DarkRay大师的方案一样,使用pfSense来处理虚拟机的网络。

安装OVS

由于我这个主板的原因,网卡在OVS Bridge下性能会稍微好点,因此我选择使用OVS Bridege。OVS可以通过ssh或者在控制面板pve -> System -> Shell中执行命令apt install openvswitch-switch安装。

创建宿主网络Bridge

进入网络设置界面pve -> System -> Network中,记录默认的vmbr0中的参数,然后将vmbr0删除。创建OVS Bridge,填入原参数,保存为vmbr0。

创建VLAN Bridge

创建OVS Bridge,仅勾选Autostart,保存为vmbr1。重启proxmox使网络设置生效,正确配置后如图所示。

安装pfSense

上传pfSense的iso到proxmox后新建虚拟机挂载安装即可。一般情况下没有特殊需求,配置给1物理cpu,1核心,512M内存就够了。创建完成后再添加一块虚拟网卡,使用vmbr1,然后开机按照向导安装。

配置pfSense

安装完成后启动pfSense,wan/lan口均自动识别并配置完成,wan口从宿主网络(vmbr0)通过DHCP获取IP,lan口为192.168.1.0/24的网段,提供DHCP服务(vmbr1)。如果wan/lan口没有正确识别或有特殊需求,请自行设置。

默认配置配置下,pfSense禁止从wan口管理。选择菜单8进入shell,使用命令pfctl -d关闭防火墙。然后访问pfSense的wan口ip进入管理页面,使用admin/pfsense登录,根据向导完成配置。注意在Step 4 of 9时取消勾选Block private networks from entering via WAN和Block non-Internet routed networks from entering via WAN以便能从wan口访问pfSense。完成Step 8 of 9后,会重载配置,此时再从shell使用pfctl -d关闭防火墙。从Firewall -> Rules -> WAN中添加规则,允许ICMP和TCP 443从wan口通过,点Apply Changes后生效。

配置VLAN

完成了以上配置后,新建虚拟机并使用vmbr1网络且不进行VLAN配置时,已经可以接入pfSense的LAN区域并正常上网。

接下来通过pfSense来创建VLAN并将虚拟机接入VLAN中。

在pfSense菜单Interfaces -> Assignments -> VLANs中创建VLAN,Parent Interface选择LAN接口,VLAN Tag按需配置,VLAN Priority默认。这里创建10和20两个VLAN。


回到菜单Interfaces -> Assignments,会出现Available network ports,依次添加两个VLAN接口。


依次配置OPT1、OPT2。更改接口名称方便管理,启用接口,并分配IP。这里VLAN10使用10.0.10.1/24的网络,VLAN20使用10.0.20.1/24的网络。

为VLAN配置DHCP服务。菜单Services -> DHCP Server中编辑VLAN10接口和VLAN20接口,启用DHCP服务并设置DHCP地址池。

配置完成后新建虚拟机,网络使用vmbr1,VLAN设置为对应VLAN号。

开机后成功获取VLAN10网络内的地址,但无法ping通VLAN10网关10.0.10.1。

防火墙

在pfSense菜单Firewall -> Rules中配置防火墙规则。
添加简单规则使VLAN10内的虚拟机能ping通网关10.0.10.1。

pfSense默认Outbound NAT模式为Automatic outbound NAT rule generation,即不需要额外配置VLAN就能正常访问外网。因此需要通过防火墙规则来限制VM的网络行为,如仅能访问外网,不能访问宿主网络;或者完全隔离外网等,这里不做详细说明。

虚拟机模板使用

在Proxmox中安装完虚拟机后,可以将其转换成模板,以便从模板创建新虚拟机。操作方法是将安装完成后的虚拟机关机,然后从pve中右击该虚拟机,Convert to template。

从模板创建虚拟机:右击模板,Clone,选择克隆类型与参数即可。

克隆完成后根据需要修改虚拟机配置,然后启动。

最后

大体架构上使用Proxmox VE和ESXi都大同小异,只是在不使用vCenter的情况下ESXi无法使用克隆功能,也就无法通过模板机快速部署测试环境,这一点上Proxmox VE有一定优势。另外虚拟化环境下IO性能尤其重要,使用SSD做虚拟化环境的存储能很大程度地提升使用体验。