OPNsense 提供功能齐全的缓存代理服务,具有广泛的访问控制列表、基于类别的 Web 过滤以及在透明模式下运行的能力。它支持 HTTP、HTTPS 和 FTP 服务。此外,代理服务器可以与流量整形器结合使用,来改善用户体验。通过缓存经常访问的网站,它可以提高响应时间并提高带宽使用效率。ICAP 接口可以与大多数专业防病毒解决方案集成。
在本教程中,将简要介绍以下内容:
- OPNsense 中的缓存代理有哪些特点?
- 如何在 OPNsense 缓存代理中配置自定义错误页面?
- 如何在 OPNsense 中设置基本缓存代理?
- 如何在 OPNsense 代理中启用 Web 过滤?
- 如何在 OPNsense 代理中启用透明 HTTP 和 SSL 模式?
- 如何将内部 CA 证书作为受信任的根 CA 导入 Windows 10?
注意,缓存代理服务严重依赖 CPU 负载和磁盘缓存写入,建议使用 SSD 硬盘来缓存代理服务。
缓存代理功能
OPNsense 缓存代理服务的主要功能:
认证:可以使用以下身份验证方法将代理设置为透明代理:
- 无身份认证
- 本地数据库
- Radius
- LDAP
导航到 Web Proxy > Administration > Forward Proxy > Authentication Settings 配置 OPNsense 缓存代理身份验证选项。

访问控制:它通过使用以下标准支持访问控制列表:
- 子网
- 端口
- MIME 类型
- 禁止 IP
- 白名单
- 黑名单
- 浏览器/用户代理
- 支持黑名单
导航到 Web Proxy > Administration > Forward Proxy > Access Control Lists 配置 OPNsense 缓存代理访问控制列表。

- 透明模式:透明模式允许将所有请求路由到代理,而不需要在客户端进行任何配置。透明模式适用于不安全的 HTTP 流量。但是对于安全 (SSL) HTTPS 连接,代理成为中间人,因为客户端与代理“对话”,并且代理使用客户端必须信任的主密钥加密网络数据包。
注意:使用透明 HTTPS 代理可能存在风险,可能会不允许用于某些 Web 应用程序,例如电子商务。
Web 过滤器:OPNsense 包括基于类别的 Web 过滤支持,具有以下功能:
- 从远程 URL 获取数据。
- 使用内置调度程序保持最新。
- 兼容最广泛使用的黑名单
- 支持平面文件列表和基于类别的压缩列表。
- 自动将基于类别的黑名单转换为 squid ACL。
流量管理:代理可以与流量整形器结合使用,以充分利用其整形功能。它还提供以下选项:
- 设置下载/上传的最大文件大小
- 限制整体带宽
- 限制每台主机的带宽
导航到 Web Proxy > Administration > General Proxy Settings > Traffic Management Settings 配置流量管理。

- WPAD / PAC:OPNsense 通过 WPAD / PAC 提供自动代理配置,用于无法使用透明模式的情况。
注意:由于通过 DNS 的 WPAD 需要 Web UI 在默认 HTTP 端口 (TCP/80) 上运行,因此它存在 MITM 攻击漏洞。在这种情况下,应该使用代理服务器或避免从不受信任的网络配置应用程序。
- 自定义错误页面:OPNsense 缓存代理服务可自定义的错误页面。
- 多接口:代理可以同时在多个网络接口上运行。
配置自定义错误页面
按照下列步骤在 OPNsense 缓存代理服务中配置自定义错误页面:
- 导航到
Services > Web Proxy > Administration > General Proxy Settings。 - 找到用户错误页面,选 Custom。然后,将出现 Error Pages 附加选项卡。

- 单击 Error Pages 选项卡。
- 单击 Download 图标获取包含所有可用错误页面和级联样式表文件:
proxy_template.zip。

- 根据需要更改相关文件压缩。

- 单击
custom_template.zip文件夹图标以选择新创建的 zip。

