pfSense WireGuard VPN站点到站点配置及策略路由的应用

本文摘要WireGuard 是一个易于配置、快速且安全的开源 VPN,它采用了最新的加密技术,比 OpenVPN 更先进,可以在多种平台上使用。WireGuard VPN 最初被集成在 pfSense 2.50 中,但由于是 Netgate 委托第三方开发的代码,爆出安全漏洞,被 WireGuard 原作者吐槽,在 pfSense 2.51 发布时删除。在最新的 pfSense 2.52 中,以插件形式提...

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,单击添加隧道,填写如下内容,端口可以采用默认值,也可以自定义,接口公钥、私钥点击右侧的自动生成完成。

防火墙A添加隧道配置

添加对端(远程端点)

保存后,在页面下方单击添加对端,端点填写防火墙 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接口

添加防火墙规则

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

在WG接口上添加any to any规则

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

WAN接口允许WireGuard端口的防火墙规则

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

再次在WG接口添加any to any规则

防火墙B配置

添加隧道

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

防火墙B添加隧道

添加对端(远程端点)

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

防火墙B添加远程端点

填写完成后如下图所示:

防火墙B隧道配置完成

分配接口与防火墙 A 设置类似,分配 WG 接口并填写 IPv4 地址:10.10.10.2/24,添加对应的三条防火墙规则。

至此,pfSense 防火墙上 WireGuard VPN 站点到站点的配置就完成了。下图是两个防火墙连接后的详细信息。

VPN连接详细信息

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 隧道。如下图所示:

修改LAN规则使用WG网关

测试

一、测试隧道的连通性

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

Ping测试

Ping测试结果2

二、测试策略路由是否生效

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

公网IP变更测试

三、测速

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

iperf3测速结果

觉得内容不错?我要

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