OPNsense用户手册-缓存代理

本文摘要OPNsense 配备了功能齐全的正向缓存(透明)代理。缓存代理通过缓存对频繁请求的网页减少带宽使用并缩短响应时间。访问控制列表可用于用户身份验证和/或(基于类别)Web 过滤器。 功能包括:多接口支持透明模式(包括 SSL/HTTPS)ICAP 支持反病毒/恶意软件引擎HTTP 代理FTP 代理用户认证访问控制列表(对 HTTP(S) 和 FTP 均有效)黑名单基于类别的 Web 过滤可与流量整...

OPNsense 配备了功能齐全的正向缓存(透明)代理。缓存代理通过缓存对频繁请求的网页减少带宽使用并缩短响应时间。访问控制列表可用于用户身份验证和/或(基于类别)Web 过滤器。
功能包括:

  • 多接口支持
  • 透明模式(包括 SSL/HTTPS)
  • ICAP 支持反病毒/恶意软件引擎
  • HTTP 代理
  • FTP 代理
  • 用户认证
  • 访问控制列表(对 HTTP(S) 和 FTP 均有效)
  • 黑名单
  • 基于类别的 Web 过滤
  • 可与流量整形器结合使用

正向缓存代理示意图

认证

用户身份验证可使用 OPNsense 标准和内置验证器完成,包括:

  • LDAP(含 Microsoft Active Directory)
  • Radius
  • 本地用户管理
  • 不进行认证

访问控制

OPNsense 支持全面的访问控制,可基于:

  • 子网
  • 端口
  • MIME 类型
  • 禁止 IP
  • 白名单
  • 黑名单
  • 浏览器/用户代理

流量控制

代理可与流量整形器结合并充分利用其整形功能,此外还有自己的选项:

  • 最大下载量
  • 最大上传量
  • 整体带宽限制
  • 每个主机带宽限制

基于类别的 Web 过滤器

无需额外插件(如 squidGuard),OPNsense 内置基于类别的 Web 过滤支持。主要功能包括:

  • 从远程 URL 获取
  • 支持平面文件列表和基于类别的压缩列表
  • 自动将基于类别的黑名单转换为 squid ACL
  • 内置调度程序保持更新
  • 兼容最受欢迎的黑名单

透明模式

透明模式意味着所有请求都将转移到代理,无需在客户端进行任何配置。透明模式适用于不安全的 HTTP 请求,但对安全(SSL)HTTPS 连接,代理会成为中间人,因为客户端将与代理“对话”,代理将使用客户端需要信任的主密钥对流量进行加密。

虽然我们不鼓励在透明模式下使用 HTTPS,但此功能从 16.7 版本起已发布。

警告:使用透明 HTTPS 代理可能是一种危险的做法,某些服务(如网上银行)可能不允许这种做法。

WPAD 和 PAC

如果无法使用透明代理,OPNsense 仍支持通过 WPAD/PAC 进行自动代理配置。

警告:通过 DNS 的 WPAD 要求 Web 界面在默认 HTTP 端口(TCP/80)上运行,这也是一种安全风险(MITM 攻击)。在这种情况下,应通过代理连接或避免从不受信任的网络配置应用程序。

设置高速缓存代理

代理基本设置

启用/禁用

要启用代理,请转到 “服务” → “Web代理” → “管理”,选中 “启用代理”,单击 “应用”。默认设置将使用基于本地用户数据库的身份验证、在 LAN 接口的端口 3128 上运行。

更改代理接口

若要更改代理绑定的接口(子网),请点击 “正向代理” 选项卡,在 代理接口 字段中添加/删除接口。添加时确保已应用并且标签可见。

更改代理侦听端口

默认端口为 3128,可在 “正向代理” 选项卡中修改 代理端口,然后 应用 更改。

启用缓存

点击 “代理设置” 旁边的箭头展开菜单,选择 “本地缓存设置”

代理缓存设置

选中 启用本地缓存,单击 应用

注意: 由于默认不创建缓存,您需要在 系统 → 诊断 → 服务 下停止并启动服务,以确保正确创建缓存。

高级

在高级设置(表单左上角的模式切换)中,可以更改缓存大小、目录结构和缓存中最大对象尺寸。默认创建一个 100 MB 缓存,最大对象尺寸 4 MB。

变更认证方法

点击 正向代理 选项卡旁边的箭头,选择 认证设置,在 认证方法 字段中选择所需的认证源。若不想使用认证,点击 清除所有

根据在 系统 → 访问 → 服务器 中设置的认证服务器,可以选择:

  • 无身份验证(留空)
  • 本地用户数据库
  • LDAP
  • Radius

