引言
出现问题,解决问题。作为pfsense初用者带来太多问题,也在努力一次次的解决,虽然不尽人意,但是也是慢慢解决问题。
流量走向拓扑图
整个pfsense网络过于抽象,必须要进行一些拓扑图的画,要不然就容易晕过去。使用的双层防火墙架构
第一层(FW1):边缘防火墙。面对公网有桥接,并下发VLAN。
第二层(FW2):内部防火墙。挂载在FW1下,负责保护特定区域。
因为有着双层防火墙的架构,就会出现两次NAT转换。FW1映射到FW2,FW2映射到服务器。

FW2 的业务口(VLAN1)绝对不能设置“上游网关”,且必须拥有一个在该网段内独立的、不冲突的闲置 IP。以上就是我对这次pfsense上流量走向规划的理解
核心路由与边界网关
角色定义
vmbr0(WAN口): 边界网关。直接桥接物理网卡对接 ISP。负责 NAT、拨号和第一道防火墙封锁。vmbr1和vmbr2(LAN口): 核心路由。
WAN接口设置保持默认就ok,主要是看LAN口

LAN2口设置的为的IP 地址为192.168.2.1,记得开放DHCP
总而言之 WAN口:是桥接的pve、LAN1口IP:192.168.1.1、LAN2口IP:192.168.2.1
设置虚拟局域网(VLAN)
为了支撑 15 位用户同时进行的独立实验,本项目构建了一套分布式二级防火墙集群:
架构规模:部署 1 台核心网关 (FW1) 与 15 台独立的业务防火墙 (FW2),实现“一户一防火墙”的物理级逻辑隔离。
VLAN 资源池:总计划分 30 条标准 VLAN 链路。
双链路配额 :
接入链路 :每台 FW2 通过专属 VLAN 接入 FW1,确保用户间的上行流量互不干扰。
业务链路 :每位用户拥有独立的内部逻辑子网,支持自主定义映射规则与过滤策略。
设计核心:这种“双层嵌套+多租户”的架构,模拟了真实的 IDC 租户环境。通过 FW2 的独立控制,每位用户均可自主进行端口映射与流量审计,而不会影响到其他 14 位用户的网络安全
这套架构的核心在于‘高度自治’。30 个 VLAN 配合 15 台独立防火墙,不仅解决了 15 位用户的网络隔离问题,更通过双层 NAT 级联技术,让每位用户都能独立练习端口映射、访问控制和流量审计。虽然涉及 15 台防火墙的协同,但在 PVE 平台上运行非常稳定,是学习网络安全的理想架构
使用方法:虚拟机 → 硬件 → 网络设备 → 网卡1 → vmbr1 输入对应 VLAN 标签 1XX(VLAN ID) → vmbr2 输入对应 VLAN 标签 2XX
如何在pfsense上部署
启动已经初始化的pfsense,查看LAN口所接的IP,在内网部署一台机器直接访问LAN口IP或者在pfsense上shell上输入
#在指令菜单,输入8
8
#进入命令模式,临时关闭防火墙
pfctl -d临时关闭防火墙后访问WAN接口上的IP,就可以进入页面

输入初始化账号:admin和初始化密码:pfsense 返回界面
这里是我已经配置过的pfsense,首先进入就要去更改密码,更改成功后,退出再登录就行了。

pfsense设置中文
pfsense现在可以在设置内设置中文了,因此在改密码后就要进行中文修改。


改这两个就行了,就能成功设置中文了
pfSense 设置 VLAN
在pfsense设置VLAN分为5步走:打标签(添加VLAN ID)→分配接口→设置IP地址→添加DHCP服务→合并用户组
第一步:打标签 (添加 VLAN ID)
点击菜单:接口 (Interfaces) -> 接口分配 (Assignments)。
切换到 VLANs 标签页,点击 添加 (Add)。
父接口:选物理网卡(父网卡)(比如
vtnet1)。VLAN 标记 (Tag):填入编号(比如
101)。描述:写上名字(比如
User01_ONE),方便后期查询

第二步:分配接口
回到 接口分配 (Interface Assignments) 页面。
在左侧下拉框选刚才创建的
VLAN 101,点击右侧的 添加 (Add)。这时候会看到多了一个接口(比如叫
OPT1),点进去勾选 启用接口。

第三步:设置 IP 地址
1.IPv4 配置类型:选 静态 IPv4 (Static IPv4)。
2.IPv4 地址:填入规划好的地址(比如 192.168.101.1),掩码选 /24。
关键点:底部的 IPv4 上游网关 必须保持为 “无 (None)”!只有 WAN 口才需要网关,VLAN 口它是别人的网关。

第四步:添加DHCP
1.开启DHCP模式
路径:服务 (Services) -> DHCP 服务端 (DHCP Server)。
选择接口:点击刚刚在第 2 步分配好的那个接口标签(例如 VLAN1)。
2. 划定DHCP地址池
勾选:在接口LAN1启用DHCP服务
范围 (Range):填入起始和结束 IP。
专业建议:给VLAN 留出一些静态空间。例如范围设为
192.168.101.100到192.168.101.199。