- 点击上传按钮。
- 点击 Apply 按钮。
- 单击 General Proxy Settings 选项卡。
- 单击 Apply 按钮激活错误页面模板。
设置基本缓存代理
可以按照下面 10 个主要步骤在 OPNsense 设置基本缓存代理服务:
- 启用/禁用代理服务器
- 配置代理接口
- 配置代理监听端口
- 启用/禁用缓存
- 配置身份验证方法
- 启用/禁用 FTP 代理
- 定义访问控制列表
- 定义远程访问控制列表
- 定义防火墙规则以防止客户端绕过代理服务器
- 配置客户端代理
下面简要介绍这些步骤。
1. 启用/禁用代理服务器
在 OPNsense 防火墙中,代理服务器带有合理的默认设置,可以快速设置。要在 OPNsense 防火墙中启用代理服务,可以按照以下步骤操作:
- 导航到
Services > Web Proxy > Administration。 - 选中 Enable proxy 选项。
- 单击 Apply 激活代理服务器。
代理将启用基于本地用户数据库的用户身份验证,并默认在 LAN 接口的 3128 端口上运行。

如何启动/重启/停止代理服务器?
导航到 Services > Web Proxy > Administration 来查看代理服务的状态。状态和操作按钮位于管理页面的右上角。
代理服务器运行时,状态按钮显示为带有白色右箭头图标的绿色矩形。单击 Restart 按钮重新启动代理服务器。单击 Stop 按钮停止代理服务器。

当代理服务器停止时,状态按钮显示为带有白色方形图标的红色矩形。可以单击 Start 按钮启动代理服务器。

2. 配置代理接口和常规转发设置
如果需要更改代理将绑定的接口(子网),可以按照以下步骤操作:
- 导航到
Services > Web Proxy > Administration。 - 单击 Forward Proxy 选项卡,打开 General Forward Settings 页面。
- 在代理接口字段中选择接口。可以根据需要添加任意数量的接口或删除一个。
- 单击 Apply 激活设置。

- 这里可以选中透明代理模式的启用透明 HTTP 代理选项。
- 可以选中启用 SSL 检查来记录 HTTPS 流量,或让代理充当 Internet 和您的客户端之间的中间人。在启用此选项之前,请考虑安全隐患。如果使用透明 HTTPS 模式,需要设置 NAT 规则来反映流量。
- 可以选中仅记录 SNI 信息选项,这样只会记录请求的域和 IP 地址,不解码或过滤 SSL 内容。
- 可以更改 SSL 代理服务将侦听的 SSL 代理端口。默认为 3129。
- 可以选择证书颁发机构用于 SSL 检查。
- 可以在 SSL 无碰撞站点字段中输入需要不被检查的站点列表,例如银行和电子商务站点。要接受所有子域,在域前加上
.。
3. 配置代理监听端口
默认情况下,代理将侦听端口 3128。要更改代理侦听端口,您可以按照以下步骤操作:
- 导航到
Services > Web Proxy > Administration。 - 单击 Forward Proxy 选项卡,打开 General Forward Settings 页面。
- 根据需要将代理端口设置为适当的值,例如 8080。
- 单击 Apply 激活设置。

4. 启用/禁用缓存
按照下面的步骤进行操作:
- 导航到
Services > Web Proxy > Administration。 - 单击 General Proxy Settings 查看下拉菜单。
- 点击 Local Cache Settings。
- 选中 Enable local cache 选项。
- 打开顶部的高级模式按钮。
- Memory Cache size in Megabytes 选项根据需要增加,例如 1024。默认为 256 MB。
- Cache size in Megabytes 选项根据需要增加,例如 1024。默认为 100 MB。
- Maximum object size (MB) 保持默认留空,即 4MB。
- Maximum object size in memory (KB) 保持留空。
Memory cache mode 选项可以保持默认。也可以使用以下选项:
- always:保留最近检索到的对象(默认)
- disk:只有磁盘缓存命中存储在内存中,因此对象必须先缓存在磁盘上,然后再命中第二次,然后才能缓存在内存中。
- network:只有从网络检索到的对象才会存储在内存中。
- Enable Linux Package Cache 选项,如果网络中有多个服务器并且不托管自己的包镜像,可以选中为 Linux 发行版启用包缓存的选项。可以节省 Internet 带宽,同时增加磁盘访问。
- Enable Windows Update Cache 选项,如果没有 WSUS 服务器,则可以选中启用或禁用 Windows 更新缓存的选项。
- 单击 Apply 激活设置。