FTP 代理

启用 FTP 代理:在 正向代理 下拉菜单中选择 FTP代理设置,在 FTP代理接口 字段中选择一个或多个接口并 应用

注意: FTP 代理仅在代理服务器本身启用时才起作用,且仅适用于非加密的 FTP 流量。

访问控制列表

通过点击 “正向代理” 旁边的箭头并选择 “访问控制列表” 可以设置 ACL。在这里可以:

  • 设置允许的子网(默认允许代理接口)
  • 添加不受限制的 IP 地址(无身份验证、无黑名单)
  • 添加禁止主机 IP 地址(阻止使用代理)
  • 白名单(优先于黑名单)
  • 黑名单(根据正则表达式阻止流量)
警告: 填写标记字段后,请按 Enter 或逗号确认,否则值不会被应用。正确示例如下:

代理标签示例

远程黑名单/广告拦截

使用简单的平面文件屏蔽广告。此处以广告列表为例:
http://pgl.yoyo.org/adservers/serverlist.php?hostformat=nohtml

此列表为简单的平面列表,例如:

101com.com
101order.com
123found.com
180hits.de
180searchassistant.com
1x1rank.com
207.net
247media.com

转到 “服务” → “Web代理” → “管理”,点击 “远程访问控制列表” 选项卡,然后点击表单右下角的 + 添加新列表。

填写信息:

字段说明
启用选中启用/禁用
文件名yoyoads唯一文件名
网址(粘贴 URL)黑名单 URL
类别(留空)用于基于类别的 Web 过滤
描述YoyoAds Blacklist描述说明

(以下截图基于 16.1.4 版本,与最新版可能有差异)

远程黑名单配置

保存更改,然后点击 下载 ACLS 并应用 以启用黑名单/广告拦截。

防火墙规则:无代理绕过

为确保无人绕过代理,需添加防火墙规则。转到 防火墙 → 规则,在 LAN 接口规则顶部添加以下内容(假设 LAN 是客户端和代理所在位置)。

阻止 HTTP 绕过的规则:

字段
操作阻止
接口LAN
协议TCP/UDP
LAN
目标端口范围HTTP
类别阻止代理绕过
描述阻止 HTTP 绕过

保存
还需添加阻止 HTTPS 访问的规则:

字段
操作阻止
接口LAN
协议TCP/UDP
LAN
目标端口范围HTTPS
类别阻止代理绕过
描述阻止 HTTPS 绕过

保存应用更改

防火墙规则示例

配置浏览器 / Firefox

以 Firefox 为例,其他浏览器同理。打开网络设置,按如下方式配置:

Firefox 代理配置

设置 Web 过滤

OPNsense 中基于类别的 Web 过滤通过内置代理和免费或商业黑名单实现。

这里使用 Fabrice Prigent 管理的 Université Toulouse 的 UT1 “网络分类列表”,该列表根据知识共享许可免费提供。
其他常用列表:

本教程假设:

  • 代理使用默认设置/未配置
  • 只需要网页过滤,不需要缓存、身份验证等

第 1 步 – 禁用身份验证

转到 “服务” → “Web代理” → “管理”,点击 正向代理 选项卡旁边的箭头,选择 认证设置,单击 清除所有 以禁用用户认证,然后 应用

第 2 步 – 配置黑名单

点击 “远程访问控制列表” 选项卡,点击右下角的 + 添加新列表,填入以下信息:

字段说明
启用选中启用/禁用
文件名UT1唯一文件名
网址ftp://ftp.ut-capitole.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz黑名单 URL
类别(留空)留空则获取完整列表
描述UT1 web filter描述说明

UT1 黑名单配置

保存更改

第 3 步 – 下载类别

下载 ACL,由于完整列表(大于 19 MB)需转换为 squid ACL,可能需要一段时间。

第 4 步 – 设置类别

点击列表说明旁的铅笔图标打开编辑窗口,此时会显示所有可用类别。

可用类别列表

本示例过滤“广告”和“成人”内容。清除列表并从下拉菜单中选择相应类别:

类别选择下拉

保存更改,再次按 下载 ACL 以下载并重建包含所选类别的列表。这可能需要与上次相近的时间,因为单独的成人部分约为 15 MB。

第 5 步 – 启用代理

转到 “服务” → “Web代理” → “管理”,选中 “启用代理”,单击 应用。代理将绑定到 LAN 并监听端口 3128。
代理启动可能需要一段时间,右上角的播放图标变为红色后,刷新页面,待图标变为绿色即表示加载完成。

