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支持
  • 更多..

注意

  1. OPNsense 是一个防火墙,所以并不支持 NAT1(也就是 全锥型NAT,当然曲线救国方法也有 1:1 NAT ),所以最高能支持到 端口限制型NAT,但是 UPNP缓解这一问题(不推荐,更推荐 端口转发
  2. OPNsense 入侵检测功能在 变动IP 网口上使用会导致 CPU占用 过高(说的就是 PPPOE拨号
  3. 流量分析流量图标Unbound DNS报告功能突然断电 等情况下会导致数据损坏,进而导致 CPU占用 过高
  4. 请在 前期 做好 网络规划 !!! OPNsense 随意 添加网卡 会导致 标识符设备 变动,其次 高可用 更要求 标识符设备 一一对应,请务必做好 网络规划 !!!
  5. 目前 高可用 功能不能在 同一台 虚拟机平台(指一台机器安装 ESXI,并在 这台机器ESXI虚拟平台 虚拟两个 OPNsense)(这一点存疑)
  6. 高可用 功能有 DUP! 问题在 ESXI 上, 所以 ESXI 用户请注意,在端口组开启 混杂模式 时会出现 DUP! 问题,但关闭后会导致 OpenWrt 无法访问 OPNsense,同时 DockerMACVlan 也将无法使用。所以请尽量选择 PVE,而且 OPNsensePVE 上的性能更好。
  7. OPNsesneVLAN配置 貌似无法使用,物理机用户请考虑一下
  8. 添加新网卡 可能会导致 FREEBSD 的网卡顺序更改,请不要慌张,到终端中设置一下(貌似仅限在 ESXI
  9. 请注意主机带有 VPRO 功能的,并且使用 intel 2.5G 网卡 (淦,讲了句废话),由于INTEL网卡BUG,导致 OPNsense 无法发出 DHCP Offer,解决方法是不使用 intel 2.5G 网卡
  10. 推荐虚拟平台使用 PVE !!! 推荐虚拟平台使用 PVE !!! 推荐虚拟平台使用 PVE !!!(重要的事情说三遍,顺便提示一点: ESXI 无法准确计算 OPNsense 内存占用)

先前准备

  1. 两台电脑(双网口以上)
  2. 大于20G存储(推荐50G)
  3. RJ45网线
  4. 显示器和键盘

硬件要求

我是用的 i5-1135G764G 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设置 的主要硬件因素是 CPURAM大容量存储(光盘),网络接口的数量质量

吞吐量(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-RELEASEOPNsense 的基础(现在应该是 FreeBSD 13)。所有 FreeBSD驱动程序 都包含在 OPNsense内核中,硬件兼容性相同。
如需进一步的帮助和支持,请参阅


安装

镜像下载

先从官网下载新版的安装镜像

可选项 选择
architecture amd64
Select the image type dvd
Mirror Location Aivian(或者Peking University open source software mirror镜像源(北京大学镜像站))

安装OPNsense

  1. 系统选择 FreeBSD 13
  2. CPU 尽量分配较多的核心,如果是 1G 外网,可以限制 CPU 份额 5000MHZ
  3. 内存也是尽量往大了选( 4G 朝上),如果开启 入侵检测 ,规则集多了,很吃内存和硬盘
  4. 硬盘大小选择 50G 如果使用 ESXI或者 PVE ,硬盘最好使用 厚置备,置零

启动虚拟机或者物理机,等待至让 输入账号 画面(显示login:),中途请勿随意按键盘,否则就会进入 配置VLAN配置LAGG 画面。

输入账号installer 密码opnsense,进入选择 键位图(Keymap Selection)
选择合适的 键位(默认回车就行)

  1. 选择 Install (UFS)
  2. FreeBSD 硬盘一般是 da 开头,如果是单硬盘,选择 da0 就行
  3. 它会问你是否新建 8G 交换空间,看你需求
  4. 它会问你是否安装在 da0 硬盘上
  5. 等待系统安装完成
  6. 更改 ROOT 密码
  7. 重启 拔出安装介质 进入 OPNsense

基础使用

基础设置

输入 https://192.168.1.1 进入 OPNsense后台设置

自行设置电脑或者手机与 OPNsense 同网段 192.168.1.0/24

  1. 默认会跳转到向导界面,点击 下一步(Next) 进行设置
可选项 选择
语言 中文
首选DNS服务器 223.5.5.5
辅助DNS服务器 119.29.29.29
覆盖DNS 不勾选
启用解析器 勾选
启用DNSSEC支持 推荐勾选
强化DNSSEC数据 推荐勾选

启用DNSSEC支持 可以有效防止 DNS劫持 ,原理是验证查询结果的 数字签名
强化DNSSEC数据 在遇到非权威结果时会直接丢弃,自建DNS请勿开启

  1. 时区设置为 Asia/Shanghai,下一步
  2. 设置 WAN
  3. 设置 LAN
  4. 确定 ROOT 密码为空则不修改
  5. 重载系统

更换镜像源

默认的镜像速度很慢,所以我们需要更换镜像源

  1. 点击 系统: 固件 ,然后点击 设置 ,在 镜像 选项选择 Aivian (HTTPS,Shangxing,CN),然后保存

如果要 自定义的镜像源 则选择 (custom) ,填入 http://mirrors.pku.edu.cn/opnsense/ (北京大学镜像源,请勿自行改成 https) 或者 http://mirrors.163.com/opnsense/ (网易镜像源,请勿自行改成 https),然后保存

  1. 点击 状态 ,点击 检查升级

接口设置

接口分配

点击 接口: 分配 ,在这可以看到 接口描述标识符接口设备(接口在系统名称)
如果没有 WAN口 ,我们可以在下面 Assign a new interface ,选择 设备 vmx* (一般是 vmx 开头), 然后在 描述 里输入 名称 (全英文和数字,不要有特殊符号,可以全大写)

WAN口设置

  1. 点击 接口: [WAN]
  2. 勾选 阻止私有网络 (私有网络IP,更多详情点击 阻止私有网络 旁的感叹号) 和 拦截bogon网络 (保留IP,更多详情点击 拦截bogon网络 旁的感叹号)
  3. 如果是 PPPOE拨号 上网,则在 IPv4配置类型 选择 PPPoE
    如果是 DHCP 上网,则在 IPv4配置类型 选择 DHCP
    如果是 静态V4 上网,则在 IPv4配置类型 选择 静态IPV4
  4. 如果是 PPPOE拨号 上网,下滑到 PPPoE配置 ,在 用户名 密码 填入对应参数,更多高级设置,请进入 接口: 点对点: 设备,保存
    如果是 DHCP 上网,下滑到 DHCP客户端配置 查看是否有需要设置的,然后保存
    如果是 静态V4 上网,下滑到 静态IPv4配置 ,填入 IPv4地址和掩码 ,点击 IPv4上游网关 那一行的 + 号,勾选 默认网关 ,填入 IPv4网关网关名称 根据需求修改,保存
  5. 有关 IPV6设置 ,请看本文这里

LAN口设置

  1. 点击 接口: [LAN]
  2. 取消勾选 阻止私有网络 (私有网络IP,更多详情点击 阻止私有网络 旁的感叹号) 和 拦截bogon网络 (保留IP,更多详情点击 拦截bogon网络 旁的感叹号)
  3. IPv4配置类型 选择 静态IPV4
  4. 下滑到 静态IPv4配置 , 填入 IPv4地址 (在 10.0.0.0/8172.16.0.0/12192.168.0.0/16 中任选) ,并选择对应 子网掩码 (影响 DHCPV4 分配),保存

终端中配置网卡

有时一不小心删除了管理网口,这个时候可以通过终端配置网卡

  1. 在终端中输入 账号密码 ,进入 管理选项
  2. 输入 数字1 ,进入 接口分配
  3. 先回问你是否需要配置 LAGGs VLANs ,回车即可跳过
  4. 接下来会问 WAN 分配的网卡,输入 网卡名称
  5. 然后问你 LAN 分配的网卡,输入 网卡名称(也可回车跳过)
  6. 后面就是问你 OPTN(N代表数字) 分配的网卡,输入 网卡名称(不填则代表配置结束)
  7. 最后问你 是否保存 ,输入 y 并回车确定
  8. 输入 数字2 ,进入 接口设置
  9. 输入配置接口的 数字
  10. 先问你是否要 配置DHCP
  11. 后问你这个接口 地址,请填入 IPV4地址
  12. 接下来问你是否配置 IPV6地址跟踪WAN
  13. 然后问你是否将 HTTPS改为HTTP
  14. 后问你是否创建新的 HTTPS证书
  15. 最后问你是否 重启组件
  16. 测试一下是否能够访问,能访问为配置完成

防火墙规则配置

OPNsense 作为开源防火墙,怎么能少了防火墙配置呢

创建简单的允许互访的规则

一般在 添加分配配置 接口后,需要在防火墙规则上配置允许访问的规则,否则无法与防火墙通讯(自动创建规则 允许SSH和WEB 访问)

  1. 点击 防火墙: 规则: LAN (点击 对应接口 选项卡,这里以 LAN 为例子)
  2. 点击 橙色的加号 添加规则,这里创建最简单的互访规则(允许 LAN网络 访问 防火墙及其它网络
  3. 参考如下设置
选项 参数
操作 通过
禁用 不勾选
快速 勾选
接口 LAN
方向 in
TCP/IP版本 IPV4(根据情况自行选择)
协议 any
源 / 反转 不勾选
LAN网络
源(高级) 不更改
目标 / 反转 不勾选
目标 any
目标端口范围 any
日志 不勾选
类别 (根据自己需要填写)
描述 Default allow LAN to any rule(根据情况填写)
不同步XMLRPC 不勾选
计划 none
网关 默认
高级功能 不修改
  1. 点击保存
  2. 确认无误后,应用更改

创建简单的阻断规则

有时候需要禁止访问一些IP,设置一些阻止规则丢弃这些包

  1. 点击 防火墙: 规则: LAN (点击 对应接口 选项卡,这里以 LAN 为例子,禁止 LAN设备 访问 阿里的DNS
  2. 点击 橙色的加号 添加规则,这里创建最简单的阻止规则(禁止 LAN设备 访问 阿里的DNS
  3. 参考如下设置
选项 参数
操作 阻止(或者拒绝)
禁用 不勾选
快速 勾选
接口 LAN
方向 in
TCP/IP版本 IPV4(根据情况自行选择)
协议 any
源 / 反转 不勾选
LAN网络
源(高级) 不更改
目标 / 反转 不勾选
目标 223.5.5.5(鼠标网上划,找到 单个主机或网络 ,即可填写IP,当然也可以填写别名)
目标端口范围 53(也可以填 any
日志 不勾选
类别 (根据自己需要填写)
描述 禁止访问阿里DNS(根据情况填写)
不同步XMLRPC 不勾选
计划 none
网关 默认
高级功能 不修改

选择 阻止 防火墙会直接丢弃包,而 拒绝 防火墙会返回一个拒绝的包

  1. 点击保存
  2. 确认无误后,应用更改

网页设置

反代理设置

主要针对的是通过 nginxOPNsense 进行反代理,需要在 OPNsense 修改选项

点击 系统: 设置: 管理 ,勾选 禁用Web GUI重定向规则禁用DNS重绑定检查禁用HTTP_REFERER强制检查,然后保存
如果遇到 CSRF check failure 请看本文这里

开启安全Shell

点击 系统: 设置: 管理 ,勾选 启用安全Shell允许root用户登录允许密码登录 ,并 监听接口 全部接口,然后保存

系统DNS设置

设置网关DNS

这个一般用于系统的DNS(具体作用不太清楚,但要设置)

  1. 打开 系统: 设置: 常规 , 下滑到 网络 ,找到 DNS服务器 选项并填入 DNS (阿里:223.5.5.5 腾讯:119.29.29.29 更多请百度
  2. 文本框 后面选择你的 WAN网关 ,保存
    设置参考:
DNS服务器 应用网关
119.29.29.29 WAN_DHCP - wan-100.65.0……
2400:3200::1 WAN_DHCP6 - wan -fe80::3……

设置Unbound DNS

这个主要是给局域网用的,支持 dot 加密查询,功能比较多

  1. 打开 服务: Unbound DNS: 常规 ,点击 启用Unbound启用DNSSEC支持 ,保存
  2. 打开 服务: Unbound DNS: 查询转发 ,取消勾选 使用系统DNS服务器 ,在下面 添加一条 ,并填入 DNS (阿里:223.5.5.5 腾讯:119.29.29.29 更多请百度),然后保存 应用
  3. DOT查询设置(没需求这条可以跳过),打开 服务: Unbound DNS: DoT ,取消勾选 使用系统DNS服务器 ,在下面 添加一条 ,勾选 启用服务器IP 填入 DNS服务商IP (官网一般会写), 服务器端口 填入 853dot 默认端口), 验证CN 填入 DNS服务商域名` (官网一般会写),然后保存 应用
    DOT 设置参考:
选项 选择
编辑服务器
启用 勾选
服务器IP 223.5.5.5
服务器端口 853
验证CN dns.alidns.com

DHCPv4设置

OPNsense 的 DHCPv4 分配IP只能在网段内

  1. 打开 服务: DHCPv4: [LAN]
  2. 参考如下,请自行设置,网关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 了)
如果不知道该用什么数值的话,,可以试试14201400
具体原因可以看看这篇文章,简单来说 手机等终端设备 一些时候在发送数据包时会携带 不要分包标记 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

通过设置出站,同样可以实现 NATv6 ,参考本文这里 第四点第五点
另一种实现方式可以参考本文这里

  1. 点击 接口: [WAN],下滑到 通用配置 里找到 IPV6配置类型 选择为 DHCPv6
  2. 下滑到 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
  1. 点击 接口: [LAN]通用配置IPV6配置类型 设置为 跟踪接口,下滑到 跟踪IPv6接口 打开 允许手动调整DHCPv6和路由器通告
  2. 点击 防火墙: 设置: 高级 ,在 IPv6选项 打开 允许IPv6,然后保存
  3. 点击 服务: DHCPv6: [LAN] (像安卓就不支持 DHCPv6 )或者 服务: 路由器通告: [LAN] (一般使用 路由器通告)
    DHCPv6
    设置 范围 并设置 DNS服务器,点击 在LAN接口上启用DHCPv6服务,然后 保存
    参考如下
项目 参数
启用 勾选
子网 (接口设置,无需填写)
子网掩码 (接口设置,无需填写)
有效范围 (接口设置,无需填写)
范围 从 ::1
范围 到 ::ffff
可用的前缀委派大小 (接口设置,无需填写)
前缀委派范围 从
前缀委派范围 到
前缀委派范围 前缀委派大小
DNS服务器 2400:3200::1

路由器通告
打开 通告默认网关 并设置 DNS服务器路由器通告 选项为 Assisted,保存
如下参考

项目 参数
路由器通告 Assisted
路由器优先级 正常
源地址 自动
通告默认网关 勾选
广播路由 前缀
广播路由 长度
DNS选项 (全部不勾选)
DNS服务器 2400:3200::1
  1. 现在就能看在手机或者电脑看到 IPV6地址 ,使用IPV6检测

NATv6

  1. 点击 接口: [WAN],下滑到 通用配置 里找到 IPV6配置类型 选择为 DHCPv6
  2. 点击 接口: [LAN]通用配置IPV6配置类型 设置为 静态IPV6 ,下滑到 静态IPv6配置 自行设置 IPv6地址 (在 fd00::/8挑选一个),推荐 掩码 设置为 64
  3. 点击 防火墙: 设置: 高级 ,在 IPv6选项 打开 允许IPv6,然后保存
  4. 点击 防火墙: NAT: 出站 ,在 模式 里选择 混合生成出站NAT规则 ,然后保存
  5. 防火墙: 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
转换/目标 接口地址
日志 不勾选
转换/端口
静态端口 勾选
  1. 点击 服务: DHCPv6: [LAN] (像安卓就不支持 DHCPv6 )或者 服务: 路由器通告: [LAN] (一般使用 路由器通告)
    DHCPv6
    设置 范围 并设置 DNS服务器,点击 在LAN接口上启用DHCPv6服务,然后 保存
    如下参考
项目 参数
启用 勾选
子网 (接口设置,无需填写)
子网掩码 (接口设置,无需填写)
有效范围 (接口设置,无需填写)
范围 从 ::1
范围 到 ::ffff
可用的前缀委派大小 (接口设置,无需填写)
前缀委派范围 从
前缀委派范围 到
前缀委派范围 前缀委派大小
DNS服务器 2400:3200::1

路由器通告
打开 通告默认网关 并设置 DNS服务器路由器通告 选项为 Assisted,保存
如下参考

项目 参数
路由器通告 Assisted
路由器优先级 正常
源地址 自动
通告默认网关 勾选
广播路由 前缀
广播路由 长度
DNS选项 (全部不勾选)
DNS服务器 2400:3200::1
  1. 现在就能看在手机或者电脑看到 IPV6 地址,使用IPV6检测

NPTv6公网V6(实验性)

这种实现公网v6方式,兼具 了内网 可管理性,不因为 前缀变化 导致防火墙 规则失效 ,同时保证了 地址独立性 (类似 80端口 可以 共用),更多介绍可以参考IPv6至IPv6网络前缀翻译适用于 IPv6 的无状态源网络前缀转换
这种实现方式同样需要 ipv6前缀

  1. 点击 接口: [WAN],下滑到 通用配置 里找到 IPV6配置类型 选择为 DHCPv6
  2. 点击 接口: [LAN]通用配置IPV6配置类型 设置为 静态IPV6 ,下滑到 静态IPv6配置 自行设置 IPv6地址 (在 fd00::/8挑选一个),推荐 掩码 设置为 64
  3. 点击 防火墙: 设置: 高级 ,在 IPv6选项 打开 允许IPv6,然后保存
  4. 点击 防火墙: NAT: NPTv6 ,点击 + 号,在 内部IPv6前缀 填入 NPTv6公网V6第二步IPv6地址 的前缀(如果填入的是 fd88::1/64,那么 前缀 则是 fd88::/64,那就填入 fd88:: ,后面选择 64),然后保存即可
  5. 点击 服务: DHCPv6: [LAN] (像安卓就不支持 DHCPv6 )或者 服务: 路由器通告: [LAN] (一般使用 路由器通告)
    设置 范围 并设置 DNS服务器,点击 在LAN接口上启用DHCPv6服务,然后 保存
    如下参考
项目 参数
启用 勾选
子网 (接口设置,无需填写)
子网掩码 (接口设置,无需填写)
有效范围 (接口设置,无需填写)
范围 从 ::1
范围 到 ::ffff
可用的前缀委派大小 (接口设置,无需填写)
前缀委派范围 从
前缀委派范围 到
前缀委派范围 前缀委派大小
DNS服务器 2400:3200::1

路由器通告
打开 通告默认网关 并设置 DNS服务器路由器通告 选项为 Assisted,保存
如下参考

项目 参数
路由器通告 Assisted
路由器优先级 正常
源地址 自动
通告默认网关 勾选
广播路由 前缀
广播路由 长度
DNS选项 (全部不勾选)
DNS服务器 2400:3200::1
  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设置带宽整形教程

创建流量优先级流控

  1. 点击 防火墙: 流控: 管道
  2. 创建 上传管道下载管道
    上传管道
  • 带宽 输入 160 (根据你自己宽带来)
  • 单位 Mbit/s (根据你自己需求来)
  • 描述上传管道

下载管道

  • 带宽 输入 1000 (根据你自己宽带来)
  • 单位 选择 Mbit/s (根据你自己需求来)
  • 描述 下载管道
  1. 创建 HTTP上传队列HTTP下载队列其他流量队列上传其他流量队列下载

权重 数值越低的,拥挤情况下获得带宽就越多,但不是优先事项

HTTP上传队列

  • 管道 选择 上传管道
  • 权重 设置为 50
  • 描述 HTTP上传队列

HTTP下载队列

  • 管道 选择 下载管道
  • 权重 设置为 50
  • 描述 HTTP下载队列

其他流量队列上传

  • 管道 选择 上传管道
  • 权重 设置为 80
  • 描述 其他流量队列上传

其他流量队列下载

  • 管道 选择 下载管道
  • 权重 设置为 80
  • 描述 其他流量队列下载
  1. 创建 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
  • 目标管道 选择 其他流量队列下载
  • 描述 其他流量规则下载
  1. 点击应用保存
  2. 点击 防火墙: 流控: 状态 查看队列是否有字节。

进阶使用

别名

OPNsense别名 是个非常强大的功能,在我们遇到遇到一堆主机需要使用相同的隔离规则的时候,不肯能一个一个添加,这太麻烦了,这个时候 别名 就起到了大作用

别名类型

首先我们先看看 别名类型 有哪些,有什么作用(以下来自OPNsense防火墙别名的使用

主机

  1. 主机别名 类型允许输入 IP 地址本地主机名完全限定域名 (FQDN) 。如果需要经常在规则中引用 IP 地址,则可以将其设为 主机别名 并在 规则 中使用该别名。由于 防火墙规则 仅允许 IP网络地址,因此必须使用 别名 才能在规则中使用 主机名FQDN
  2. 主机别名 还允许使用 ! 排除对象。例如,如果输入 !192.168.1.10,则表示排除 192.168.1.10。排除选项 只对 IP 地址 有效。
    主机别名 示例:
  • IP 地址192.168.1.10!192.168.1.10(也允许 IPv6 地址
  • 本地主机名(不带域名)myserver!myserver
  • FQDNpfchina.org!pfchina.org
  • 可以在别名中输入以 逗号分隔IP 地址主机名FQDN 的任意组合的多个值,例如:

    192.168.1.10 , 192.168.1.11, myserver1, pfchina.org


网络

  1. 网络别名 允许以 CIDR 格式 输入网络的 IP 地址范围CIDR 表示法 是通过使用设置为 1 的位数来定义子网掩码的方法。其余设置为 0。在 192.168.1.0/24 的示例中,/24CIDR 表示法 网络地址的 一部分,相当于 子网掩码 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


端口

  1. 端口别名 允许指定 端口号。可以输入 065,535 之间的数字。要指定一系列 连续端口,请在端口号之间使用 冒号:)。
    端口别名 示例:
  • 端口8080
  • 端口范围8000:8080
  • 可以输入 多个端口,包括 端口范围

    22, 8000:8080


URL (IPs)

  1. 网址(IPs)别名 用于托管在网站上的 IP 地址列表。在 OPNsense 文档中没有提及 URL (IPs)别名类型。将 URL (IPs)URL Table (IPs) 进行比较时,主要区别在于 刷新频率URL (IPs) 用于 IP 地址静态列表
  2. 网址(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)

  1. URL Table (IPs)别名 用于 IP 地址列表,如 URL (IPs)别名。大多数用户最喜欢使用这个 URL 别名类型 ,它可以 定期刷新,对于阻止列表很有用。URL Table (IPs)别名 可以 指定更新间隔
  2. 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

  1. 当需要阻止来自 其他国家/地区IP/网络地址 时,可以使用 GeoIP别名。托管在云上的服务和通过 VPNTorSSH 建立 隧道网络 连接,很容易绕过 GeoIP阻止。但是它仍然很有用,它可以 阻止 来自不熟练的攻击者 或来自其他国家的受感染机器的随机攻击。
  2. 要设置 GeoIP别名,必须注册 MaxMindGeoIP 服务 以获取完全配置 GeoIP 别名 所需的 GeoIP 地址范围
  3. 具体设置可以看这里MaxMind GeoIP’s Setup

网络组

  1. 网络组别名 可用于 对除 端口别名外部(高级)别名 类型之外的 其他别名 类型进行分组。该别名类型仅允许对兼容的别名进行分组。使用 网络组别名 的主要好处是它可以防止对 不兼容 的别名进行分组。
    网络组别名 示例:
  • hostalias1, hostalias2, urlalias(从下拉列表中选择)

MAC地址

  1. MAC 地址别名 允许在 别名 中使用 MAC 地址MAC 地址别名 无法 杜绝恶意用户 使用 欺骗MAC地址,这是该别名使用存在的缺陷。
  2. MAC 地址别名 更新是需要时间的,如果客户端一直不使用 IP 进行访问,则不会记录 MAC 地址 所使用的 IP
    MAC 地址别名 示例:
    • 3f:cf:3f:1f:7f:bf
    • 也可以输入多个 MAC 地址:

    3f:cf:3f:1f:7f:bf, 3e:ce:3e:1e:7e:be


外部(高级)

  1. 当希望外部进程管理防火墙中别名的值时,可以使用 外部(高级)别名 类型。如果需要动态更改别名的值,这会非常方便。由于 OPNsense 具有 防火墙 API,可以更好的从外部进程更新/管理防火墙规则。(说得好,不会用 ̄ω ̄=)

别名嵌套

  1. 对于所有别名类型,可以在别名中 嵌套别名。如果希望将多个别名组合在一起,这会很有用。例如,如果有 server1server2 的别名,可以创建一个名为 myservers 的第三个别名,其中包含 server1server2 。这样做,可以在它们自己的特定防火墙规则中使用 server1server2 别名,但随后有适用于两个服务器的更广泛的防火墙规则。

删除别名

  1. 删除嵌套 在另一个别名中和/或防火墙规则当前正在使用的别名,将收到错误消息。这样的设置可以防止违反任何防火墙规则。

创建别名

那么我们已经了解了 别名类型 就开始正式上手把
在上手之前提醒一下,别删内置的别名(反正你也删不了(~ ̄▽ ̄)~ )

  1. 点击 防火墙: 别名 ,点击下方的 + 号,创建别名
  2. 输入别名名称(名称必须以 字母单个下划线 开头,少于 32个字符,并且仅由 字母数字字符下划线 组成。可以使用此名称嵌套别名。)
  3. 选择类型(参考本文这里
  4. 输入内容
  5. 输入描述(看你心情填与否)
  6. 保存

端口转发

相比 UPNP (通用随插即用) 端口转发手动控制转发安全性要好一点

注意: 在这一块不一定好用

普通转发

  1. 点击 防火墙: NAT: 转发 ,点击上方的 + 号,创建规则
  2. 接口 通常选择 WAN
  3. TCP/IP版本 看你需求
  4. 协议 一般选择 TCP/UDP
  5. 目标 一般为 WAN网络 或者 WAN地址
  6. 目标端口范围 如果只转发一个端口,则填一样,如果转发一段端口, 填入 开始端口 填入 结束端口
  7. 重定向目标IP 可以填入 别名单主机别名 相关请看这里
  8. 重定向目标端口 填入想要 转发端口,如果是一段端口,则填入 开始端口(1:1对应)
  9. 保存,应用更改

目标重定向

对某个目标的端口进行重定向,这边就拿 DNS重定向 举例:

  1. 点击 防火墙: NAT: 转发 ,点击上方的 + 号,创建规则
  2. 接口 通常选择 LAN
  3. TCP/IP版本 看你需求
  4. 协议 一般选择 TCP/UDP
  5. 勾选 目标 / 反转
  6. 目标 一般为 LAN网络
  7. 目标端口范围 选择 DNS
  8. 重定向目标IP 填入 127.0.0.1 或者 DNS服务器
  9. 重定向目标端口 选择 DNS
  10. 保存,应用更改

禁止重定向

如果我们不需要对 某个IP 重定向,这边那上面的 DNS重定向 举例
假设内网的 DNS查询 重定向到 192.168.1.2 ,这个时候我们需要取消对 192.168.1.2 重定向

  1. 点击 防火墙: NAT: 转发 ,点击上方的 + 号,创建规则
  2. 勾选 禁用重定向
  3. 接口 通常选择 LAN
  4. TCP/IP版本 看你需求
  5. 协议 一般选择 TCP/UDP
  6. 勾选 目标 / 反转
  7. 目标 填入 192.168.1.2
  8. 目标端口范围 选择 DNS
  9. 保存,应用更改

高可用

高可用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

设置防火墙规则

  1. 在两台防火墙的 HA接口 添加 any to any 规则
    点击 防火墙: 规则: HA,规则设置参考这里
  2. LAN 添加允许 CARP规则 (如果 WAN口 需要 CARP 的也需要设置)
    点击 防火墙: 规则: LAN ,添加规则
    参考如下设置:
选项 参数
操作 通过
禁用 不勾选
快速 勾选
接口 LAN
方向 in
TCP/IP版本 IPV4(根据情况自行选择)
协议 CARP
源 / 反转 不勾选
LAN网络
源(高级) 不更改
目标 / 反转 不勾选
目标 any
目标端口范围 any
日志 不勾选
类别 (根据自己需要填写)
描述 允许CARP协议访问(根据情况填写)
不同步XMLRPC 不勾选
计划 none
网关 默认
高级功能 不修改

如果是多网口,设置可以到 防火墙: 规则: 浮动 中设置


在主防火墙上设置CARP

注意,如果有 IPV6路由通告 使用需要,需要设置 CARP 本地链路IPV6地址

  1. 点击 接口: 虚拟IP: 设置 ,点击最底下的 橘色加号
  2. 模式 选择 CARP
  3. 接口 选择 LAN (如果要设置 WAN口,请选择 WAN
  4. 网络/地址 输入 192.168.1.1/24
  5. 拒绝服务绑定 勾选 (这个选项最明显的会影响DHCP,如果是IPV6,不勾选时路由通告时会通告IP,至于会不会有其他影响,我暂时不清楚)
  6. 密码 随便输入就行
  7. VHID组 点击 选择一个未分配的VHID 或者 自己填一个
  8. 基本值 默认即可

在主防火墙上设置NAT(仅限设置了WAN的CARP,其他跳过即可)

  1. 点击 防火墙: NAT: 出站 ,在 模式 里选择 手动生成出站NAT规则 ,然后保存
  2. 防火墙: 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地址
日志 不勾选
转换/端口
静态端口 勾选

在主防火墙上 高可用设置

  1. 点击 系统: 高可用: 设置
  2. 勾选 同步状态
  3. 同步接口 选择 HA
  4. 同步对端IP 填入 198.19.1.253
  5. 同步配置对端IP 填入 https://198.19.1.253
  6. 远程系统用户名 填入 root
  7. 远程系统密码 填入 root密码
  8. 选择需要 同步模块
  9. 保存,并点击 系统: 高可用: 状态 ,出现信息后即为 防火墙状态 获取成功
  10. 点击 上传的小图标 ,同步配置
  11. 点击 接口: 概况 ,可以看到 LAN接口 IPV4 一栏中,在 192.168.1.1/24 旁会有个绿色图标,这表示当前为 主设备 ,如果在 备防火墙 看到是灰色,表示配置成功

注意:LAN口防火墙之间必须要能够互访,否则都会认为自己是 主设备

在备防火墙上 高可用设置

  1. 点击 系统: 高可用: 设置
  2. 勾选 禁用抢占
  3. 勾选 断开拨号接口
  4. 勾选 同步状态
  5. 同步对端IP 填入 198.19.1.254
  6. 保存即可

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没有,请跳过ψ(`∇´)ψ)

  1. 常规 选项卡请根据自己情况填写
  2. 操作系统 选项卡请根据自己情况填写(LINUX就行拉)
  3. 系统 选项卡
  • Qemu代理 选择 开启(一般会安装的,类似 ESXI agent,用于与 虚拟机通信 获取 虚拟机信息
  • BIOS 选择 OVMF(UEFI) ,并选择 EFI存储 (务必不要选择 预制秘钥
  1. 磁盘 选项卡请根据自己情况填写
  2. CPU 选项卡
  • 类别 推荐选择 kvm64
  • Extra CPU Flags: 中选择 aes 旁的 + 旁的 圆圈 (这样就打开了 aes ヾ(≧▽≦*)o)
  1. 网络 选项卡请根据自己情况填写
  • 模型 选择 ViriIO
  • 取消勾选 防火墙
  • Multiqueue 设置为 8
  1. 确认

可调参数

点击 系统: 设置: 可调参数 进行设置
参照​ ​FreeBSD网络性能调优​​指南

  1. 这是一个与 CPU相关 的可调参数,用于 缓解Spectre V2漏洞 。禁用它对性能有非常大的提升(一个漏洞干掉几代性能提升( ̄y▽ ̄)╭ )。无需添加新条目
hw.ibrs_disable=1
  1. 取消可用于 netisr处理CPU数量 。默认情况下,FreeBSD网络堆栈单线程 的。设置为 -1 可以使用全部8个CPU线程。需要创建新条目
net.isr.maxthreads=-1
  1. 将每个 ISR线程 绑定到1个 CPU核心 ,为 每个核心 启动一个线程。需要创建新条目
net.isr.bindthreads=1
  1. 参考​​这个Github ISSUE​​,似乎需要将此可调参数更改为 deferredhybrid 才能使其他 net.isr可调参数 生效。需要创建新条目
net.isr.dispatch=deferred
  1. 启用 接收方缩放RSS 是另一个可以改进 多核系统网络流量并行处理 的参数。需要创建新条目
net.inet.rss.enabled=1
  1. 这是来自同一论坛​的接收端缩放可调参数。将其设置为2,是因为最佳值是CPU内核数除以4。CPU有8个内核,所以8/4=2。您的值应基于 OPNsense虚拟机 上的 CPU内核数需要创建新条目
net.inet.rss.bits=2
  1. 从​​FreeBSD网络性能调优​​指南​中发现了这个。需要创建新条目
    参考如下 网卡与参数 对应关系:
网卡速率 参数值
1 Gbit 2097152
2 Gbit 4194304
10 Gbit 16777216
40 Gbit 157286400
100 Gbit 614400000
kern.ipc.maxsockbuf=16777216
  1. 这些 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    (无需添加新条目)
  1. 该参数启用了 优化的内核套接字接口 ,可以显著降低快速 TCP流对CPU的影响需要创建新条目
net.inet.tcp.soreceive_stream=1
  1. 该值增加 PF防火墙哈希表的大小,以便在性能下降之前允许表中有更多的连接。需要创建新条目
net.pf.source_nodes_hashsize=1048576
  1. 这些参数值 提高处理IP片段 时的效率。您也可以在此处设置更激进的值,但似乎这些值更安全,所以我选择了它们。需要创建新条目
net.inet.tcp.mssdflt=1240
net.inet.tcp.abc_l_var=52
  1. 该参数配置了 最小段大小,或 单个IPv4 TCP段同意传输最小数据负载,旨在提高效率。需要创建新条目
net.inet.tcp.minmss=536
  1. 这与网络完全无关,这是用于 改善RNG熵池 的值。因为防火墙系统上有 VPN,认为 RNG 越多越好。需要创建新条目
kern.random.fortuna.minpoolsize=128
  1. 参考​Reddit​,它在最后一批可调参数中被添加,最终将吞吐量提升到了极值。需要创建新条目
net.isr.defaultqlimit=2048

注意: 在很多功能中是 无法正常使用 的,除 防火墙: 规则防火墙: NAT: 出站 中以外,尽量 选择接口
OPNsense 功能可以节省很多重复配置在接口上,组规则 优先级高于 接口规则 ,同时可以创建 不同优先级

创建组

  1. 点击 防火墙: 组,点击红色 +
  2. 输入 名称
  3. 选择 成员
  4. (no)GUI组 选项勾选时,接口 则不会 按照 组——>接口 方式显示
  5. 顺序默认为 0 ,数字 越大 优先级 越低
  6. 描述看心情填写

创建组规则

  1. 点击 防火墙: 规则:(组名称) ,点击红色 +
  2. 参考如下设置 (简单 any to any 规则):
选项 参数
操作 通过
禁用 不勾选
快速 勾选
接口 (组名称)
方向 in
TCP/IP版本 IPV4(根据情况自行选择)
协议 any
源 / 反转 不勾选
(组名称)网络(组一般是没有地址这个选项的)
源(高级) 不更改
目标 / 反转 不勾选
目标 any
目标端口范围 any
日志 不勾选
类别 (根据自己需要填写)
描述 Default allow LAN to any rule(根据情况填写)
不同步XMLRPC 不勾选
计划 none
网关 默认
高级功能 不修改
  1. 保存,应用更改
  2. 点击 防火墙: 规则:(组成员) ,展开规则即可看到 组规则

网关组

网关组主要是用于负载均衡或者故障转移,本次主要介绍故障转移

准备

当然,起码需要两个 WAN口

WAN口:

协议 网关名称
IPV4 WAN_GW
IPV6 WAN_DHCP6

WAN2口:

协议 网关名称
IPV4 WAN2_DHCP
IPV6 WAN2_DHCP6

配置网关

  1. 点击 系统: 网关: 配置 ,点击 WAN_GWWAN_DHCP6WAN2_DHCPWAN2_DHCP6 右边的 编辑
  2. 参考如下设置
选项 参数
禁用 不勾选
名称 WAN_GW
描述 WAN Gateway
接口 WAN
地址簇 IPV4
IP地址 留空
上游网关 勾选
远程网关 不勾选
禁用网关监控 不勾选
禁用主机路由 不勾选
监控IP 223.5.5.5 (IPV6则使用2400:3200::1,注意:一个网关一个地址,不可以复用)
将网关标记为关闭 不勾选
优先级 254
  1. 应用,检查各个 网关状态 是否是 正常(online)

创建网关组

  1. 点击 系统: 网关: 组 ,点击 红色加号 创建网格组
  2. 参考如下设置
选项 参数
组名 WAN_Group_V4 (v4和v6要分别创建)
网关优先级(故障转移) WAN_GW 层级1
WAN2_DHCP 层级2
—————————— ——————————
网关优先级(负载均衡) WAN_GW 层级1
WAN2_DHCP 层级1
触发条件 丢包
池选项 默认
描述 IPV4网关组
  1. 保存

防火墙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挂了

posted @ 2023-11-20 18:24  MAENE  阅读(5010)  评论(0编辑  收藏  举报