注意:因为默认不创建缓存,所以必须停止并重新启动代理服务,以确保正确创建缓存。
5. 配置认证方式
要修改 OPNsense 中代理服务的身份验证方法,可以按照以下步骤操作:
- 导航到
Services > Web Proxy > Administration。 - 单击 Forward Proxy 查看下拉菜单。
- 点击 Authentication Settings。
- 在 Authentication method 字段中选择所需的身份验证器。如果不想使用任何身份验证,请单击下面的 Clear All 按钮。
提示:根据
System > Access > Servers中配置的身份验证服务器,可以选择以下一个或多个选项:
- 本地用户数据库
- Radius
- 基于时间的一次性密码
- 不进行身份验证(将此字段留空)
- 如果需要,可以设置强制本地组来限制制对选定(本地)组中的用户的访问。
- 可以根据需要填写身份验证提示。它将显示在身份验证请求窗口中。
- 将身份验证 TTL(小时)设置为 8。将指定代理服务器假定外部验证的用户名和密码组合有效的时间(以小时为单位)。当 TTL 过期时,将提示用户再次输入凭据。
- 可以将身份验证进程保留为默认值。将控制身份验证器进程的总数。
- 单击 Apply 激活设置。

6. 启用 FTP 代理
在 OPNsense 中启用 FTP 代理服务,按照以下步骤操作:
- 导航到
Services > Web Proxy > Administration。 - 单击 Forward Proxy 查看下拉菜单。
- 点击 FTP Proxy Settings。
- 在 FTP 代理接口字段中选择一个或多个接口,例如 LAN 或 GUESTNET。
- 可以更改默认的 FTP 代理端口,默认为 2121。
- 可以勾选启用透明模式,将目标端口 21 的所有请求转发到代理服务器,无需任何额外配置。
- 点击 Apply 激活设置。

注意:FTP 代理仅在启用代理服务器的情况下才能工作。此外,代理仅适用于未加密的 FTP 流量。
7. 定义访问控制列表
在 OPNsense 中为代理服务定义访问控制列表,按照以下步骤操作:
- 导航到
Services > Web Proxy > Administration。 - 单击 Forward Proxy 查看下拉菜单。
- 点击 Access Control Lists。
- 点击 advanced mode toggle button。
- 在允许的子网输入要允许访问代理服务器的子网。默认情况下允许代理接口。
- 添加不受限制的 IP 地址。对于这些 IP 地址,不应用身份验证和黑名单。
- 可以在禁止的主机 IP 地址字段中输入要拒绝访问代理服务器的 IP 地址。
- 可以将域添加到白名单中,这样它们就不会被代理服务器阻止,例如
unharmful.com。 - 可以将域添加到黑名单中,它们将被代理服务器阻止,例如
harmful.com。

- 可以设置 Block browser/user-agents 来阻止特定浏览器。例如,“Mozilla” 将阻止 “所有基于 Mozilla 的浏览器”,而 “(.) Macintosh(.) Firefox/36.0” 将阻止 “Macintosh 版本的 Firefox 修订版 36.0”。下图的设置阻止了具有严重安全漏洞的从 6 到 10 的 MS Internet Explorer 浏览器。
- 可以设置 Block specific MIME type reply 以根据服务器的 MIME 类型回复的内容来阻止 HTTP 回复,例如图像、文本、HTML、flash、音乐、MPEG 等。例如,输入 “video/Flv” 将阻止 Youtube flash 视频内容,并且 “application/x-javascript” 会阻止 “javascript”。
- 可以在 Google GSuite restricted 字段中输入允许使用 Google GSuite 的域。所有不属于此域的帐户都将被禁止使用。
- 可以将 YouTube Filter 字段设置为 Moderate 或 Strict 使用 Youtube 限制。
- 可以添加允许的目标 TCP 端口。
- 可以添加允许的 SSL 端口。
- 单击 Apply 激活设置。