第 6 步 – 禁用代理旁路

添加防火墙规则防止绕过代理。进入 防火墙 → 规则,在 LAN 接口顶部添加:

阻止 HTTP 规则:

字段
操作阻止
接口LAN
协议TCP/UDP
LAN
目标端口范围HTTP
类别阻止代理绕过
描述阻止 HTTP 绕过

保存
阻止 HTTPS 规则:

字段
操作阻止
接口LAN
协议TCP/UDP
LAN
目标端口范围HTTPS
类别阻止代理绕过
描述阻止 HTTPS 绕过

保存应用更改

防火墙规则效果

设置透明代理

OPNsense 提供强大的代理,可与基于类别的 Web 过滤及任何支持 ICAP 的反病毒/恶意软件引擎结合。代理可配置为透明模式,客户端浏览器无需手动设置,所有流量通过 NAT 自动转移至代理。

本文介绍基本 HTTP 透明代理以及 HTTPS(SSL bump)透明代理模式。

警告: 透明 SSL/HTTPS 代理模式使用中间人技术,只有完全理解其原理时才应配置。错误配置可能降低安全性。网上银行等服务可能不允许此做法。

第 1 步 – 基本代理设置

要设置透明模式,需先完成基本的代理设置(参考前面章节)。

第 2 步 – 透明 HTTP

转到 服务 → Web代理 → 管理,在 正向代理 选项卡下选择 常规设置,勾选 启用透明 HTTP 代理,然后 应用

第 3 步 – NAT / 防火墙规则

点击 启用透明 HTTP 代理 选项左侧的 (i) 图标,再点击 添加新的防火墙规则(红色部分),即可快速添加 NAT/防火墙规则。

启用透明HTTP代理的防火墙规则提示

默认设置参考:

字段
接口LAN
协议TCP
LAN
源端口范围任意
目标任意
目标端口范围HTTP
重定向目标 IP127.0.0.1
重定向目标端口other / 3128
描述将流量重定向到代理
NAT 回流启用
过滤规则关联添加关联的过滤规则

保持默认值,保存应用更改

第 4 步 – 用于透明 SSL 的 CA

设置透明 SSL/HTTPS 代理前,需要创建证书颁发机构(CA)。转到 系统 → 证书 → 认证 或使用搜索框。

搜索 CA

点击右上角的 添加或导入 CA,创建新 CA。示例数据:

字段
描述名称OPNsense-SSL
方法生成内部证书颁发机构
密钥长度2048 位
摘要算法SHA256
有效期356 天
国家代码NL
州或省Zuid Holland
城市Middelharnis
组织OPNsense
电子邮件[example@domain.com]
通用名称opnsense-SSL-CA

保存

第 5 步 – 透明 SSL

进入 服务 → Web代理 → 管理,在 正向代理 → 常规设置 中,勾选 启用 SSL 检查,将 使用认证的 CA 设置为刚创建的 CA,然后 应用

第 6 步 – 配置非 SSL Bump

这一步极为重要。为确保网上银行等已知站点的安全层不被破坏,需将其所有子域添加到 SSL免检站点 字段。输入时以点(.)开头,包含所有子域,然后按 Enter 接受。例如:.paypal.com 并按 Enter。

注意: 所有需提交个人或登录信息的银行站点都应添加到此字段。如不确定,请重新考虑使用透明 SSL。

第 7 步 – SSL NAT / 防火墙规则

点击 启用 SSL 检查 选项左侧的 (i) 图标,选择 添加新的防火墙规则。默认设置如下:

字段
接口LAN
协议TCP
LAN
源端口范围任意
目标任意
目标端口范围HTTPS
重定向目标 IP127.0.0.1
重定向目标端口other / 3129
描述将流量重定向到代理
NAT 回流启用
过滤规则关联添加关联的过滤规则

确认无误后 保存应用更改

步骤 8 – 配置 OS / 浏览器

由于浏览器不信任代理的 CA,访问每个页面时都会收到安全警告。解决方法是将 CA 证书导入操作系统并设置为受信任。

进入 系统 → 证书 → 认证,点击右侧的导出图标导出 CA 证书。

导出 CA 证书

在操作系统中导入并更改信任设置,以 OSX 为例:

OSX 信任设置

警告: 系统将接受任何使用此 CA 证书签名的页面。只要私钥不被泄露,就是安全的。但若私钥被他人获取,所有流量都可能被解密。

设置 WPAD / PAC

OPNsense 支持生成 PAC 文件,为客户端提供自动代理配置文件。例如,若 Web GUI 运行在 http://192.168.0.1/,则 PAC URL 为 http://192.168.0.1/wpad.dat