第五步:合并用户组
定义“身份组”
路径:系统 (System) -> 用户管理 (User Manager) -> 用户组 (Groups)。
操作:点击 添加 (Add)。
组名:备注名字:VLAN_USER。
范围:这个版本的pfsense只能变灰,说明就是框选成功。

为了测试,所以先添加规则让起放行所有的流量
防火墙→策略规划→当前查看:WAN_USER
点击右下角的绿色 添加 (Add) 按钮(带向上箭头的那个,确保规则排在最上面)。
动作:选择 通过 (Pass)。
接口:保持为 VLAN_USER。
地址族:选择 IPv4。
协议:选择 任何 (Any) 。
源:选择 任何 (Any) 或 VLAN_USER net。
目的:选择 任何 (Any)。
描述:写上
全通放行。点击 保存 (Save) 并点击页面上方的 应用更改 (Apply Changes)。


验证VLAN划分
VLAN划分成功开始进行验证,在pve侧启用一台kali,在网卡上打上VLAN tag

使用对应的tag,就可以成功划分对应的vlan,启用kali,进入界面,查询IP 成功拿到192.168.109.100和192.168.209.100网段,启用成功,VLAN划分成功

微隔离
目标:实现109和209可以互相访问,但是不能去访问的别的vlan(以vlan109和vlan209为例)
第一步:创建接口组
点击菜单:接口 (Interfaces) -> 接口分配 (Assignments)
切换到 接口组 (Interface Groups) 标签页,点击 添加 (Add)
组名称:填入
GROUP_09_test成员接口:勾选
User_109和User_209描述:写上
互摸组,方便后期查询点击 保存

第二步:定义别名
点击菜单:防火墙 (Firewall) -> 别名 (Aliases)。
添加隔离组:名称
GROUP_109_209,类型选择“网络”,添加192.168.109.0/24和192.168.209.0/24。添加隔离墙:名称
RFC1918_NETS,类型选择“网络”,添加192.168.0.0/16

第三步:编写“互摸规则”
防火墙 (Firewall) -> 规则策略填写以下规则

第四步:验证规则
进入kali去ping192.168.1.1


规则验证成功
NAT回流问题
在没有非vpn环境下,映射内网资产是实现资源访问的最优方案,但是如果在FW2上准备映射“保险柜”里的资产,就引发NAT回流问题,导致外网终端无法通过公网IP回访该资源。即使去程都是成功的,也会出现回程问题,回不过来。
问题复现:数据流量包单程丢失
去程(成功):管理网段(172.16.11.x)访问FW2 WAN口(172.16.11.149),通过端口转发到内部服务器的(192.168.109.100)。这时候数据流量包的源IP仍然是管理网段IP(172.16.11.x)
回程(异常):服务器接受到数据流量包请求,准备回包给管理网段(172.16.11.x)。服务器去查找路由表结果发现默认网卡是FW1。于是,包就丢给FW1
结果:FW2在等着内部服务器回包去完成TCP握手,但是包走的FW1,所以FW2就板顶链接超时,握手失败,强制断开。
解决问题:NAT身份伪装
使用NAT身份伪装就是强迫内部服务器(192.168.109.100)将回包丢给FW2而不是FW1,就需要再FW2进行操作
技术原理:在数据包到达服务器之前,将包的源头从原始的管理网段(172.16.11.x)修改为FW2自己内部LAN接口(192.168.109.254)
操作步骤:
进入防火墙→地址转换→出站,选择混合出站
新建规则:接口选LAN接口(对应LAN接口名称)源地址选
172.16.11.0/24或者*(any),建议选后者就意味着无论哪个网段通过FW2访问服务器都可以进行NAT身份伪装。目的地址选择精准指向内部服务器的IP192.168.109.100/32,NAT地址指定为FW2LAN接口变量:LAN1 address,就可以动态映射
TIPS:由于开启的是 混合出站 NAT规则生成,这条手动规则优先高于自动规则。它既保留了内网设备正常上网的 NAT 功能,又通过这条‘特权规则’解决了特定映射的回流冲突。
并且在配置选择使用/32掩码,就为了规则匹配单个IP地址(“点对点”主机模式),从而确保伪装仅仅是只作用于目标服务器,而不是去干扰网段内其他设备的正常通信。

这样就成功解决了NAT回程的问题,还要检查一下系统→路由管理→网关状态,看是否LAN接口有IP地址,这里是不允许的,建议删掉,要不然LAN接口就会作为WAN口。
因为在pfsense默认逻辑就是:有网关就是出口,如果LAN口带有网关,系统就将其看做上游出口,并且自动开启路由。就会导致流量进入VLAN后产生“环路”或者“迷路”,导致端口映射失败。内网口LAN只是作为流量收纳扣,而不应该存在上游网关。因此看到在网关状态看到LAN接口网关,请立即删除