提示:可以使用正则表达式、逗号或按 Enter 键来创建新项目。“mydomain.com” 匹配 “ .mydomain.com”、“https?://( [a-zA-Z] ).mydomain” 和 “http(s)://textONLY.mydomain. ”;
“.gif$” 匹配 ” .gif” 但不匹配 ” .giftest”;” [0-9] .gif$” 匹配 “123.gif” 但不匹配 “test.gif”。
8. 定义远程访问控制列表
在代理服务器中定义远程访问控制列表,按照以下步骤操作:
- 导航到
Services > Web Proxy > Administration。 - 单击 Remote Access Control Lists。
- 点击右下角的 + 按钮添加远程黑名单。

- 选中 enabled 选项。
- 输入一个唯一的文件名来存储新的黑名单,例如
StevenBlackListPorn。 - 输入要从中检索黑名单的 URL,例如:
https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn-social/hosts。 - 输入一个描述来说明该黑名单,例如
StevenBlackList for social, fake news, gambling, and porn sites。 - 其他选项可以保留为默认值。

- 单击 Save 存储设置。
- 单击 Download ACLs & Apply 获取并激活代理中新添加的远程黑名单。

提示:下载远程黑名单后,可以通过单击带有笔图标的编辑按钮来编辑远程 ACL。可以选择要使用的类别。它们用于基于类别的 Web 过滤。
9. 定义防火墙规则以防止客户端绕过代理服务器
必须添加防火墙规则以确保没有人可以绕过代理。由于所有客户端都必须通过运行在端口 3128 上的 OPNsense 代理服务器访问 Internet,因此必须阻止发送到 80/443 端口的所有 HTTP(S) 请求。可以通过以下四个主要步骤来阻止用户绕过代理服务器:
- 添加防火墙规则阻止端口 80 上的出站 HTTP 流量。
- 添加防火墙规则阻止端口 443 上的出站 HTTPS 流量。
- 将新创建的规则移动到防火墙规则列表的顶部。
- 激活新的防火墙规则。
(1) 添加防火墙规则,阻止 80 端口
添加防火墙规则阻止端口 80 上的出站 HTTP 流量,防止客户端绕过代理服务器,可以按照以下步骤操作:
- 导航至
Firewall > Rules。 - 点击代理绑定的接口,如 LAN。
- 单击 + 按钮添加防火墙规则。
- 将动作设置为 Block。
- 将接口设置为代理绑定到的接口,如 LAN。
- 将协议设置为 TCP/UDP。
- 将源设置为 LAN net。

- 将目标端口范围设置为 HTTP。
- 选中记录此规则处理的数据包选项来启用日志记录。
- 输入 Block Proxy Bypass 类别字段。
- 输入描述说明:Block HTTP Bypass。
- 其他设置保留为默认设置。
- 单击 Save 按钮保存设置。

(2) 添加防火墙规则,阻止 443 端口
可以按照以下步骤操作:
- 在规则列表页面,在前面创建的阻止 80 端口出站的规则的右侧,单击 Clone 按钮,打开一个新的防火墙规则编辑页面。
- 将目标端口范围设置为 HTTPS。
- 将描述字段更改为 Block HTTPS Bypass。
- 其他设置保留为默认设置。
- 单击 Save 按钮保存设置。
(3) 将新建的规则移至防火墙规则列表顶部
必须将创建的两个防火墙规则移到列表顶部,以便客户端的 HTTP(S) 请求与它们匹配并被阻止。

(4) 激活新的防火墙规则
点击页面右上角的 Apply Changes 按钮。
10. 配置 Windows 客户端或浏览器
按照以下步骤设置 Windows 客户端中的代理,让客户端通过代理服务器访问网络:
- 右键单击 Windows 10 PC 任务栏上的网络图标,打开网络和 Internet 设置。或打开 chrome 浏览器,找到
Settings > Advanced > System > Open your computer’s proxy settings选项。


- 点击代理。
- 在使用代理服务器选项,手动输入代理地址和端口。
- 在地址字段中输入代理服务器 IP 地址,如 10.10.10.1。
- 在端口字段中输入在上一节中设置的代理服务器端口号,如 3128。
- 单击 Save 激活设置。

代理服务器和客户端配置已完成。现在,可以测试设置。
11. 测试代理配置
按照以下步骤测试代理配置:
- 在客户的 PC 上打开浏览器。如果在代理设置中启用了身份验证,这将弹出一个类似于下图的用户身份验证对话框。