在 Firefox 中,可按以下步骤手动使用 PAC 配置代理:

  • 点击菜单图标打开“设置”
  • 向下滚动到“网络代理”,点击“设置”
  • 选择“自动代理配置地址”
  • 输入 PAC 文件的 URL 并点击“确定”
警告: 如果 PAC 文件不可用,浏览器可能无法连接互联网。不推荐在移动设备(如笔记本电脑)上为可能用于家庭办公的员工使用此类配置,此时应使用 WPAD。

配置 PAC

第一步:创建匹配

转到 “服务” → “Web代理” → “配置”,打开“匹配”(在 18.7.6 版本中是 “服务” → “Web代理” → Proxy-Auto-Config)。

PAC 匹配菜单

输入匹配名称和可选说明,然后选择要匹配的内容。

字段说明
名称匹配的唯一名称,供规则调用
描述简短描述
反转反转匹配结果
匹配类型选择匹配的方式

其余字段取决于选择的 匹配类型。例如,匹配“普通主机名”(Plain Hostname)表示域名不带点。若要创建一个 FQDN 匹配,可以反转这个条件:

FQDN 匹配

字段
名称is_fqdn
反转选中
匹配类型Plain Hostname

再创建一个匹配内部域名的例子:

内部域名匹配

字段
名称not_internal
反转选中
匹配类型Hostname matches
主机模式内部域的通配符

第二步:创建代理服务器

切换到 “服务” → “Web代理” → Proxy-Auto-Config → Proxies,添加新的代理服务器。

字段说明
名称代理名称,将在规则视图中显示
描述可选说明
代理类型直接连接(无代理)或选择代理类型
URL除非是直接连接,否则输入代理 URL

假设仅有一个 LAN 和一个 DMZ,且内部连接不走代理。需要创建两个返回值:LAN 代理和无代理。

直接连接(无代理)配置:

直接连接代理配置

字段
名称direct
代理类型Direct Connection
URL(空)

LAN 代理配置:

LAN 代理配置

字段
名称lan_proxy
代理类型proxy
URL代理IP:端口

第三步:创建规则

匹配和代理创建好后,转到 “服务” → “Web代理” → Proxy-Auto-Config → 规则 构建规则。

创建如下规则:

PAC 规则

字段
启用选中
描述(可选)
匹配选择前面创建的两个匹配
加入类型and
匹配类型if
代理lan_proxy

保存后,点击右侧的橙色重载按钮,配置完成。

WPAD

Web 代理自动发现(WPAD)用于通过 DNS 或 DHCP 查找域名的 PAC 文件。

使用 DNS(Unbound)

方式 1:自动配置

在 Unbound DNS 常规设置中,勾选 自动配置 WPAD

WPAD DNS 自动配置

警告: 使用此选项会覆盖 wpad 主机和域名的 TXT 记录,可能影响同一域名的其他 TXT 记录(如 SPF)。

方式 2:手动配置

转到 服务 → Unbound DNS → 覆盖,为 wpad 主机添加新的主机覆盖。

WPAD 手动 DNS 覆盖

字段
主机WPAD
域名你的域名
类型A 或 AAAA
IP能访问 Web 界面的 OPNsense IP 地址
描述(可选)

保存 并应用更改。

警告: 使用 DNS 方式时,OPNsense 必须通过端口 80(HTTP)应答。

使用 DHCP

方式 1:自动配置

在 DHCP 服务器设置中,勾选 WPAD 自动配置选项。

WPAD DHCP 自动配置

系统将使用 系统设置 中配置的域名和 Web 界面端口,主机名为 wpad。若在端口 80 上运行,生成的 URL 为 http://wpad.example.com:80/wpad.dat

方式 2:手动配置

进入 服务 → DHCP → 服务器,选择对应接口,滚动到“其他选项”,添加:

WPAD DHCP 选项

字段
数目252
类型String
用双引号括起来的 PAC 文件 URL

Firefox 配置

打开设置菜单

有两种方式打开设置菜单:

Firefox 菜单入口

或点击 编辑首选项

Firefox 编辑菜单

或直接点击菜单图标,再选择 首选项

Firefox 菜单选项2

配置代理

在设置页面底部找到 网络代理,点击 设置

Firefox 网络代理设置

在新窗口中,勾选 自动检测此网络的代理设置(即使用 WPAD/PAC),点击 确定 完成。

Firefox 代理设置窗口

觉得内容不错?我要

评论 暂无评论
暂无评论,快来抢沙发吧~