OPNsense安装与使用
本文参考了 OPNsense中文手册 和 OPNsense 防火墙系列一 等优秀资料。
一、简介与核心概念
1.1 什么是 OPNsense?
OPNsense® 是一个基于 FreeBSD 的开源、易用且易于构建的防火墙和路由平台。它集成了商业防火墙中的大部分高级功能,同时具备开源项目的透明性和可验证性。
使命:为用户、开发人员和企业提供友好、稳定和透明的环境,使其成为使用最广泛的开源安全平台。
1.2 核心功能概览
- 防火墙与路由:状态检测防火墙、高级路由策略。
- VPN支持:IPsec、OpenVPN(站点到站点、移动用户)。
- 网络服务:DHCP/DHCPv6服务器、DNS转发器/解析器、动态DNS。
- 高级功能:
- 流量整形与策略路由。
- 入侵检测与防御(IDS/IPS)。
- 正向缓存代理(Squid)。
- 强制门户(多区域、凭证支持)。
- 高可用性与硬件故障转移(含配置同步)。
- 管理与监控:内置报告工具、RRD图表、数据包捕获、配置备份与还原。
1.3 重要注意事项(避坑指南)
在开始前,请务必了解以下关键点:
- NAT类型:OPNsense默认不支持全锥型NAT(NAT1),最高支持端口限制型NAT。可通过UPnP或端口转发缓解,但更推荐后者。
- 性能影响:
- 在PPPoE拨号等变动IP的接口上启用入侵检测,可能导致CPU占用过高。
- 流量分析、图表等功能在异常断电后可能数据损坏,同样会引起高CPU占用。
- 网络规划:前期规划至关重要!随意添加网卡会导致标识符和设备映射变动,影响高可用等功能的稳定性。
- 虚拟化平台选择:
- 强烈推荐使用PVE。在ESXi上运行高可用可能出现
DUP!问题,且内存占用计算不准确。 - ESXi上开启端口组混杂模式可解决
DUP!,但会导致OpenWrt无法访问OPNsense,且影响Docker MacVlan。
- 强烈推荐使用PVE。在ESXi上运行高可用可能出现
- 硬件兼容性:
- 部分Intel 2.5G网卡存在BUG,可能导致无法发出DHCP Offer,请避免使用。
- VLAN配置在物理机上可能存在问题。
二、安装准备与硬件要求
2.1 准备工作
- 两台电脑(用于测试,双网口以上)。
- 存储:大于20GB(推荐50GB)。
- 其他:RJ45网线、显示器和键盘。
2.2 硬件要求参考
以下为作者环境(i5-1135G7, 64G DDR4, 1T NVMe, ESXi 8)下的占用情况:
| 场景 | 处理器占用 (ESXi) | 内存占用 (ESXi/OPNsense) | 存储 |
|---|---|---|---|
| 轻负载 | 761 MHz | 16G / 7% | 120G |
| 满速下载 (92MB/s) | 4.6 GHz | 16G / 高 | 120G |
2.3 官方硬件要求指南
| 等级 | 处理器 | 内存 | 存储目标 |
|---|---|---|---|
| 最低要求 | 500 MHz 单核 | 512 MB | 4GB SD/CF卡 (使用nano镜像) |
| 合理要求 | 1 GHz 双核 | 1 GB | 40 GB SSD |
| 推荐要求 | 1.5 GHz 多核 | 4 GB | 120 GB SSD |
注意:实际需求取决于吞吐量和启用功能。例如,Squid代理、大型状态表、高并发强制门户会显著增加CPU和内存消耗。推荐使用英特尔(Intel)网卡以获得最佳性能和稳定性。
系统架构:支持 x86-32 (i386) 和 x86-64 (amd64)。对于新部署,强烈建议使用64位版本。
三、安装与基础配置
3.1 下载镜像
- 访问 OPNsense官网下载页。
- 选择:
Architecture: amd64->Image Type: DVD->Mirror: Aivian或Peking University。
3.2 安装系统
- 在虚拟机或物理机上启动镜像。
- 在登录提示符 (
login:) 处输入:用户名installer,密码opnsense。 - 选择键盘布局(默认回车即可)。
- 选择
Install (UFS)。 - 选择目标磁盘(通常为
da0)。 - 按提示创建交换空间并确认安装。
- 安装完成后,设置root密码并重启。务必在重启前移除安装介质。
3.3 初始设置向导
- 使用同一网段的设备访问
https://192.168.1.1。 - 跟随向导进行设置:
- 语言:中文。
- DNS:首选
223.5.5.5,辅助119.29.29.29。 - 启用DNSSEC支持和强化DNSSEC数据(推荐,可防DNS劫持。自建DNS请勿开启)。
- 时区:
Asia/Shanghai。 - 配置WAN/LAN接口。
- 重设root密码(可选)。
- 重载系统完成配置。
3.4 更换软件镜像源
默认源速度较慢,建议更换:
- 进入 系统 -> 固件 -> 设置。
- 在 镜像 下拉框中选择
Aivian (HTTPS,Shangxing,CN)。 - 或自定义源:选择
(custom),填入:- 北京大学镜像源:
http://mirrors.pku.edu.cn/opnsense/ - 网易镜像源:
http://mirrors.163.com/opnsense/注意:请勿自行改为
https。
- 北京大学镜像源:
- 保存后,进入 状态 选项卡,点击 检查升级。
四、网络接口配置
4.1 接口分配
进入 接口 -> 分配,查看和管理接口。
- 标识符:如
WAN,LAN。 - 接口设备:系统识别的网卡名称(如
vmx0)。 - 如需添加新接口(如WAN),在下方
Assign a new interface选择设备并填写描述(英文/数字)。
4.2 WAN口设置
进入 **接口 -> [WAN]**。
- 基本设置:勾选
阻止私有网络和拦截bogon网络。 - IPv4配置类型:
- PPPoE拨号:选择
PPPoE,在下方的PPPoE配置中填入宽带账号密码。 - DHCP:选择
DHCP。 - 静态IP:选择
静态IPv4,填写IP、掩码,并添加上游网关(标记为默认网关)。
- PPPoE拨号:选择
- 保存。
4.3 LAN口设置
进入 **接口 -> [LAN]**。
- 基本设置:取消勾选
阻止私有网络和拦截bogon网络。 - IPv4配置类型:选择
静态IPv4。 - 静态IPv4配置:填写内网IP地址(如
192.168.1.1)和子网掩码(如24)。 - 保存。
4.4 终端紧急配置网卡
如果不慎删除了管理口,可通过控制台恢复:
- 登录终端,进入管理选项菜单。
- 选择
1) 接口分配,按提示重新分配WAN、LAN等接口的物理网卡。 - 选择
2) 接口设置,为指定接口(如LAN)重新配置IP地址等。 - 按提示完成并重启相关服务。
五、防火墙规则配置
5.1 创建允许规则(示例:允许LAN访问外网)
进入 防火墙 -> 规则 -> LAN,点击 + 添加。
| 选项 | 设置 |
|---|---|
| 操作 | 通过 |
| 接口 | LAN |
| 方向 | in |
| TCP/IP版本 | IPv4 |
| 协议 | any |
| 源 | LAN网络 |
| 目标 | any |
| 目标端口范围 | any |
| 描述 | Default allow LAN to any rule |
5.2 创建阻断规则(示例:禁止访问阿里DNS)
同样在LAN规则页面,点击 + 添加。
| 选项 | 设置 |
|---|---|
| 操作 | 阻止(或拒绝) |
| 接口 | LAN |
| 方向 | in |
| TCP/IP版本 | IPv4 |
| 协议 | any |
| 源 | LAN网络 |
| 目标 | 223.5.5.5 (单个主机或网络) |
| 目标端口范围 | 53 |
| 描述 | 禁止访问阿里DNS |
阻止:直接丢弃数据包。拒绝:返回拒绝数据包。
六、基础服务配置
6.1 系统DNS与Unbound DNS
- 系统DNS(网关DNS):
- 进入 系统 -> 设置 -> 常规。
- 在 网络 部分的
DNS服务器中填入公共DNS(如223.5.5.5),并为其选择对应的WAN网关。
- Unbound DNS(局域网DNS):
- 进入 服务 -> Unbound DNS -> 常规,勾选
启用Unbound和启用DNSSEC支持。 - 进入 查询转发,取消
使用系统DNS服务器,手动添加转发服务器(如223.5.5.5)。 - DoT加密查询(可选):进入 DoT 选项卡,添加服务器,例如:
- 服务器IP:
223.5.5.5 - 端口:
853 - 验证CN:
dns.alidns.com
- 服务器IP:
- 进入 服务 -> Unbound DNS -> 常规,勾选
6.2 DHCPv4 服务
进入 **服务 -> DHCPv4 -> [LAN]**。
- 勾选
启用。 - 设置地址池范围,例如:
从 192.168.1.10到192.168.1.245。 - 网关和DNS可不填,默认使用路由器地址。
6.3 网络时间协议(NTP)
进入 服务 -> 网络时间 -> 常规,可添加以下推荐的NTP服务器:
- 国内:
ntp.aliyun.com,ntp.tencent.com,ntp.sjtu.edu.cn,cn.pool.ntp.org - 国际:
time.google.com,time.cloudflare.com,pool.ntp.org
七、IPv6 配置
7.1 公网IPv6(有PD前缀)
- WAN口:
接口 -> [WAN],IPv6配置类型选DHCPv6。在DHCPv6客户端配置中,打开仅请求IPv6前缀、发送IPv6前缀提示,前缀委派大小设为60(需与运营商下发一致)。 - LAN口:
接口 -> [LAN],IPv6配置类型选跟踪接口,并在跟踪IPv6接口中打开允许手动调整DHCPv6和路由器通告。 - 启用IPv6:
防火墙 -> 设置 -> 高级,在IPv6选项中打开允许IPv6。 - 分配地址:
- DHCPv6:
服务 -> DHCPv6 -> [LAN]中启用并设置范围。 - 或路由器通告:
服务 -> 路由器通告 -> [LAN],路由器通告选Assisted,勾选通告默认网关,填入DNS服务器(如2400:3200::1)。
- DHCPv6:
7.2 NATv6(无PD前缀,使用内网IPv6)
- WAN口:同上,配置DHCPv6获取地址。
- LAN口:
接口 -> [LAN],IPv6配置类型选静态IPv6,使用ULA地址(如fd00::1/64)。 - 启用IPv6:同上。
- 配置NAT出站规则:
防火墙 -> NAT -> 出站,模式改为混合生成出站NAT规则。- 添加两条手动规则(IPv4和IPv6),关键是将
转换/目标设为接口地址,并勾选静态端口。这是实现端口限制型NAT的关键。
- 分配地址:同7.1第4步,为LAN配置DHCPv6或路由器通告。
7.3 解决IPv6大包问题
若 test-ipv6.com 提示大包错误,需调整MSS:
- 在 接口 -> [WAN] -> 通用配置 中,设置
MSS值。 - 计算公式:
MSS = PPPoE MTU(通常1492) - 60,约为1430。可尝试1420或1400。 - 测试命令(Windows):
ping -l 1500 baidu.com逐步减小-l后数值直到通,该值即为可用MSS。
八、进阶功能配置
8.1 流量整形(流控)
以创建HTTP流量优先级为例:
- 创建管道:
防火墙 -> 流控 -> 管道,创建上传/下载管道,设置带宽(如 160Mbit/s上传,1000Mbit/s下载)。 - 创建队列:
防火墙 -> 流控 -> 队列,为不同协议创建队列并绑定到管道,设置权重(值越低优先级越高)。- 例如:
HTTP上传队列权重50,其他流量队列上传权重80。
- 例如:
- 创建规则:
防火墙 -> 流控 -> 规则,创建规则将特定流量(如目标端口80/443)指向高优先级队列。 - 在
防火墙 -> 流控 -> 状态中查看队列状态。
8.2 别名(Aliases)
别名用于批量管理IP、端口等,是防火墙规则的强大工具。
- 类型:主机、网络、端口、URL Table (IPs)(可定期更新)、GeoIP等。
- 创建:
防火墙 -> 别名,点击 **+**,选择类型并填入内容(如IP列表、URL)。 - 嵌套:可以在一个别名中引用其他别名。
8.3 端口转发
相比UPnP更安全可控。
- 普通转发:
防火墙 -> NAT -> 转发,点击 **+**。- 接口:
WAN - 协议:
TCP/UDP - 目标:
WAN地址 - 目标端口:外部端口
- 重定向目标IP:内网主机IP
- 重定向目标端口:内部端口
- 接口:
- DNS重定向示例:将内网DNS请求重定向到指定服务器。
- 接口:
LAN - 勾选
目标 / 反转 - 目标:
LAN网络 - 目标端口:
DNS - 重定向目标IP:
192.168.1.2 - 重定向目标端口:
DNS
- 接口:
8.4 高可用(HA)配置
前提:两台OPNsense,接口分配完全一致,并有一个专用HA接口用于心跳同步。
- 配置CARP虚拟IP:在主防火墙的
接口 -> 虚拟IP -> 设置中,为LAN(或WAN)添加CARP虚拟IP(如192.168.1.1/24),设置VHID和密码。 - 配置同步:
- 主防火墙:
系统 -> 高可用 -> 设置,启用同步,指定同步接口(HA口)、对端IP和密码,选择同步模块。 - 备防火墙:同样位置,启用同步并勾选
禁用抢占、断开拨号接口。
- 主防火墙:
- 同步配置:在主防火墙状态页点击上传图标进行初始同步。
- 检查:在
接口 -> 概况中,主防火墙的虚拟IP旁有绿色图标,备防火墙为灰色。
8.5 性能优化(可调参数)
进入 系统 -> 设置 -> 可调参数,可添加以下参数提升性能(部分):
1 | hw.ibrs_disable=1 # 禁用Spectre V2缓解,提升性能 |
注意:调整需谨慎,建议参考 FreeBSD网络性能调优指南。
8.6 网关组(故障转移/负载均衡)
- 配置网关:
系统 -> 网关 -> 配置,确保各WAN口网关监控状态为“正常”。 - 创建网关组:
系统 -> 网关 -> 组,点击 **+**。- 添加网关并设置优先级(故障转移),例如:WAN_GW为
层级1,WAN2_DHCP为层级2。 - 触发条件:
丢包。
- 添加网关并设置优先级(故障转移),例如:WAN_GW为
- 修改策略路由:在LAN的防火墙出站规则中,将
网关选项改为新建的网关组。
九、故障排除
9.1 CSRF check failure 错误
登录后出现此白色错误页,通常是因为浏览器缓存或会话问题。
- 解决方法:清除浏览器缓存和Cookie,使用无痕模式,或直接访问
https://192.168.1.1/(不带后续路径)。如仍不行,可尝试重启OPNsense的Web服务(非重启系统)。
9.2 网页反向代理设置
若通过Nginx等反向代理访问OPNsense管理界面,需在OPNsense中关闭某些检查:
- 进入 系统 -> 设置 -> 管理。
- 勾选:
禁用Web GUI重定向规则、禁用DNS重绑定检查、禁用HTTP_REFERER强制检查。
9.3 开启SSH访问
- 进入 系统 -> 设置 -> 管理。
- 勾选:
启用安全Shell、允许root用户登录、允许密码登录。 - 监听接口:可选择
全部或指定接口。
版权声明:本文部分内容参考并整合了多位社区作者的经验,特别感谢 OPNsense中文手册 和博主“鐵血男兒”的分享。本文旨在为初学者提供一个清晰的指引,更多深入细节请查阅官方文档和社区论坛。