- 尝试通过浏览器连接打开
http://wizhumpgyros.com/。由于该 URL 存在于远程 ACL 添加到代理服务器的 StevenBlack 列表中,因此会被阻止。

- 导航到
Service > Web Proxy > Access Log,将会看到访问被阻止的信息。

启用 Web 过滤
OPNsense 通过利用内置代理和免费或商业黑名单之一执行基于类别的 Web 过滤。在本节中,我们将使用 Shalla 的黑名单,它是按类别组织的 URL 列表的集合,旨在与 SquidGuard 或 Dansguardian 等 URL 过滤器一起使用。它们可以免费用于个人和商业目的。
提示:也可以使用图卢兹大学的 Fabrice Prigent 的 UT1“网络分类列表”。在知识共享许可下可以免费使用。
其他流行的网络过滤列表可以在 https://github.com/maravento/blackweb 找到。
可以通过以下两个主要步骤在 OPNsense 代理服务中启用 Web 过滤:
- 配置远程访问控制列表
- 配置 Web 类别
提示:假设已经按照上一节中的说明在 OPNsense 中配置了基本缓存代理。
配置远程访问控制列表
要在代理服务器中定义远程访问控制列表,可以按照以下步骤操作:
- 导航到
Services > Web Proxy > Administration。 - 单击 Remote Access Control Lists 选项卡。
- 点击右下角的 + 图标按钮添加远程黑名单。
- 选中 enabled 选项。
- 输入一个唯一的文件名来存储新的黑名单,例如
ShallaBlackList。 - 输入要从中检索黑名单的 URL,例如:
http://www.shallalist.de/Downloads/shallalist.tar.gz。 - 输入描述说明,如
ShallaBlackList for category-based web filtering。 - 其他选项保留为默认值。

- 单击 Save 存储设置。
- 单击 Download ACLs & Apply,获取并激活代理中新添加的远程黑名单。

配置网页分类
下载远程黑名单后,可以按照以下步骤选择要使用的网页类别:
- 单击远程访问控制列表页面中新添加的黑名单旁边带有笔图标的编辑按钮。
- 默认情况下,在类别字段中选择所有 Web 类别进行过滤。可以取消选中任何类别来允许用户根据需要访问它们。

- 单击 Save 以存储新设置。
- 再次单击 Download ACLs,下载并重建仅包含所选类别的列表。
测试配置
我们假设在上一步中选择了要阻止的广告类别。现在可以按照以下步骤测试代理配置:
- 在客户的 PC 上打开浏览器。
- 尝试通过浏览器打开
trafficcenter.com,由于该 URL 在远程 ACL Shalla 的黑名单中,因此会被阻止。

- 导航到
Service > Web Proxy > Access Log,将会看到访问被阻止的信息。

启用透明 SSL 模式
可以将 OPNsense 代理服务器配置为以透明模式运行。这样客户端浏览器就不需要为网络代理进行任何配置。所有网络流量都通过网络地址转换自动路由到代理。
在本节中,我们将介绍如何在 OPNsense 防火墙中配置 HTTP 和 HTTPS(SSL 碰撞)透明代理模式。
注意:使用透明 HTTPS 代理可能很危险,并且可能会让你所使用的服务的限制,例如电子商务,因为透明 SSL/HTTPS 代理模式利用了一种称为中间人的方法。如果对自己的能力有信心,请仅配置和使用透明模式。如果配置错误,防火墙的安全防御可能会被严重削弱而不是加强。
通过以下 5 个主要步骤在 OPNsense 代理服务中启用透明 SSL 模式:
- 为透明 SSL 创建证书颁发机构
- 禁用代理服务器的身份验证
- 启用透明 HTTP 和 SSL 模式
- 配置非 SSL 碰撞
- 为 HTTP(S) 添加 NAT 防火墙规则
- 配置代理客户端
提示:假设已经按照第一部分中的说明在 OPNsense 中配置了基本缓存代理。
下面简要说明在 OPNsense 代理中启用透明 SSL 模式的每个主要步骤。
创建证书颁发机构
在代理服务器中启用透明 SSL 模式之前,如果没有内部证书颁发机构,则需要创建一个内部证书颁发机构。
禁用代理认证
在透明模式下操作时,无法使用代理身份验证。由于浏览器不知道正在使用代理,因此无法响应代理身份验证请求。要更改 OPNsense 中代理服务的身份验证方法,可以按照以下步骤操作:
- 导航到
Services > Web Proxy > Administration。 - 单击 Forward Proxy 查看下拉菜单。
- 点击 Authentication Settings。
- 单击身份验证方法字段中的 Clear All 链接清除何身份验证方法。
启用透明 HTTP 和 SSL 模式
按照下面的后续步骤启用透明 HTTP 模式:
- 导航到
Services > Web Proxy > Administration。 - 单击 Forward Proxy 选项卡,找到 General Forward Settings。
- 选中启用透明 HTTP 代理选项。
- 选中启用 SSL 检查选项。
- 单击 Apply 按钮应用设置。

