OPNsense安装与使用
本文参考OPNsense中文手册、OPNsense 防火墙系列一:安装、基础配置(PPPoE、IPv6、更换软件源)
(都是优秀文章和作者,有问题推荐看看他们的文章)
简介
为了管控IPV6和为了一定程度上的安全性,我从 爱快 转到了 OPNsense。
以下来自OPNsense简介
OPNsense®是一个 开源 ,易用 且 易于构建 的基于FreeBSD的 防火墙 和 路由平台。
OPNsense包括昂贵的商业防火墙中提供的大多数功能。它带来了丰富的商业产品功能集,具有开放和可验证来源的优势。
使命宣言
为用户,开发人员和企业提供友好,稳定和透明的环境。使OPNsense成为使用最广泛的开源安全平台。该项目的名称源于开放和意义,代表:“开放(源)是有道理的。”
功能集
OPNsense的功能集包括高端功能,如 正向缓存代理 ,流量整形 ,入侵检测 和简单的 OpenVPN客户端 设置。最新版本基于最新的 FreeBSD,并使用基于 Phalcon 的新开发的 MVC框架 。OPNsense 对安全性的关注带来了独特的功能,例如使用 LibreSSL 而不是 OpenSSL(在GUI中可选)和基于 HardenedBSD 的自定义版本。
强大而可靠的更新机制使 OPNsense 能够及时提供重要的安全更新。
OPNsense核心功能
- 流量整形
- 强制门户网站
- 凭证支持
- 模板管理
- 多区域支持
- 正向缓存代理
- 支持透明模式
- 黑名单支持
- 虚拟专用网
- 站点到站点
- Road warrior
- IPsec
- OpenVPN
- 高可用性和硬件故障转移
- 包括配置同步和同步状态表
- 可以与流量整形相结合
- 入侵检测和内联预防
- 对Emerging Treats规则的内置支持
- 使用规则类别进行简单设置
- 定期自动更新
- 内置报告和监控工具
- 系统健康、RRD图表
- 数据包捕获
- 支持插件
- DNS服务器和DNS转发器
- DHCP服务器和中继
- 动态DNS
- 备份和还原
- 加密云备份到Google云端硬盘
- 配置的历史记录
- 本地驱动器备份和还原
- 状态检查防火墙
- 对状态表进行精细控制
- 802.1Q VLAN支持
- 更多..
注意
- OPNsense 是一个防火墙,所以并不支持 NAT1(也就是 全锥型NAT,当然曲线救国方法也有 1:1 NAT ),所以最高能支持到 端口限制型NAT,但是 UPNP 能缓解这一问题(不推荐,更推荐 端口转发 )
- OPNsense 入侵检测功能在 变动IP 网口上使用会导致 CPU占用 过高(说的就是 PPPOE拨号)
- 流量分析 、 流量图标 、 Unbound DNS 等 报告功能 在 突然断电 等情况下会导致数据损坏,进而导致 CPU占用 过高
- 请在 前期 做好 网络规划 !!! OPNsense 随意 添加网卡 会导致 标识符 和 设备 变动,其次 高可用 更要求 标识符 和 设备 一一对应,请务必做好 网络规划 !!!
- 目前 高可用 功能不能在 同一台 虚拟机平台(指一台机器安装 ESXI,并在 这台机器 的 ESXI虚拟平台 虚拟两个 OPNsense)(这一点存疑)
- 高可用 功能有 DUP! 问题在 ESXI 上, 所以 ESXI 用户请注意,在端口组开启 混杂模式 时会出现 DUP! 问题,但关闭后会导致 OpenWrt 无法访问 OPNsense,同时 Docker 的 MACVlan 也将无法使用。所以请尽量选择 PVE,而且 OPNsense 在 PVE 上的性能更好。
- OPNsesne 的 VLAN配置 貌似无法使用,物理机用户请考虑一下
- 添加新网卡 可能会导致 FREEBSD 的网卡顺序更改,请不要慌张,到终端中设置一下(貌似仅限在 ESXI)
- 请注意主机带有 VPRO 功能的,并且使用 intel 2.5G 网卡 (淦,讲了句废话),由于INTEL网卡BUG,导致 OPNsense 无法发出 DHCP Offer,解决方法是不使用 intel 2.5G 网卡
- 推荐虚拟平台使用 PVE !!! 推荐虚拟平台使用 PVE !!! 推荐虚拟平台使用 PVE !!!(重要的事情说三遍,顺便提示一点: ESXI 无法准确计算 OPNsense 内存占用)
先前准备
- 两台电脑(双网口以上)
- 大于20G存储(推荐50G)
- RJ45网线
- 显示器和键盘
硬件要求
我是用的 i5-1135G7 、 64G DDR4内存 、 SN550 Nvme 1T 配置 ,系统是 ESXI8 ,网卡全虚拟,并没有做 直通 ,并且对 OPNsense 进行过 优化(目前已经换成 PVE)
OPNsense轻负载 的 各项占用 :
设备 | 参数 |
---|---|
处理器频率占用(ESXI) | 761MHz |
内存(从 ESXI里 看占满,OPNsense 里为 7%) | 16G |
存储大小 | 120G |
接近满速 的 OPNsense CPU占用 :
使用 QB BT 下载(速度为 92MB/S)作为负载
设备 | 参数 |
---|---|
处理器频率占用(ESXI) | 4.6G |
内存(从 ESXI里 看占满) | 16G |
存储大小 | 120G |
支持的硬件架构
OPNsense® 适用于 x86-32(i386) 和 x86-64(amd64) 处理器架构。OPNsense 可以在 SD存储卡 、 固态硬盘(SSD) 或 硬盘驱动器(HDD) 上进行完整安装。
虽然支持的设备范围从嵌入式系统到机架式服务器,但如果硬件能够运行64位操作系统,我们建议使用 64位版本 的 OPNsense 。可以在 64位(x86-64,amd64) PC硬件上安装和运行 32位(x86-32,i386) 版本的OPNsense®,但我们不建议这样做,特别是不适用于全新的部署安装。
硬件要求
最低要求:只需要运行不需要磁盘写入的OPNsense 标准功能,或少量写入磁盘的一些功能, 例如缓存代理 (缓存) 或 入侵检测 和 预防 (警报数据库)。
处理器 | 500MHz单核cpu |
---|---|
内存 | 512 MB |
安装方法 | 串行控制台或视频(vga) |
安装目标 | SD或CF卡至少4GB,使用nano镜像进行安装。 |
合理要求:运行所有OPNsense标准功能,但没有大量用户或高负载的情况。
处理器 | 1 GHz双核CPU |
---|---|
内存 | 1 GB |
安装方法 | 串行控制台或视频(vga) |
安装目标 | 40 GB SSD,安装程序运行至少需要1GB内存。 |
推荐要求:能够流畅运行所有OPNsense标准功能,适合大多数的使用情况。
处理器 | 1.5 GHz多核CPU |
---|---|
内存 | 4GB |
安装方法 | 串行控制台或视频(vga) |
安装目标 | 120 GB SSD |
OPNsense所需的硬件将由预期的最小吞吐量和功能来决定。
功能影响
虽然大多数功能不会影响硬件性能,但有一些功能会产生巨大影响。比如:
Squid
用于 Web内容控制的高速缓存Web代理。这些软件包强烈依赖于CPU负载和磁盘缓存写入。
强制门户
具有数百个同时服务的强制门户用户的设置将需要在下面显示的所有硬件规范中具有更多CPU的效能。
状态表
每个状态表条目需要大约 1KB(千字节) 的 RAM。填充了1000个条目 的 平均状态表 将占用大约 10MB(兆字节) 的 RAM。具有数十万个连接的OPNsense使用设置将相应地需要更多的内存。
吞吐量影响
OPNsense设置 的主要硬件因素是 CPU、RAM ,大容量存储(光盘),网络接口的数量和质量。
吞吐量(MBPS) | 硬件要求 | 功能 | 用户/网络 |
---|---|---|---|
1-10 | 基本要求 | 很少 | 很少(1-10) |
11-150 | 最低要求 | 一般 | 一般(10-30) |
151-350 | 合理要求 | 所有 | 大量(30-50) |
350-750 + | 推荐要求 | 所有 | 大量+(50-150 +) |
Mbps(Mbit / s或Mb / s) |
网卡
正如FreeBSD硬件列表和建议所说,用于LAN 连接的使用英特尔®网卡(NIC)更可靠、快速且不容易出错。英特尔芯片组NIC可以在降低CPU负载的情况下提供更高的吞吐量。
支持的硬件
FreeBSD 11.1-RELEASE 是 OPNsense 的基础(现在应该是 FreeBSD 13)。所有 FreeBSD驱动程序 都包含在 OPNsense内核中,硬件兼容性相同。
如需进一步的帮助和支持,请参阅
安装
镜像下载
可选项 | 选择 |
---|---|
architecture | amd64 |
Select the image type | dvd |
Mirror Location | Aivian(或者Peking University open source software mirror镜像源(北京大学镜像站)) |
安装OPNsense
- 系统选择 FreeBSD 13
- CPU 尽量分配较多的核心,如果是 1G 外网,可以限制 CPU 份额
5000MHZ
- 内存也是尽量往大了选( 4G 朝上),如果开启 入侵检测 ,规则集多了,很吃内存和硬盘
- 硬盘大小选择
50G
如果使用 ESXI或者 PVE ,硬盘最好使用 厚置备,置零
启动虚拟机或者物理机,等待至让 输入账号 画面(显示login:),中途请勿随意按键盘,否则就会进入 配置VLAN 、 配置LAGG 画面。
输入账号:installer
密码:opnsense
,进入选择 键位图(Keymap Selection)
选择合适的 键位(默认回车就行)
- 选择 Install (UFS)
- FreeBSD 硬盘一般是
da
开头,如果是单硬盘,选择da0
就行 - 它会问你是否新建
8G
交换空间,看你需求 - 它会问你是否安装在
da0
硬盘上 - 等待系统安装完成
- 更改
ROOT
密码 - 重启 拔出安装介质 进入 OPNsense
基础使用
基础设置
输入 https://192.168.1.1
进入 OPNsense后台设置
请自行设置电脑或者手机与
OPNsense
同网段192.168.1.0/24
- 默认会跳转到向导界面,点击 下一步(Next) 进行设置
可选项 | 选择 |
---|---|
语言 | 中文 |
首选DNS服务器 | 223.5.5.5 |
辅助DNS服务器 | 119.29.29.29 |
覆盖DNS | 不勾选 |
启用解析器 | 勾选 |
启用DNSSEC支持 | 推荐勾选 |
强化DNSSEC数据 | 推荐勾选 |
启用DNSSEC支持 可以有效防止 DNS劫持 ,原理是验证查询结果的 数字签名
强化DNSSEC数据 在遇到非权威结果时会直接丢弃,自建DNS 时 请勿开启
- 时区设置为
Asia/Shanghai
,下一步 - 设置
WAN
口 - 设置
LAN
口 - 确定 ROOT 密码,为空则不修改
- 重载系统
更换镜像源
默认的镜像速度很慢,所以我们需要更换镜像源
- 点击 系统: 固件 ,然后点击 设置 ,在 镜像 选项选择
Aivian (HTTPS,Shangxing,CN)
,然后保存
如果要 自定义的镜像源 则选择
(custom)
,填入http://mirrors.pku.edu.cn/opnsense/
(北京大学镜像源,请勿自行改成 https) 或者http://mirrors.163.com/opnsense/
(网易镜像源,请勿自行改成 https),然后保存
- 点击 状态 ,点击 检查升级
接口设置
接口分配
点击 接口: 分配 ,在这可以看到 接口描述 、 标识符 和 接口设备(接口在系统名称)
如果没有 WAN口 ,我们可以在下面 Assign a new interface ,选择 设备 vmx*
(一般是 vmx
开头), 然后在 描述 里输入 名称
(全英文和数字,不要有特殊符号,可以全大写)
WAN口设置
- 点击 接口: [WAN]
- 勾选
阻止私有网络
(私有网络IP,更多详情点击阻止私有网络
旁的感叹号) 和拦截bogon网络
(保留IP,更多详情点击拦截bogon网络
旁的感叹号) - 如果是 PPPOE拨号 上网,则在 IPv4配置类型 选择
PPPoE
如果是 DHCP 上网,则在 IPv4配置类型 选择DHCP
如果是 静态V4 上网,则在 IPv4配置类型 选择静态IPV4
- 如果是 PPPOE拨号 上网,下滑到 PPPoE配置 ,在 用户名 密码 填入对应参数,更多高级设置,请进入 接口: 点对点: 设备,保存
如果是 DHCP 上网,下滑到 DHCP客户端配置 查看是否有需要设置的,然后保存
如果是 静态V4 上网,下滑到 静态IPv4配置 ,填入IPv4地址和掩码
,点击 IPv4上游网关 那一行的 + 号,勾选默认网关
,填入IPv4网关
,网关名称 根据需求修改,保存 - 有关 IPV6设置 ,请看本文这里
LAN口设置
- 点击 接口: [LAN]
- 取消勾选
阻止私有网络
(私有网络IP,更多详情点击阻止私有网络
旁的感叹号) 和拦截bogon网络
(保留IP,更多详情点击拦截bogon网络
旁的感叹号) - IPv4配置类型 选择
静态IPV4
- 下滑到 静态IPv4配置 , 填入
IPv4地址
(在10.0.0.0/8
、172.16.0.0/12
、192.168.0.0/16
中任选) ,并选择对应子网掩码
(影响 DHCPV4 分配),保存
终端中配置网卡
有时一不小心删除了管理网口,这个时候可以通过终端配置网卡
- 在终端中输入 账号密码 ,进入 管理选项
- 输入
数字1
,进入 接口分配 - 先回问你是否需要配置 LAGGs VLANs ,回车即可跳过
- 接下来会问 WAN 分配的网卡,输入 网卡名称
- 然后问你 LAN 分配的网卡,输入 网卡名称(也可回车跳过)
- 后面就是问你 OPTN(N代表数字) 分配的网卡,输入 网卡名称(不填则代表配置结束)
- 最后问你 是否保存 ,输入
y
并回车确定 - 输入
数字2
,进入 接口设置 - 输入配置接口的
数字
- 先问你是否要 配置DHCP
- 后问你这个接口 地址,请填入
IPV4地址
- 接下来问你是否配置 IPV6地址跟踪WAN
- 然后问你是否将 HTTPS改为HTTP
- 后问你是否创建新的 HTTPS证书
- 最后问你是否 重启组件
- 测试一下是否能够访问,能访问为配置完成
防火墙规则配置
OPNsense 作为开源防火墙,怎么能少了防火墙配置呢
创建简单的允许互访的规则
一般在 添加 、 分配 、 配置 接口后,需要在防火墙规则上配置允许访问的规则,否则无法与防火墙通讯(自动创建规则 允许SSH和WEB 访问)
- 点击 防火墙: 规则: LAN (点击 对应接口 选项卡,这里以 LAN 为例子)
- 点击 橙色的加号 添加规则,这里创建最简单的互访规则(允许 LAN网络 访问 防火墙及其它网络 )
- 参考如下设置:
选项 | 参数 |
---|---|
操作 | 通过 |
禁用 | 不勾选 |
快速 | 勾选 |
接口 | LAN |
方向 | in |
TCP/IP版本 | IPV4(根据情况自行选择) |
协议 | any |
源 / 反转 | 不勾选 |
源 | LAN网络 |
源(高级) | 不更改 |
目标 / 反转 | 不勾选 |
目标 | any |
目标端口范围 | any |
日志 | 不勾选 |
类别 | (根据自己需要填写) |
描述 | Default allow LAN to any rule(根据情况填写) |
不同步XMLRPC | 不勾选 |
计划 | none |
网关 | 默认 |
高级功能 | 不修改 |
- 点击保存
- 确认无误后,应用更改
创建简单的阻断规则
有时候需要禁止访问一些IP,设置一些阻止规则丢弃这些包
- 点击 防火墙: 规则: LAN (点击 对应接口 选项卡,这里以 LAN 为例子,禁止 LAN设备 访问 阿里的DNS )
- 点击 橙色的加号 添加规则,这里创建最简单的阻止规则(禁止 LAN设备 访问 阿里的DNS )
- 参考如下设置:
选项 | 参数 |
---|---|
操作 | 阻止(或者拒绝) |
禁用 | 不勾选 |
快速 | 勾选 |
接口 | LAN |
方向 | in |
TCP/IP版本 | IPV4(根据情况自行选择) |
协议 | any |
源 / 反转 | 不勾选 |
源 | LAN网络 |
源(高级) | 不更改 |
目标 / 反转 | 不勾选 |
目标 | 223.5.5.5(鼠标网上划,找到 单个主机或网络 ,即可填写IP,当然也可以填写别名) |
目标端口范围 | 53(也可以填 any ) |
日志 | 不勾选 |
类别 | (根据自己需要填写) |
描述 | 禁止访问阿里DNS(根据情况填写) |
不同步XMLRPC | 不勾选 |
计划 | none |
网关 | 默认 |
高级功能 | 不修改 |
选择
阻止
防火墙会直接丢弃包,而拒绝
防火墙会返回一个拒绝的包
- 点击保存
- 确认无误后,应用更改
网页设置
反代理设置
主要针对的是通过 nginx 对 OPNsense 进行反代理,需要在 OPNsense 修改选项
点击 系统: 设置: 管理 ,勾选 禁用Web GUI重定向规则
、 禁用DNS重绑定检查
、 禁用HTTP_REFERER强制检查
,然后保存
如果遇到 CSRF check failure 请看本文这里
开启安全Shell
点击 系统: 设置: 管理 ,勾选 启用安全Shell
、 允许root用户登录
、 允许密码登录
,并 监听接口 全部接口,然后保存
系统DNS设置
设置网关DNS
这个一般用于系统的DNS(具体作用不太清楚,但要设置)
- 打开 系统: 设置: 常规 , 下滑到 网络 ,找到 DNS服务器 选项并填入
DNS
(阿里:223.5.5.5
腾讯:119.29.29.29
更多请百度) - 文本框 后面选择你的 WAN网关 ,保存
设置参考:
DNS服务器 | 应用网关 |
---|---|
119.29.29.29 | WAN_DHCP - wan-100.65.0…… |
2400:3200::1 | WAN_DHCP6 - wan -fe80::3…… |
设置Unbound DNS
这个主要是给局域网用的,支持 dot 加密查询,功能比较多
- 打开 服务: Unbound DNS: 常规 ,点击
启用Unbound
和启用DNSSEC支持
,保存 - 打开 服务: Unbound DNS: 查询转发 ,取消勾选
使用系统DNS服务器
,在下面 添加一条 ,并填入DNS
(阿里:223.5.5.5
腾讯:119.29.29.29
更多请百度),然后保存 应用 - DOT查询设置(没需求这条可以跳过),打开 服务: Unbound DNS: DoT ,取消勾选
使用系统DNS服务器
,在下面 添加一条 ,勾选启用
,服务器IP 填入DNS服务商IP
(官网一般会写), 服务器端口 填入853
(dot 默认端口), 验证CN 填入 DNS服务商域名` (官网一般会写),然后保存 应用
DOT 设置参考:
选项 | 选择 |
---|---|
编辑服务器 | |
启用 | 勾选 |
域 | |
服务器IP | 223.5.5.5 |
服务器端口 | 853 |
验证CN | dns.alidns.com |
DHCPv4设置
OPNsense 的 DHCPv4
分配IP只能在网段内
- 打开 服务: DHCPv4: [LAN]
- 参考如下,请自行设置,网关 和 DNS 可以不填,默认为路由器本机
选项 | 选择 |
---|---|
启用 | 勾选 |
范围 从 | 192.168.1.10 |
范围 到 | 192.168.1.245 |
端口限制型 NAT
主要是设置 NAT静态端口 ,所有从同一个内网的(IP,端口)发送出来的请求都会被映射到通过一个外网(IP,端口)
更多介绍查看NAT的四种分类:全锥形NAT,地址受限锥形NAT,端口受限锥形NAT,对称NAT
OPNsense 默认只支持到 对称型NAT ,在打洞等方面极其不友好
我们可以通过 防火墙: NAT: 出站 的 混合生成出站NAT规则
添加 手动规则
实现 端口限制型 NAT
设置参考本文这里 第四点 和 第五点,必须打开 IPV4 的 静态端口
选项(这个是重点),如果没有 NATv6需求 无需添加 IPV6出站规则
IPV4设置如下:
选项 | 选择 |
---|---|
禁用 | 不勾选 |
禁用NAT | 不勾选 |
接口 | WAN(一般选择出口) |
TCP/IP | IPV4 |
协议 | any |
源反转 | 不勾选 |
源地址 | LAN 网络 |
源端口 | any |
目标反转 | 不勾选 |
目标地址 | any |
转换/目标 | 接口地址 |
日志 | 不勾选 |
转换/端口 | |
静态端口 | 勾选 |
IPV6设置
注意:
如果被运营商分配 IPV6地址64掩码,并没有 IPV6-PD(也就是前缀),是不能给 下联设备 分配 公网IPV6 的,只能使用 NATv6
前缀请求必须和下发前缀的掩码一样,不然不能下发 IPV6
如果使用IPV6检测并提示IPV6大包错误,请调整 接口: [WAN] 的 通用配置 里 MSS
,通常为 1430
(MTU(计算的PPP MTU: 1492) - 60),根据情况可 适当减小 ,别小于 1260
就行(比这小就不能跑 ipv6 了)
如果不知道该用什么数值的话,,可以试试1420
、 1400
具体原因可以看看这篇文章,简单来说 手机等终端设备 一些时候在发送数据包时会携带 不要分包标记 DF ( Don't Fragment ) ,但是当数据包经过一些 中间设备 超出 MTU限制 会 直接丢弃 而不是 发送需要分段 ICMP Fragmentation Needed,这就造成了 TCP超时 问题。
Win:
ping -l 1500 baidu.com (减小 -s 后面数值,直到ping通为止,-s 后面数值则为 MSS 大小)
Linux:
ping -s 1500 baidu.com (减小 -s 后面数值,直到ping通为止,-s 后面数值则为 MSS 大小)
公网V6
- 点击 接口: [WAN],下滑到 通用配置 里找到 IPV6配置类型 选择为
DHCPv6
。 - 下滑到 DHCPv6客户端配置,打开
仅请求IPv6前缀
、发送IPv6前缀提示
、使用IPv4连接
,前缀委派大小 设置为60
(要与下发前缀匹配,不然会出BUG),保存
可以在 接口: 概况 里点击 WAN口 旁边 搜索图标 查看 IPv6前缀 ,如下
项目 | 参数 |
---|---|
路由 | default |
100.65.0.1 | |
223.5.5.5 | |
223.6.6.6 | |
default | |
2400:3200::1 | |
2400:3200:baba::1 | |
2409:80:52:3**3::/64 | |
fe80::%pppoe0/64 |
- 点击 接口: [LAN] ,通用配置 里 IPV6配置类型 设置为
跟踪接口
,下滑到 跟踪IPv6接口 打开允许手动调整DHCPv6和路由器通告
- 点击 防火墙: 设置: 高级 ,在 IPv6选项 打开
允许IPv6
,然后保存 - 点击 服务: DHCPv6: [LAN] (像安卓就不支持 DHCPv6 )或者 服务: 路由器通告: [LAN] (一般使用 路由器通告)
DHCPv6
设置 范围 并设置 DNS服务器,点击在LAN接口上启用DHCPv6服务
,然后 保存
参考如下
项目 | 参数 |
---|---|
启用 | 勾选 |
子网 | (接口设置,无需填写) |
子网掩码 | (接口设置,无需填写) |
有效范围 | (接口设置,无需填写) |
范围 从 | ::1 |
范围 到 | ::ffff |
可用的前缀委派大小 | (接口设置,无需填写) |
前缀委派范围 从 | |
前缀委派范围 到 | |
前缀委派范围 前缀委派大小 | |
DNS服务器 | 2400:3200::1 |
路由器通告
打开 通告默认网关 并设置 DNS服务器 ,路由器通告 选项为 Assisted
,保存
如下参考
项目 | 参数 |
---|---|
路由器通告 | Assisted |
路由器优先级 | 正常 |
源地址 | 自动 |
通告默认网关 | 勾选 |
广播路由 前缀 | |
广播路由 长度 | |
DNS选项 | (全部不勾选) |
DNS服务器 | 2400:3200::1 |
- 现在就能看在手机或者电脑看到
IPV6地址
,使用IPV6检测
NATv6
- 点击 接口: [WAN],下滑到 通用配置 里找到 IPV6配置类型 选择为
DHCPv6
。 - 点击 接口: [LAN],通用配置 里 IPV6配置类型 设置为
静态IPV6
,下滑到 静态IPv6配置 自行设置IPv6地址
(在fd00::/8
里挑选一个),推荐 掩码 设置为64
- 点击 防火墙: 设置: 高级 ,在 IPv6选项 打开
允许IPv6
,然后保存 - 点击 防火墙: NAT: 出站 ,在 模式 里选择
混合生成出站NAT规则
,然后保存 - 在 防火墙: NAT: 出站 的 手动规则 里添加
两条规则
(一条是 IPV4 另一条 IPV6),有关静态端口
选项作用描述 请参考本文这里
如下设置:
完成样子
接口 | 源 | 源端口 | 目标 | 目标端口 | NAT地址 | NAT端口 | 静态端口 | 描述 |
---|---|---|---|---|---|---|---|---|
WAN | LAN网络 | * | * | * | 接口地址 | * | 是 | IPV4 NAT出站 |
WAN | LAN网络 | * | * | * | 接口地址 | * | 是 | IPV6 NAT出站 |
IPV4设置,IPV6类似( TCP/IP版本 选项选择 IPV6
即可):
选项 | 选择 |
---|---|
禁用 | 不勾选 |
禁用NAT | 不勾选 |
接口 | WAN(一般选择出口) |
TCP/IP | IPV6 |
协议 | any |
源反转 | 不勾选 |
源地址 | LAN 网络 |
源端口 | any |
目标反转 | 不勾选 |
目标地址 | any |
转换/目标 | 接口地址 |
日志 | 不勾选 |
转换/端口 | |
静态端口 | 勾选 |
- 点击 服务: DHCPv6: [LAN] (像安卓就不支持 DHCPv6 )或者 服务: 路由器通告: [LAN] (一般使用 路由器通告)
DHCPv6
设置 范围 并设置 DNS服务器,点击在LAN接口上启用DHCPv6服务
,然后 保存
如下参考
项目 | 参数 |
---|---|
启用 | 勾选 |
子网 | (接口设置,无需填写) |
子网掩码 | (接口设置,无需填写) |
有效范围 | (接口设置,无需填写) |
范围 从 | ::1 |
范围 到 | ::ffff |
可用的前缀委派大小 | (接口设置,无需填写) |
前缀委派范围 从 | |
前缀委派范围 到 | |
前缀委派范围 前缀委派大小 | |
DNS服务器 | 2400:3200::1 |
路由器通告
打开 通告默认网关 并设置 DNS服务器 ,路由器通告 选项为 Assisted
,保存
如下参考
项目 | 参数 |
---|---|
路由器通告 | Assisted |
路由器优先级 | 正常 |
源地址 | 自动 |
通告默认网关 | 勾选 |
广播路由 前缀 | |
广播路由 长度 | |
DNS选项 | (全部不勾选) |
DNS服务器 | 2400:3200::1 |
- 现在就能看在手机或者电脑看到
IPV6
地址,使用IPV6检测
NPTv6公网V6(实验性)
这种实现公网v6方式,兼具 了内网 可管理性,不因为 前缀变化 导致防火墙 规则失效 ,同时保证了 地址独立性 (类似 80端口 可以 共用),更多介绍可以参考IPv6至IPv6网络前缀翻译、适用于 IPv6 的无状态源网络前缀转换
这种实现方式同样需要 ipv6前缀
- 点击 接口: [WAN],下滑到 通用配置 里找到 IPV6配置类型 选择为
DHCPv6
。 - 点击 接口: [LAN],通用配置 里 IPV6配置类型 设置为
静态IPV6
,下滑到 静态IPv6配置 自行设置IPv6地址
(在fd00::/8
里挑选一个),推荐 掩码 设置为64
- 点击 防火墙: 设置: 高级 ,在 IPv6选项 打开
允许IPv6
,然后保存 - 点击 防火墙: NAT: NPTv6 ,点击 + 号,在 内部IPv6前缀 填入 NPTv6公网V6 的 第二步 的
IPv6地址
的前缀(如果填入的是fd88::1/64
,那么 前缀 则是fd88::/64
,那就填入fd88::
,后面选择64
),然后保存即可 - 点击 服务: DHCPv6: [LAN] (像安卓就不支持 DHCPv6 )或者 服务: 路由器通告: [LAN] (一般使用 路由器通告)
设置 范围 并设置 DNS服务器,点击在LAN接口上启用DHCPv6服务
,然后 保存
如下参考
项目 | 参数 |
---|---|
启用 | 勾选 |
子网 | (接口设置,无需填写) |
子网掩码 | (接口设置,无需填写) |
有效范围 | (接口设置,无需填写) |
范围 从 | ::1 |
范围 到 | ::ffff |
可用的前缀委派大小 | (接口设置,无需填写) |
前缀委派范围 从 | |
前缀委派范围 到 | |
前缀委派范围 前缀委派大小 | |
DNS服务器 | 2400:3200::1 |
路由器通告
打开 通告默认网关 并设置 DNS服务器 ,路由器通告 选项为 Assisted
,保存
如下参考
项目 | 参数 |
---|---|
路由器通告 | Assisted |
路由器优先级 | 正常 |
源地址 | 自动 |
通告默认网关 | 勾选 |
广播路由 前缀 | |
广播路由 长度 | |
DNS选项 | (全部不勾选) |
DNS服务器 | 2400:3200::1 |
- 现在就能看在手机或者电脑看到
IPV6
地址,使用IPV6检测
网络时间设置(NTP对时)
点击 服务: 网络时间: 常规 ,默认是(忘了( • ̀ω•́ )✧)
推荐几个NTP服务器
-
腾讯云NTP授时服务器地址
ntp.tencent.com
ntp1.tencent.com -
阿里NTP授时服务器地址
ntp.aliyun.com
-
教育网内的授时服务器
edu.ntp.org.cn
2001:da8:9000::130
2001:250:380A:5::10
202.118.1.130
202.118.1.81 -
中国计量科学研究院 NIM 授时服务
ntp1.nim.ac.cn
ntp2.nim.ac.cn
111.203.6.13 -
教育网(高校自建)
ntp.sjtu.edu.cn
ntp.neu.edu.cn
ntp.bupt.edu.cn
ntp.shu.edu.cn
ntp.tuna.tsinghua.edu.cn # 清华大学(ipv4/ipv6) -
国家授时中心 NTP 服务器
ntp.ntsc.ac.cn
114.118.7.161
114.118.7.163 -
中国 NTP 快速授时服务
cn.ntp.org.cn
2001:da8:9000::81
223.113.97.98
114.67.103.73
119.29.26.206
120.25.115.20 -
香港地区
hk.ntp.org.cn
stdtime.gov.hk -
台湾地区
tw.ntp.org.cn
-
日本
jp.ntp.org.cn
-
韩国
kr.ntp.org.cn
-
新加坡
sgp.ntp.org.cn
-
美国
us.ntp.org.cn
-
德国
de.ntp.org.cn
-
印度尼西亚
ina.ntp.org.cn
-
国际 NTP 快速授时服务
cn.pool.ntp.org
-
国外授时服务器
time1.apple.com
time2.apple.com
time3.apple.com
time1.google.com
time2.google.com
time3.google.com
time.cloudflare.com
time.windows.com
time.nist.gov # 美国标准技术研究院 NTP 服务器
time-nw.nist.gov
time-a.nist.gov
time-b.nist.gov -
国际 NTP 快速授时服务
pool.ntp.org
0.pool.ntp.org
1.pool.ntp.org
2.pool.ntp.org
3.pool.ntp.org
asia.pool.ntp.org
流控
OPNsense 是在网络三层进行管控,相比一些带有流量识别路由器系统,OPNsense 的 流量整形 更加有效
本文主要介绍 流量优先级 ,其他可以参考博主 鐵血男兒 的 OPNsense设置带宽整形教程
创建流量优先级流控
- 点击 防火墙: 流控: 管道
- 创建 上传管道 、 下载管道
上传管道 :
- 带宽 输入
160
(根据你自己宽带来) - 单位
Mbit/s
(根据你自己需求来) - 描述
上传管道
下载管道 :
- 带宽 输入
1000
(根据你自己宽带来) - 单位 选择
Mbit/s
(根据你自己需求来) - 描述
下载管道
- 创建 HTTP上传队列 、 HTTP下载队列 、 其他流量队列上传 、 其他流量队列下载
权重 数值越低的,拥挤情况下获得带宽就越多,但不是优先事项
HTTP上传队列:
- 管道 选择
上传管道
- 权重 设置为
50
- 描述
HTTP上传队列
HTTP下载队列:
- 管道 选择
下载管道
- 权重 设置为
50
- 描述
HTTP下载队列
其他流量队列上传:
- 管道 选择
上传管道
- 权重 设置为
80
- 描述
其他流量队列上传
其他流量队列下载:
- 管道 选择
下载管道
- 权重 设置为
80
- 描述
其他流量队列下载
- 创建 HTTP上传规则 、 HTTP下载规则 、 HTTPS上传规则 、 HTTPS下载规则 、 其他流量规则上传 、 其他流量规则下载
HTTP上传规则:
- 勾选
启用
- 接口 选择
WAN
- 协议 选择
IP
- 源 源端口 目标 均设置为
any
- 目标端口
http
或者80
- 目标管道 选择
HTTP上传队列
- 描述
HTTP上传规则
HTTP下载规则:
- 勾选
启用
- 接口 选择
WAN
- 协议 选择
IP
- 源 目标 目标端口 均设置为
any
- 源端口
http
或者80
(注意!!! 是源端口) - 目标管道 选择
HTTP下载队列
- 描述
HTTP下载规则
HTTPS上传规则:
- 勾选
启用
- 接口 选择
WAN
- 协议 选择
IP
- 源 源端口 目标 均设置为
any
- 目标端口
https
或者443
- 目标管道 选择
HTTP上传队列
- 描述
HTTPS上传规则
HTTPS下载规则:
- 勾选
启用
- 接口 选择
WAN
- 协议 选择
IP
- 源 目标 目标端口 均设置为
any
- 源端口
https
或者443
(注意!!! 是源端口) - 目标管道 选择
HTTP下载队列
- 描述
HTTPS下载规则
其他流量规则上传:
- 勾选
启用
- 接口 选择
WAN
- 协议 选择
IP
- 源 源端口 目标 目标端口 均设置为
any
- 目标管道 选择
其他流量队列上传
- 描述
其他流量规则上传
其他流量规则下载:
- 勾选
启用
- 接口 选择
WAN
- 协议 选择
IP
- 源 源端口 目标 目标端口 均设置为
any
- 目标管道 选择
其他流量队列下载
- 描述
其他流量规则下载
- 点击应用保存
- 点击 防火墙: 流控: 状态 查看队列是否有字节。
进阶使用
别名
OPNsense 的 别名 是个非常强大的功能,在我们遇到遇到一堆主机需要使用相同的隔离规则的时候,不肯能一个一个添加,这太麻烦了,这个时候 别名 就起到了大作用
别名类型
首先我们先看看 别名类型 有哪些,有什么作用(以下来自OPNsense防火墙别名的使用)
主机
- 主机别名 类型允许输入
IP 地址
、本地主机名
或完全限定域名 (FQDN)
。如果需要经常在规则中引用 IP 地址,则可以将其设为 主机别名 并在 规则 中使用该别名。由于 防火墙规则 仅允许IP
或网络地址
,因此必须使用 别名 才能在规则中使用主机名
或FQDN
。 - 主机别名 还允许使用
!
排除对象。例如,如果输入!192.168.1.10
,则表示排除192.168.1.10
。排除选项 只对IP 地址
有效。
主机别名 示例:
- IP 地址 :
192.168.1.10
或!192.168.1.10
(也允许 IPv6 地址) - 本地主机名(不带域名) :
myserver
或!myserver
- FQDN :
pfchina.org
或!pfchina.org
- 可以在别名中输入以 逗号分隔 的 IP 地址 、 主机名 和 FQDN 的任意组合的多个值,例如:
192.168.1.10
,192.168.1.11
,myserver1
,pfchina.org
网络
- 网络别名 允许以
CIDR 格式
输入网络的 IP 地址范围。CIDR 表示法 是通过使用设置为1
的位数来定义子网掩码的方法。其余设置为0
。在192.168.1.0/24
的示例中,/24
是 CIDR 表示法 网络地址的 一部分,相当于 子网掩码 255.255.255.0。允许排除网络别名,如 主机别名。
网络别名 示例:
192.168.1.0/24
或!192.168.1.0/24
(也允许 IPv6 地址)- 可以输入 多个网络:
192.168.1.0/24
,192.168.2.0/24
端口
- 端口别名 允许指定 端口号。可以输入
0
到65,535
之间的数字。要指定一系列 连续端口,请在端口号之间使用 冒号 (:
)。
端口别名 示例:
- 端口 :
8080
- 端口范围 :
8000:8080
- 可以输入 多个端口,包括 端口范围:
22
,8000:8080
URL (IPs)
- 网址(IPs)别名 用于托管在网站上的 IP 地址列表。在 OPNsense 文档中没有提及 URL (IPs) 的 别名类型。将 URL (IPs) 与 URL Table (IPs) 进行比较时,主要区别在于 刷新频率,URL (IPs) 用于
IP 地址
的 静态列表。 - 网址(IPs)别名 可以使用
域名
、主机名
、IPV4地址
、IPV6地址
、IP 地址范围(CIDR 格式)
URL (IPs)别名 示例:
https://domainname.com/ip-list.txt
- 可以输入 多个 URL:
https://domainname.com/ip-list.txt
,https://domainname2.com/ip-list2.txt
URL Table (IPs)
- URL Table (IPs)别名 用于 IP 地址列表,如 URL (IPs)别名。大多数用户最喜欢使用这个 URL 别名类型 ,它可以 定期刷新,对于阻止列表很有用。URL Table (IPs)别名 可以 指定更新间隔。
- URL Table (IPs)别名 可以使用
域名
、主机名
、IPV4地址
、IPV6地址
、IP 地址范围(CIDR 格式)
URL Table (IPs)别名 示例:
https://domainname.com/ip-list.txt
- 可以输入 多个 URL:
https://domainname.com/ip-list.txt
,https://domainname2.com/ip-list2.txt
GeoIP
- 当需要阻止来自 其他国家/地区 的 IP/网络地址 时,可以使用 GeoIP别名。托管在云上的服务和通过 VPN、Tor 或 SSH 建立 隧道网络 连接,很容易绕过 GeoIP阻止。但是它仍然很有用,它可以 阻止 来自不熟练的攻击者 或来自其他国家的受感染机器的随机攻击。
- 要设置 GeoIP别名,必须注册 MaxMind 的 GeoIP 服务 以获取完全配置 GeoIP 别名 所需的 GeoIP 地址范围。
- 具体设置可以看这里MaxMind GeoIP’s Setup
网络组
- 网络组别名 可用于 对除 端口别名 和 外部(高级)别名 类型之外的 其他别名 类型进行分组。该别名类型仅允许对兼容的别名进行分组。使用 网络组别名 的主要好处是它可以防止对 不兼容 的别名进行分组。
网络组别名 示例:
hostalias1
,hostalias2
,urlalias
(从下拉列表中选择)
MAC地址
- MAC 地址别名 允许在 别名 中使用
MAC 地址
。MAC 地址别名 无法 杜绝恶意用户 使用 欺骗MAC地址,这是该别名使用存在的缺陷。 - MAC 地址别名 更新是需要时间的,如果客户端一直不使用
IP
进行访问,则不会记录 MAC 地址 所使用的IP
MAC 地址别名 示例:3f:cf:3f:1f:7f:bf
- 也可以输入多个 MAC 地址:
3f:cf:3f:1f:7f:bf
,3e:ce:3e:1e:7e:be
外部(高级)
- 当希望外部进程管理防火墙中别名的值时,可以使用 外部(高级)别名 类型。如果需要动态更改别名的值,这会非常方便。由于 OPNsense 具有 防火墙 API,可以更好的从外部进程更新/管理防火墙规则。(说得好,不会用 ̄ω ̄=)
别名嵌套
- 对于所有别名类型,可以在别名中 嵌套别名。如果希望将多个别名组合在一起,这会很有用。例如,如果有
server1
和server2
的别名,可以创建一个名为myservers
的第三个别名,其中包含server1
和server2
。这样做,可以在它们自己的特定防火墙规则中使用server1
和server2
别名,但随后有适用于两个服务器的更广泛的防火墙规则。
删除别名
- 要 删除嵌套 在另一个别名中和/或防火墙规则当前正在使用的别名,将收到错误消息。这样的设置可以防止违反任何防火墙规则。
创建别名
那么我们已经了解了 别名类型 就开始正式上手把
在上手之前提醒一下,别删内置的别名(反正你也删不了(~ ̄▽ ̄)~ )
- 点击 防火墙: 别名 ,点击下方的
+
号,创建别名 - 输入别名名称(名称必须以 字母 或 单个下划线 开头,少于 32个字符,并且仅由 字母数字字符 或 下划线 组成。可以使用此名称嵌套别名。)
- 选择类型(参考本文这里)
- 输入内容
- 输入描述(看你心情填与否)
- 保存
端口转发
相比 UPNP (通用随插即用) 端口转发手动控制转发安全性要好一点
注意: 组 在这一块不一定好用
普通转发
- 点击 防火墙: NAT: 转发 ,点击上方的
+
号,创建规则 - 接口 通常选择
WAN
- TCP/IP版本 看你需求
- 协议 一般选择
TCP/UDP
- 目标 一般为
WAN网络
或者WAN地址
- 目标端口范围 如果只转发一个端口,则填一样,如果转发一段端口,从 填入
开始端口
到 填入结束端口
- 重定向目标IP 可以填入
别名
和单主机
,别名 相关请看这里 - 重定向目标端口 填入想要
转发端口
,如果是一段端口,则填入开始端口
(1:1对应) - 保存,应用更改
目标重定向
对某个目标的端口进行重定向,这边就拿 DNS重定向 举例:
- 点击 防火墙: NAT: 转发 ,点击上方的
+
号,创建规则 - 接口 通常选择
LAN
- TCP/IP版本 看你需求
- 协议 一般选择
TCP/UDP
- 勾选
目标 / 反转
- 目标 一般为
LAN网络
- 目标端口范围 选择
DNS
- 重定向目标IP 填入
127.0.0.1
或者DNS服务器
- 重定向目标端口 选择
DNS
- 保存,应用更改
禁止重定向
如果我们不需要对 某个IP 重定向,这边那上面的 DNS重定向 举例
假设内网的 DNS查询 重定向到 192.168.1.2 ,这个时候我们需要取消对 192.168.1.2 重定向
- 点击 防火墙: NAT: 转发 ,点击上方的
+
号,创建规则 - 勾选
禁用重定向
- 接口 通常选择
LAN
- TCP/IP版本 看你需求
- 协议 一般选择
TCP/UDP
- 勾选
目标 / 反转
- 目标 填入
192.168.1.2
- 目标端口范围 选择
DNS
- 保存,应用更改
高可用
高可用 在 ESXI 上多少有点水土不服(本是同根生,相煎何太急),端口组 和 虚拟交换机 的 混杂模式 选择
拒绝
,这个时候就可以使用高可用了,但 OpenWrt 就无法连接 OPNsense ,所以推荐试试 PVE
高可用 在外网访问切换速度很快(大概5-10秒),内网主要看设备(大概1-2分钟)
如果发现跨网段无法访问,可以用TRACERT
(win)查看一下路由
准备
- 首先需要先安装 两个 OPNsense
- 其次两个 OPNsense 之间 接口分配 一定要一样( 接口 和 标识符 匹配, MAC地址 不能冲突)
- 给各个接口添加 静态IP地址(请勿分配 一样 的 IP地址 ,如果是 PPPOE拨号 则不用)
- 添加一个 HA接口(用于防火墙之间通信)
参考接口设置如下:
主防火墙:
接口 | 标识符 | IP地址 |
---|---|---|
LAN | lan(也可能是opt1,请根据实际情况分配) | 192.168.1.254/24 |
WAN | wan | PPPOE |
HA | opt1(如果LAN是opt1,则这里是opt2) | 198.19.1.254/24 |
备防火墙:
接口 | 标识符 | IP地址 |
---|---|---|
LAN | lan(也可能是opt1,请根据实际情况分配) | 192.168.1.253/24 |
WAN | wan | PPPOE |
HA | opt1(如果LAN是opt1,则这里是opt2) | 198.19.1.253/24 |
设置防火墙规则
- 在两台防火墙的 HA接口 添加
any to any 规则
点击 防火墙: 规则: HA,规则设置参考这里 - 在 LAN 添加允许 CARP规则 (如果 WAN口 需要 CARP 的也需要设置)
点击 防火墙: 规则: LAN ,添加规则
参考如下设置:
选项 | 参数 |
---|---|
操作 | 通过 |
禁用 | 不勾选 |
快速 | 勾选 |
接口 | LAN |
方向 | in |
TCP/IP版本 | IPV4(根据情况自行选择) |
协议 | CARP |
源 / 反转 | 不勾选 |
源 | LAN网络 |
源(高级) | 不更改 |
目标 / 反转 | 不勾选 |
目标 | any |
目标端口范围 | any |
日志 | 不勾选 |
类别 | (根据自己需要填写) |
描述 | 允许CARP协议访问(根据情况填写) |
不同步XMLRPC | 不勾选 |
计划 | none |
网关 | 默认 |
高级功能 | 不修改 |
如果是多网口,设置可以到 防火墙: 规则: 浮动 中设置
在主防火墙上设置CARP
注意,如果有 IPV6路由通告 使用需要,需要设置 CARP 本地链路IPV6地址
- 点击 接口: 虚拟IP: 设置 ,点击最底下的 橘色加号
- 模式 选择
CARP
- 接口 选择
LAN
(如果要设置 WAN口,请选择WAN
) - 网络/地址 输入
192.168.1.1/24
- 拒绝服务绑定 勾选 (这个选项最明显的会影响DHCP,如果是IPV6,不勾选时路由通告时会通告IP,至于会不会有其他影响,我暂时不清楚)
- 密码 随便输入就行
- VHID组 点击
选择一个未分配的VHID
或者自己填一个
- 基本值 默认即可
在主防火墙上设置NAT(仅限设置了WAN的CARP,其他跳过即可)
- 点击 防火墙: NAT: 出站 ,在 模式 里选择
手动生成出站NAT规则
,然后保存 - 在 防火墙: NAT: 出站 的 手动规则 里添加
两条规则
(一条是 IPV4 另一条 IPV6),有关静态端口
选项作用描述 请参考本文这里
如下设置:
完成样子
接口 | 源 | 源端口 | 目标 | 目标端口 | NAT地址 | NAT端口 | 静态端口 | 描述 |
---|---|---|---|---|---|---|---|---|
WAN | LAN网络 | * | * | * | WAN口的CARP地址 | * | 是 | IPV4 NAT出站 |
WAN | LAN网络 | * | * | * | WAN口的CARP地址 | * | 是 | IPV6 NAT出站 |
IPV4设置,IPV6类似( TCP/IP版本 选项选择 IPV6
即可):
选项 | 选择 |
---|---|
禁用 | 不勾选 |
禁用NAT | 不勾选 |
接口 | WAN(一般选择出口) |
TCP/IP | IPV6 |
协议 | any |
源反转 | 不勾选 |
源地址 | LAN 网络 |
源端口 | any |
目标反转 | 不勾选 |
目标地址 | any |
转换/目标 | WAN口的CARP地址 |
日志 | 不勾选 |
转换/端口 | |
静态端口 | 勾选 |
在主防火墙上 高可用设置
- 点击 系统: 高可用: 设置
- 勾选
同步状态
- 同步接口 选择
HA
- 同步对端IP 填入
198.19.1.253
- 同步配置对端IP 填入
https://198.19.1.253
- 远程系统用户名 填入
root
- 远程系统密码 填入
root密码
- 选择需要 同步模块
- 保存,并点击 系统: 高可用: 状态 ,出现信息后即为 防火墙状态 获取成功
- 点击 上传的小图标 ,同步配置
- 点击 接口: 概况 ,可以看到 LAN接口 IPV4 一栏中,在 192.168.1.1/24 旁会有个绿色图标,这表示当前为 主设备 ,如果在 备防火墙 看到是灰色,表示配置成功
注意:LAN口防火墙之间必须要能够互访,否则都会认为自己是 主设备
在备防火墙上 高可用设置
- 点击 系统: 高可用: 设置
- 勾选
禁用抢占
- 勾选
断开拨号接口
- 勾选
同步状态
- 同步对端IP 填入
198.19.1.254
- 保存即可
BUG解决
如果遇到 在主防火墙上 应用更改时,出现以下文字:
Fatal error: Uncaught ValueError: Unknown format specifier "�" in /usr/local/www/guiconfig.inc:317 Stack trace: #0 /usr/local/www/guiconfig.inc(317): sprintf('\xE6\x9B\xB4\xE6\x94\xB9\xE5\xB7\xB2\xE6\x88\x90\xE5\x8A\x9F...', '
不用担心,这段话是提示 记得在高可用中同步 ,如果返回还是要 应用更改 ,可以将语言设置为英文(在 系统: 设置: 常规 中的 语言)
OPNsense性能优化
以下内容主要来自于博主 鐵血男兒 的 OPNsense提升网络性能教程 (略有修改),极力推荐看看这位博主的文章
硬件卸载
有关于 硬件卸载 是什么,可以看看这篇文章硬件加速与功能卸载
简单来说 硬件卸载 可以 接收侧针对VLAN进行包过滤 、 发包时VLAN Tag的插入 、IP TCP/UDP/SCTP checksum硬件卸载功能 、 TCP分片功能的硬件卸载 、 TCP组包功能的硬件卸载
推荐关闭 硬件卸载 功能(当然默认是关闭的)
PVE设置(ESXI没有,请跳过ψ(`∇´)ψ)
- 常规 选项卡请根据自己情况填写
- 操作系统 选项卡请根据自己情况填写(LINUX就行拉)
- 系统 选项卡
- Qemu代理 选择 开启(一般会安装的,类似 ESXI agent,用于与 虚拟机通信 获取 虚拟机信息)
- BIOS 选择
OVMF(UEFI)
,并选择EFI存储
(务必不要选择 预制秘钥)
- 磁盘 选项卡请根据自己情况填写
- CPU 选项卡
- 类别 推荐选择
kvm64
- Extra CPU Flags: 中选择
aes
旁的+
旁的圆圈
(这样就打开了 aes ヾ(≧▽≦*)o)
- 网络 选项卡请根据自己情况填写
- 模型 选择
ViriIO
- 取消勾选
防火墙
- Multiqueue 设置为
8
- 确认
可调参数
点击 系统: 设置: 可调参数 进行设置
参照 FreeBSD网络性能调优指南
- 这是一个与 CPU相关 的可调参数,用于 缓解Spectre V2漏洞 。禁用它对性能有非常大的提升(一个漏洞干掉几代性能提升( ̄y▽ ̄)╭ )。无需添加新条目
hw.ibrs_disable=1
- 取消可用于 netisr处理 的 CPU数量 。默认情况下,FreeBSD网络堆栈 是 单线程 的。设置为
-1
可以使用全部8个CPU线程。需要创建新条目
net.isr.maxthreads=-1
- 将每个 ISR线程 绑定到1个 CPU核心 ,为 每个核心 启动一个线程。需要创建新条目
net.isr.bindthreads=1
- 参考这个Github ISSUE,似乎需要将此可调参数更改为
deferred
或hybrid
才能使其他 net.isr可调参数 生效。需要创建新条目
net.isr.dispatch=deferred
- 启用 接收方缩放 ,RSS 是另一个可以改进 多核系统网络流量并行处理 的参数。需要创建新条目
net.inet.rss.enabled=1
- 这是来自同一论坛的接收端缩放可调参数。将其设置为2,是因为最佳值是CPU内核数除以4。CPU有8个内核,所以8/4=2。您的值应基于 OPNsense虚拟机 上的 CPU内核数。需要创建新条目
net.inet.rss.bits=2
- 从FreeBSD网络性能调优指南中发现了这个。需要创建新条目
参考如下 网卡与参数 对应关系:
网卡速率 | 参数值 |
---|---|
1 Gbit | 2097152 |
2 Gbit | 4194304 |
10 Gbit | 16777216 |
40 Gbit | 157286400 |
100 Gbit | 614400000 |
kern.ipc.maxsockbuf=16777216
- 这些 TCP缓冲区 设置取自FreeBSD网络性能调优指南,没有深入研究它们,但它们都给 OPNsense 提供了 缓冲区相当或更大,所以采用了它。该指南详细说明了这些值如何帮助提高性能。需要创建新条目
net.inet.tcp.recvbuf_max=4194304
net.inet.tcp.recvspace=65536 (无需添加新条目)
net.inet.tcp.sendbuf_inc=65536
net.inet.tcp.sendbuf_max=4194304
net.inet.tcp.sendspace=65536 (无需添加新条目)
- 该参数启用了 优化的内核套接字接口 ,可以显著降低快速 TCP流对CPU的影响。需要创建新条目
net.inet.tcp.soreceive_stream=1
- 该值增加 PF防火墙哈希表的大小,以便在性能下降之前允许表中有更多的连接。需要创建新条目
net.pf.source_nodes_hashsize=1048576
- 这些参数值 提高处理IP片段 时的效率。您也可以在此处设置更激进的值,但似乎这些值更安全,所以我选择了它们。需要创建新条目
net.inet.tcp.mssdflt=1240
net.inet.tcp.abc_l_var=52
- 该参数配置了 最小段大小,或 单个IPv4 TCP段同意传输 的 最小数据负载,旨在提高效率。需要创建新条目
net.inet.tcp.minmss=536
- 这与网络完全无关,这是用于 改善RNG熵池 的值。因为防火墙系统上有 VPN,认为 RNG 越多越好。需要创建新条目
kern.random.fortuna.minpoolsize=128
- 参考Reddit,它在最后一批可调参数中被添加,最终将吞吐量提升到了极值。需要创建新条目
net.isr.defaultqlimit=2048
组
注意: 组 在很多功能中是 无法正常使用 的,除 防火墙: 规则 、 防火墙: NAT: 出站 中以外,尽量 选择接口
OPNsense 的 组 功能可以节省很多重复配置在接口上,组规则 优先级高于 接口规则 ,同时可以创建 不同优先级 的 组
创建组
- 点击 防火墙: 组,点击红色
+
号 - 输入 组 的
名称
- 选择 组 的
成员
- (no)GUI组 选项勾选时,接口 则不会 按照 组——>接口 方式显示
- 顺序默认为
0
,数字 越大 优先级 越低 - 描述看心情填写
创建组规则
- 点击 防火墙: 规则:(组名称) ,点击红色
+
号 - 参考如下设置 (简单
any to any
规则):
选项 | 参数 |
---|---|
操作 | 通过 |
禁用 | 不勾选 |
快速 | 勾选 |
接口 | (组名称) |
方向 | in |
TCP/IP版本 | IPV4(根据情况自行选择) |
协议 | any |
源 / 反转 | 不勾选 |
源 | (组名称)网络(组一般是没有地址这个选项的) |
源(高级) | 不更改 |
目标 / 反转 | 不勾选 |
目标 | any |
目标端口范围 | any |
日志 | 不勾选 |
类别 | (根据自己需要填写) |
描述 | Default allow LAN to any rule(根据情况填写) |
不同步XMLRPC | 不勾选 |
计划 | none |
网关 | 默认 |
高级功能 | 不修改 |
- 保存,应用更改
- 点击 防火墙: 规则:(组成员) ,展开规则即可看到 组规则
网关组
网关组主要是用于负载均衡或者故障转移,本次主要介绍故障转移
准备
当然,起码需要两个 WAN口
WAN口:
协议 | 网关名称 |
---|---|
IPV4 | WAN_GW |
IPV6 | WAN_DHCP6 |
WAN2口:
协议 | 网关名称 |
---|---|
IPV4 | WAN2_DHCP |
IPV6 | WAN2_DHCP6 |
配置网关
- 点击 系统: 网关: 配置 ,点击 WAN_GW 、 WAN_DHCP6 、 WAN2_DHCP 、 WAN2_DHCP6 右边的 编辑
- 参考如下设置
选项 | 参数 |
---|---|
禁用 | 不勾选 |
名称 | WAN_GW |
描述 | WAN Gateway |
接口 | WAN |
地址簇 | IPV4 |
IP地址 | 留空 |
上游网关 | 勾选 |
远程网关 | 不勾选 |
禁用网关监控 | 不勾选 |
禁用主机路由 | 不勾选 |
监控IP | 223.5.5.5 (IPV6则使用2400:3200::1,注意:一个网关一个地址,不可以复用) |
将网关标记为关闭 | 不勾选 |
优先级 | 254 |
- 应用,检查各个 网关状态 是否是 正常(online)
创建网关组
- 点击 系统: 网关: 组 ,点击 红色加号 创建网格组
- 参考如下设置
选项 | 参数 |
---|---|
组名 | WAN_Group_V4 (v4和v6要分别创建) |
网关优先级(故障转移) WAN_GW | 层级1 |
WAN2_DHCP | 层级2 |
—————————— | —————————— |
网关优先级(负载均衡) WAN_GW | 层级1 |
WAN2_DHCP | 层级1 |
触发条件 | 丢包 |
池选项 | 默认 |
描述 | IPV4网关组 |
- 保存
防火墙LAN口规则设置
修改或者创建 any to any 规则在 LAN网口
参考如下设置:
选项 | 参数 |
---|---|
操作 | 通过 |
禁用 | 不勾选 |
快速 | 勾选 |
接口 | LAN |
方向 | in |
TCP/IP版本 | IPV4(根据情况自行选择) |
协议 | any |
源 / 反转 | 不勾选 |
源 | LAN网络 |
源(高级) | 不更改 |
目标 / 反转 | 不勾选 |
目标 | any |
目标端口范围 | any |
日志 | 不勾选 |
类别 | (根据自己需要填写) |
描述 | Default allow LAN to any rule(根据情况填写) |
不同步XMLRPC | 不勾选 |
计划 | none |
网关 | WAN_Group_V4 |
高级功能 | 不修改 |
网关组防火墙设置注意事项
为了减少规则的重复设置,可以选择创建 防火墙: 组
但是可能存在 数据包被丢弃 的问题,所以个人建议除了 防火墙规则 以外 不使用组
请勿在流控中使用 防火墙: 组 ,规则将不起作用
BUG解决
CSRF check failure
如果进入 OPNsense 网页端,登录后,显示 白色背景 和 黑色字 并包含 CSRF 词,多半是 跨站请求伪造 (CSRF) 保护
这种情况一般是 重启后,网页没有刷新,才会跳出,只需要 删除路径 ,直接访问 根目录
如果上面方法不行,可以尝试 无痕模式 、 清理缓存和cookie 、 更换浏览器 、 更换另一种设备 等操作
如果没有效果,并且尝试重启 OPNsense 所有服务后(不是重启,重启可能连系统都打不开),依然如此,可以判定为 PHP挂了