虚拟专用网络(VPN)可保护公共网络连接,同时将专用网络扩展到公共网络(如 Internet 中)。使用 VPN,您可以为专用网络创建一个覆盖范围极广的安全网络。

公司或组织可以使用此技术连接分支机构和远程用户。
OPNsense 同时支持面向分支机构和远程用户的 VPN 连接。
通过图形用户界面,创建多个分支机构连接到单个站点的安全专用网络变得十分简单。对于远程用户,可以轻松创建和吊销证书,易用的客户端导出程序让客户端配置轻而易举。
支持的 VPN 技术
OPNsense 提供广泛的 VPN 技术,从现代 SSL VPN 到众所周知的 IPsec,以及较老的 L2TP 和 PPTP(仅以插件形式提供)。

集成 VPN 选项
下列集成方案已经包含在 GUI 中,无需安装任何其他软件包或插件:
- IPsec
- OpenVPN(SSL VPN)
IPsec 站点到站点隧道网络设置(示例)
站点到站点 VPN 通过静态公共 IP 地址连接两个位置,允许流量在两个网络之间路由。这最常用于将组织分支机构连接回总部,使分支机构用户能够访问总部网络中的资源。
开始之前
开始配置 IPsec 隧道前,连接的两端都需要安装 OPNsense,且两端的 LAN IP 子网必须唯一(本地网络需与远程网络不同)。
注意:本例中 WAN 连接将使用私有 IP,因此需要在 WAN 接口上关闭“阻止专用网络”的默认阻止规则。请前往 接口 → [WAN] 并取消选中“阻止专用网络” (别忘了保存并应用)。
示例设置
在示例配置中,我们将使用两个 OPNsense 的示意图来模拟站点到站点隧道,配置如下:
站点 A

| 项目 | 值 |
|---|---|
| 主机名 | FW1 |
| WAN IP | 172.10.1.1/24 |
| LAN IP | 192.168.1.1/24 |
| LAN DHCP 范围 | 192.168.1.100 – 192.168.1.200 |
站点 B

| 项目 | 值 |
|---|---|
| 主机名 | FW2 |
| WAN IP | 172.10.2.1/24 |
| LAN 子网 | 192.168.2.0/24 |
| LAN DHCP 范围 | 192.168.2.100 – 192.168.2.200 |
包含 IPsec 隧道的完整网络图

站点 A 和站点 B 防火墙规则
要允许 IPsec 隧道连接,应在站点的 WAN 接口上放行以下协议:
- 协议 ESP
- UDP 500 端口(ISAKMP)
- UDP 4500 端口(NAT-T)

注意:您还可以通过远程主机的源 IP 对流量作进一步限制。
要允许流量到达 LAN 子网,需要向 IPsec 接口添加如下规则:

第 1 步 – 站点 A 第 1 阶段
(在 VPN → IPsec → 隧道设置 下配置)采用如下设置:
常规信息
| 参数 | 值 | 备注 |
|---|---|---|
| 连接方式 | 默认 | 默认为“按需流量” |
| 密钥交换版本 | V2 | 同时支持 V1 和 V2 |
| Internet 协议 | IPv4 | |
| 接口 | WAN | 选择面向互联网的接口 |
| 远程网关 | 172.10.2.1 | 远端 OPNsense 的公网 IP 地址 |
| 描述 | 站点 B |
第 1 阶段提案(认证)
| 参数 | 值 | 备注 |
|---|---|---|
| 认证方法 | Mutual PSK | 使用预共享密钥 |
| 协商模式 | Main | 使用 Main 模式 |
| 我的标识符 | 我的 IP 地址 | |
| 对端标识符 | 对端 IP 地址 | |
| 预共享密钥 | At4aDMOAOub2NwT6gMHA | 随机密钥 |
第 1 阶段提案(算法)
| 参数 | 值 | 备注 |
|---|---|---|
| 加密算法 | AES | 使用 AES/256 |
| 哈希算法 | SHA512 | |
| DH 密钥组 | 2048 | |
| 有效期 | 28800 秒 |
高级选项
| 参数 | 值 | 备注 |
|---|---|---|
| 禁用重新加密 | 不选 | 连接即将到期时重新协商 |
| 禁用重新认证 | 不选 | IKEv2 仅在重新加密时重新验证对端 |
| NAT 穿越 | 禁用 | IKEv2 会始终启用 NAT 穿越 |
| 失效对等体检测 | 不选 |
点击保存设置:

此时您应该看到如下页面:

第 2 步 – 站点 A 第 2 阶段
点击“显示 0 阶段 2 条目”按钮:

您会看到一个空列表:

点击该列表右侧的图标,添加第 2 阶段条目。
常规信息
| 参数 | 值 | 备注 |
|---|---|---|
| 模式 | 隧道 IPv4 | 选择隧道模式 |
| 描述 | Local LAN Site B |
本地网络
| 参数 | 值 | 备注 |
|---|---|---|
| 类型 | LAN 子网 | 路由本地 LAN 子网 |
远程网络
| 参数 | 值 | 备注 |
|---|---|---|
| 类型 | 网络 | 路由远程网络 |
| 地址 | 192.168.2.1/24 | 远程 LAN 子网 |
第 2 阶段提案(SA / 密钥交换)
| 参数 | 值 | 备注 |
|---|---|---|
| 协议 | ESP | 选择 ESP 进行加密 |
| 加密算法 | AES / 256 | |
| 哈希算法 | SHA512 | |
| PFS 密钥组 | 2048 | 非必需,但能增强安全性 |
| 有效期 | 3600 秒 |
点击 保存。
接下来为站点 A 启用 IPsec,请勾选启用选项:

保存,并应用更改:

成功后提示:

站点 A 的配置至此完成。
第 3 步 – 站点 B 第 1 阶段
(在 VPN → IPsec → 隧道设置 下配置)采用如下设置:
常规信息
| 参数 | 值 | 备注 |
|---|---|---|
| 连接方式 | 默认 | 默认为“按需流量” |
| 密钥交换版本 | V2 | 同时支持 V1 和 V2 |
| Internet 协议 | IPv4 | |
| 接口 | WAN | 选择面向互联网的接口 |
| 远程网关 | 172.10.1.1 | 远端 OPNsense 的公网 IP 地址 |
| 描述 | 站点 A |
第 1 阶段提案(认证)
| 参数 | 值 | 备注 |
|---|---|---|
| 认证方法 | Mutual PSK | 使用预共享密钥 |
| 协商模式 | Main | 使用 Main 模式 |
| 我的标识符 | 我的 IP 地址 | |
| 对端标识符 | 对端 IP 地址 | |
| 预共享密钥 | At4aDMOAOub2NwT6gMHA | 随机密钥 |
第 1 阶段提案(算法)
| 参数 | 值 | 备注 |
|---|---|---|
| 加密算法 | AES | 使用 AES/256 |
| 哈希算法 | SHA512 | |
| DH 密钥组 | 2048 | |
| 有效期 | 28800 秒 |
高级选项
| 参数 | 值 | 备注 |
|---|---|---|
| 禁用重新加密 | 不选 | |
| 禁用重新认证 | 不选 | |
| NAT 穿越 | 禁用 | |
| 失效对等体检测 | 不选 |
点击 保存。
此时应看到以下页面:

第 4 步 – 站点 B 第 2 阶段
点击“显示 0 阶段 2 条目”按钮,然后添加第 2 阶段条目。
常规信息
| 参数 | 值 | 备注 |
|---|---|---|
| 模式 | 隧道 IPv4 | |
| 描述 | Local LAN Site A |
本地网络
| 参数 | 值 | 备注 |
|---|---|---|
| 本地网络 | LAN 子网 | 路由本地 LAN 子网 |
远程网络
| 参数 | 值 | 备注 |
|---|---|---|
| 类型 | 网络 | |
| 地址 | 192.168.1.1/24 | 远程 LAN 子网 |
第 2 阶段提案(SA / 密钥交换)
| 参数 | 值 | 备注 |
|---|---|---|
| 协议 | ESP | |
| 加密算法 | AES/256 | |
| 哈希算法 | SHA512 | |
| PFS 密钥组 | 2048 | |
| 有效期 | 3600 秒 |
点击 保存。
为站点 B 启用 IPsec,保存并应用更改。
站点 B 的配置完成。
IPsec 隧道就绪
隧道此时应已建立,并在两个网络间路由。前往 VPN → IPsec → 状态摘要 查看当前状态。点击 (i) 图标可查看第 2 阶段隧道的详细信息:

注意:如果隧道未出现,请尝试在两端重启服务。
故障排除
阶段 1 无法建立
首先检查防火墙规则,确认 WAN 接口已放行正确的端口和协议(ESP、UDP 500 和 UDP 4500)。
检查 IPsec 日志,查看是否有相关错误提示。
最常见的问题是两端设置不一致。两端必须使用相同的 PSK 和加密标准。
阶段 1 正常,但阶段 2 隧道未连接
检查是否正确设置了本地和远程网络。常见错误是填写了远程主机的 IP 地址,而非以 xxx.xxx.xxx.0 结尾的网络地址。
IPsec BINAT
假设公司 A 的本地 LAN 为 10.0.1.0/24,公司 B 的本地 LAN 为 10.0.2.0/24。同时假设其他网络已在使用,例如公司 A 中的 10.0.2.0/24 用于语音,公司 B 中的 10.0.1.0/24 用于访客 WiFi。
因此,我们需要为未使用的网络定义新的第 2 阶段网络,并创建 NAT 条目来访问最终系统。
为了方便,我们使用 192.168.1.0/24 在公司 A 创建第 2 阶段,使用 192.168.2.0/24 在公司 B 创建第 2 阶段。接下来,需要在第 2 阶段的“手动 SPD 条目”字段中添加各自一端的本地 LAN 网段。对于公司 A,添加 10.0.1.0/24;对于公司 B,添加 10.0.2.0/24。这样 NAT 进程就可以与安全策略数据库交互。
最后还必须创建 NAT 条目,例如公司 A 中的客户端 (10.0.1.10) 需要访问 192.168.2.10,但该地址必须在防火墙 B 上重写为 10.0.2.10。
在防火墙 A 上创建如图所示的规则(防火墙 B 上则相反):

使用 OpenVPN 建立 SSL VPN 站点到站点隧道
站点到站点 VPN 通过静态公网 IP 连接两个位置,并允许流量在两个网络间路由。
开始之前
确保连接两端都安装了 OPNsense,且 LAN IP 子网唯一。本例中使用私有 IP 模拟,请务必在 WAN 接口取消勾选“阻止专用网络”。
示例设置
站点 A – 服务器

| 参数 | 值 |
|---|---|
| 主机名 | FW1 |
| WAN IP | 172.10.1.1/16 |
| LAN IP | 192.168.1.1/24 |
| LAN DHCP 范围 | 192.168.1.100 – 192.168.1.200 |
| 隧道网络 | 10.10.0.0/24 |
站点 B – 客户端

| 参数 | 值 |
|---|---|
| 主机名 | FW2 |
| WAN IP | 172.10.2.1/16 |
| LAN 子网 | 192.168.2.0/24 |
| LAN DHCP 范围 | 192.168.2.100 – 192.168.2.200 |
| 隧道网络 | 10.10.0.0/24 |
包含 SSL VPN 隧道的完整网络图

第 1 步 – 添加 SSL 服务器
添加新的 SSL VPN 服务器相对简单,我们首先添加一个使用共享密钥的服务器。
前往 VPN → OpenVPN → Servers,单击右上角的 添加服务器。
本例使用以下设置(其余保持默认):
注意:对于配备 AESNI 的新系统,无需使用 硬件加密 选项,加载 aesni 模块后会自动启用。
| 参数 | 值 |
|---|---|
| 服务器模式 | 点对点(共享密钥) |
| 协议 | UDP |
| 设备模式 | TUN |
| 接口 | WAN |
| 本地端口 | 1194 |
| 描述 | SSL VPN 服务器 |
| 共享密钥 | 保持选中以创建新密钥 |
| 服务器证书 | SSLVPN Server Certificate (CA: SSL VPN CA) |
| DH 参数长度 | 4096 |
| 加密算法 | AES-256-CBC(256 位) |
| 认证摘要算法 | SHA512(512 位) |
| 硬件加密 | 没有硬件加密加速 |
| IPv4 隧道网络 | 10.10.0.0/24 |
| IPv4 本地网络 | 192.168.1.0/24 |
| IPv4 远程网络 | 192.168.2.0/24 |
| 压缩 | 使用自适应压缩启用 |
单击 保存。

第 2 步 – 复制共享密钥
单击新创建的 SSL VPN 服务器旁的铅笔图标,即可看到共享密钥。请复制并妥善保存该密钥。
示例密钥:
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
0960c87c3aafa8f306fe270c1564380b
...
-----END OpenVPN Static key V1-----第 3 步 – 添加服务器防火墙规则
要允许 SSL VPN 客户端连接,需要在 WAN 接口上放行 OpenVPN 服务器端口。若使用多台服务器,则需放行每个对应端口。
本例仅使用一个通过 UDP 1194 端口访问的服务器。

接下来,还需要放行来自 VPN 客户端网络 (192.168.2.0/24) 的流量。本例允许客户端访问本地网络中的所有资源,您也可以根据需要仅放行到特定 IP 的流量。

站点 A 的配置完成。
第 4 步 – 站点 B 客户端配置
现在设置客户端。登录第二个防火墙,前往 VPN → OpenVPN → Clients,单击右上角的 添加客户端。
输入以下内容(其余保留默认):
| 参数 | 值 |
|---|---|
| 服务器模式 | 点对点(共享密钥) |
| 协议 | UDP |
| 设备模式 | TUN |
| 接口 | WAN |
| 服务器主机或地址 | 172.10.1.1 |
| 服务器端口 | 1194 |
| 描述 | SSL VPN 客户端 |
| 共享密钥 | 取消选中,然后粘贴前面复制的共享密钥 |
| 服务器证书 | SSLVPN Server Certificate (CA: SSL VPN CA) |
| DH 参数长度 | 4096 |
| 加密算法 | AES-256-CBC(256 位) |
| 认证摘要算法 | SHA512(512 位) |
| 硬件加密 | 没有硬件加密加速 |
| IPv4 隧道网络 | 10.10.0.0/24 |
| IPv4 远程网络 | 192.168.1.0/24 |
| 压缩 | 使用自适应压缩启用 |
点击 保存。
现在可以在 VPN → OpenVPN → 连接状态 中查看连接状态:

第 5 步 – 客户端防火墙规则配置
要允许来自远程网络的流量,只需在 防火墙 → 规则 的 OpenVPN 选项卡下添加规则。

至此,通过 OpenVPN 建立的 SSL VPN 站点到站点隧道全部配置完成!
觉得内容不错?我要