本示例网络拓扑如下:
配置流程:添加隧道→添加远程端点→分配接口→添加规则→添加网关→添加静态路由→添加策略路由→测试。
防火墙A配置(pfSense)
添加隧道
在防火墙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.2/24
- 点击保存
- 点击“应用更改”
添加规则
导航到防火墙>规则策略,在WireGuard接口上添加any to any的规则,如下图所示:
在对应WAN接口上,添加允许WireGuard默认端口或自定义端口通行的防火墙规则,协议选UDP,如下图所示:
在新添加的WG接口上,添加一条any to any的规则 ,如下图所示:
防火墙B配(OPNsense)
添加隧道
在防火墙B上,导航到VPN>WireGuard>本地,单击下面的“+”添加本地隧道,接口公钥、私钥不用填写,保存后自动生成。这里的公钥与防火墙A的远程端点公钥必须一致。
填写完成后点击保存,如下图所示:
添加对端(远程端点)
点击应用后,转到VPN>WireGuard>端点,单击下面的“+”添加远程端点,公钥从防火墙A本地隧道上复制,允许IP输入0.0.0.0/0,你也可以根据自己的子网和WG设置填写网络地址,端点地址为防火墙A的wan接口地址,端口采用默认值或自定义值。
填写完成后如下图所示:
分配接口
分配WG接口并填写IPv4地址:10.10.10.2/24。
导航到接口>分配,找到wg开头的接口名称点击添加。
打开添加的接口,启用并输入描述名称。
在IP地址栏,输入IPv4地址,本示例为10.10.10.3/24。
添加规则
添加三条防火墙规则,保证WireGuard的数据流量正常通行。第一条,在WireGuard接口上添加any to any的规则:
第二条,在对应WAN接口上,添加允许WireGuard默认端口或自定义端口通行的防火墙规则,协议选UDP,如下图所示:
第三条,在新添加的WG接口上,添加一条any to any的规则 ,如下图所示:
至此,两个防火墙上WireGuard VPN站点到站点的配置完成了。下图是两个防火墙连接后的详细信息。
完成上面的步骤后,两端的WireGuard VPN隧道已经打通,在防火墙A上PING防火墙B的WG接口地址(10.10.10.3),是可以连通的,反之也可以。但这时候还不能访问对端的LAN子网,还需要添加WG网关,并填加基于WG接口的静态路由。
静态路由
添加对端网关
在防火墙A上,为WG接口添加远程网关。
导航到路由管理>网关状态,添加网关,IP地址为防火墙B的WG接口地址,这里为10.10.10.3。
添加静态路由
在防火墙A上,导航到路由管理>静态路由,单击添加,新增一条静态路由,目标网络输入防火墙B的LAN子网,网关选上一步新建立的WG网关,如下图所示:
填写并保存后如下图所示:
在防火墙B上,为WG接口添加远程网关。转到系统>网关>单个,在WG接口上添加新网关。注意网关地址填写防火墙A的WG接口地址:10.10.10.2。
转到系统>路由>配置,添加一条静态路由。静态路由目标网络为防火墙A的LAN子网192.168.101.0/24,网关选上一步建立的WG网关。如下图所示:
完成以上步骤后,现在已经可以对远端的子网进行访问了,从防火墙Ping对端的LAN子网地址是可以连通的。
策略路由
如果要从远程端点公网出站访问互联网,可以通过修改LAN接口的默认策略路由来实现。
在防火墙A的lan接口上,修改默认的防火墙规则,将网关修改为WG网关,确保所有的流量通过WG隧道。如下图所示:
测试
一、测试连通性:在防火墙B后面的客户端上ping防火墙A的LAN接口IP,测试连接是否成功。
二、测试策略路由是否生效:在防火墙A后面的电脑终端上,打开浏览器访问网页,检查访问的公网IP是否发生改变,如果显示为防火墙B的公网IP,说明策略路由已生效。
三、测速:用iperf3跑了一下测速,测试带宽为上、下行300M,测试结果如下图: