WireGuard 是一个易于配置、快速且安全的开源 VPN,它采用了最新的加密技术,比 OpenVPN 更先进,可以在多种平台上使用。WireGuard VPN 最初被集成在 pfSense 2.50 中,但由于是 Netgate 委托第三方开发的代码,爆出安全漏洞,被 WireGuard 原作者吐槽,在 pfSense 2.51 发布时删除。在最新的 pfSense 2.52 中,以插件形式提供了基于 WireGuard 原作者为 FreeBSD 开发的 WireGuard 插件。该插件目前还在更新完善当中,功能方面已经完备,性能也已经稳定。要了解该插件的详细信息,可以参阅 在pfSense上安装WireGuard VPN 插件 这篇文章。本文介绍在 pfSense 2.52(当前为 RC 版)上配置 WireGuard VPN 进行站点到站点连接和策略路由的过程。
本示例网络拓扑如下:

配置流程:添加隧道 → 添加远程端点 → 分配接口 → 添加规则 → 添加网关 → 添加静态路由 → 添加策略路由 → 测试。
防火墙A配置
添加隧道
在防火墙 A 上,导航到 VPN > WireGuard,单击添加隧道,填写如下内容,端口可以采用默认值,也可以自定义,接口公钥、私钥点击右侧的自动生成完成。

添加对端(远程端点)
保存后,在页面下方单击添加对端,端点填写防火墙 B 的公网 IP,端口填写后面步骤中防火墙 B 上设置的自定义端口或默认值,公钥可以先不填,待启用防火墙 B 的隧道后再复制过来。允许 IP 输入 0.0.0.0/0,你也可以根据自己的子网和 WG 设置填写网络地址。

完成后如下图所示:

分配接口
首先,修改默认网关,以便在准备就绪之前不会自动选择 WireGuard:
- 导航到 系统 > 路由管理
- 将 默认网关 IPv4 设置为特定网关(例如 WANGW)或组
- 如果该 VPN 也同时承载 IPv6 流量,则以类似方式设置 默认网关 IPv6
- 点击 保存
- 点击 应用更改
接下来分配接口,以方便后面使用策略路由。
- 导航到 接口 > 分配
- 在 可用网络端口 列表中,找到类似 wg0 这样的接口
- 单击 添加 将接口分配为新的 OPT 接口(例如 OPT1)
- 导航到“接口配置”页面,接口 > OPTx
- 选中 启用
- 输入 描述(例如
WG) - IPv4 配置类型,选静态 IPv4
- IPv4 地址,输入
10.10.10.1/24 - 点击 保存
- 点击 应用更改

添加防火墙规则
导航到 防火墙 > 规则策略,在 WireGuard 接口上添加 any to any 的规则,如下图所示:

在对应 WAN 接口上,添加允许 WireGuard 默认端口或自定义端口通行的防火墙规则,协议选 UDP,如下图所示:

在新添加的 WG 接口上,再次添加一条 any to any 的规则,如下图所示:

防火墙B配置
添加隧道
在防火墙 B 上,导航到 VPN > WireGuard,单击添加隧道,填写如下内容,接口公钥、私钥点右侧的自动生成完成。这里的公钥必须与防火墙 A 的远程端点公钥一致。

添加对端(远程端点)
保存后,在页面下方单击添加对端,与防火墙 A 设置类似,如下图所示,公钥从防火墙 A 本地隧道上复制。允许 IP 输入 0.0.0.0/0,你也可以根据自己的子网和 WG 设置填写网络地址。

填写完成后如下图所示:

分配接口与防火墙 A 设置类似,分配 WG 接口并填写 IPv4 地址:10.10.10.2/24,添加对应的三条防火墙规则。
至此,pfSense 防火墙上 WireGuard VPN 站点到站点的配置就完成了。下图是两个防火墙连接后的详细信息。


完成上面的步骤后,两端的 WireGuard VPN 隧道已经打通,在防火墙 A 上 ping 防火墙 B 的 WG 接口地址(10.10.10.2)是可以连通的,反之也可以。但这时候还不能访问对端的 LAN 子网,还需要添加 WG 网关,并填加基于 WG 接口的静态路由。
静态路由
添加对端网关
在防火墙 A 上,为 WG 接口添加远程网关。
导航到 路由管理 > 网关状态,添加网关,IP 地址为对端 WG 接口地址,这里为 10.10.10.2。

添加静态路由
在防火墙 A 上,导航到 路由管理 > 静态路由,单击添加,新增一条静态路由,目标网络输入防火墙 B 的 LAN 子网,网关选上一步新建立的网关,如下图所示:

填写完成后如下所示:

防火墙 B 也进行以上的设置,注意网关地址填写防火墙 A 的 WG 接口地址:10.10.10.1,静态路由目标网络为防火墙 A 的 LAN 子网 192.168.101.0/24。完成以上步骤后,现在已经可以对远端的子网进行访问了,从防火墙 ping 对端的 LAN 子网地址是可以连通的。
策略路由
如果要从远程公网出站访问互联网,可以修改 LAN 接口的默认策略路由。在防火墙 B 的 LAN 接口上,修改默认的防火墙规则,将网关修改为 WG 网关,确保所有的流量通过 WG 隧道。如下图所示:

测试
一、测试隧道的连通性
在防火墙 A 上 ping 防火墙 B 的 LAN 接口和 WG 接口 IP,测试连接是否成功。


二、测试策略路由是否生效
在防火墙 B 后面的电脑终端上,检查访问的公网 IP 是否发生改变。显示为防火墙 A 的公网 IP,就说明策略路由已生效。

三、测速
用 iperf3 跑了一下测速,测试带宽为上、下行 300M,测试结果如下图:

觉得内容不错?我要