配置非 SSL 碰撞
为确保已知站点不会被碰撞并保留其原始安全层,需要按照以下步骤将它们添加到 SSL 非碰撞站点字段,包括所有子域:
- 导航到
Services > Web Proxy > Administration。 - 单击 Forward Proxy 选项卡,找到 General Forward Settings。
- 将域输入 SSL 非碰撞站点,然后按 Enter。
提示:要包含所有子域,必须以.开头,例如:.paypal.com、.google.com、.amazon.com、.hsbc.com。
注意:确保在此字段中包含提供个人或登录信息的所有银行网站和网站。
为 HTTP(S) 添加 NAT 防火墙规则
按照以下步骤为 HTTP(S) 添加 NAT 防火墙规则:
- 导航到
Services > Web Proxy > Administration。 - 单击 Forward Proxy 选项卡,找到 General Forward Settings。
- 单击启用透明 HTTP 代理选项左侧的 (i) 图标。
- 单击添加新防火墙规则链接,会转到
Firewall > NAT > Port Forward设置页面。


- 单击 Save 按钮。
- 导航到
Services > Web Proxy > Administration。 - 单击 Forward Proxy 选项卡,找到 General Forward Settings。
- 单击启用 SSL 检查选项左侧的 (i) 图标。
- 单击添加新防火墙规则链接,会转到
Firewall > NAT > Port Forward设置页面。


- 单击 Save 按钮。
- 单击 Apply Changes 激活设置。

配置代理客户端
由于浏览器不信任防火墙的内部 CA,访问的每个 SSL 站点,都会收到一条警告消息,例如 Your connection isn’t private. Attackers might be trying to steal your information NET::ERR_CERT_AUTHORITY_INVALID。

要解决此问题,必须在客户端操作系统中添加 CA 证书作为受信任的根 CA 证书。可以按以下步骤将其导入 Windows 10 PC 并将其设置为受信任的根 CA 证书:
- OPNsense Web UI 中导航至
System > Trust > Authorities。 - 单击下载图标导出 CA 证书。

- 将 CA 证书复制到客户端 PC,本示例为 Windows 10 PC。
- 可以使用 Windows 10 PC 中的 MMC 工具将 CA 证书导入为受信任的根 CA 证书。在搜索栏中键入
mmc并按 Enter 键运行 Microsoft Management Control。 - 单击 File 菜单链接并选择 Add/Remove Snap-in。

- 现在在可用的管理单元下,单击证书,然后单击添加。证书管理单元允许为自己、服务或计算机浏览证书存储的内容。
- 单击确定。

- 在下一个对话框中,选择计算机帐户,然后单击下一步。

- 选择本地计算机并单击完成。

- 现在,回到 MMC,在控制台树中,双击 Certificates,然后右键单击 Trusted Root Certification Authorities Store。在所有任务下,选择导入。这将打开证书导入向导。


- 单击 Next 按钮。
- 浏览并选择要导入的 CA 证书,然后单击 Next 按钮。

- 点击下一步。

- 单击 Finish 按钮完成证书导入。导入操作成功完成后,会出现一个对话框。


- 单击确定。

至此,配置全部完成。
觉得内容不错?我要