WireGuard是一种使用现代加密技术的简单、快速VPN协议。它比IPsec 更快、更简单,同时也是比OpenVPN 性能更高的替代方案。它最初是为Linux内核发布的,现在已跨平台且可广泛部署。
本教程介绍在OPNsense上设置WireGuard服务器,配置一个手机使用的端点,在手机上使用WireGuard客户端导入端点配置,远程连接到OPNsense并路由出站。
使用的防火墙版本为OPNsense 27.1.2。
在配置WirtGuard之前,请先按正常步骤配置好防火墙,确保客户端能正常访问网络。
配置服务器
进入“VPN > WireGuard”页面,点击“实例”标签,点击添加按钮添加一个WireGuard服务器,设置如下图所示:
选中启用实例选项,为实例输入一个名称。单击“公钥”旁边的齿轮图标可为WireGuard 服务器生成新的公钥/私钥。WireGuard的默认“监听端口”是51820,也可以指定为其他端口。“隧道地址”,输入网络地址(不能与防火墙的任何其他地址相同,如LAN网络),例如192.168.4.1/24。WireGuard 接口地址为192.168.4.1,网络将位于该1192.168.4.2-192.168.4.254范围内。连接到服务器的所有端点、客户端地址都在该范围内。因为还未创建任何端点,端点选项留空即可。如果不想让客户端通过OPNsense路由出站,可以选中禁用路由选项。设置完成,单击“保存”按钮。
添加端点
创建完WireGuard 服务器实例后,为要连接到WireGuard VPN的设备生成端点配置。OPNsense包含一个端点生成器,添加端点非常容易。
点击“端点成器”选项卡,新建一个端点。配置内容如下图所示:
“实例”选中前面创建的服务器。“端点”输入OPNsense的FQDN:端口(它指向防火墙的公共 WAN IP 地址),或IP:端口。“名称”输入端点使用的设备或用户名。“公钥/私钥”自动生成。生成器会自动为客户端“地址”选择下一个可用的 IP 地址,例如192.168.4.2/32,你也可以输入网络范围内的任何可用 IP 地址。“允许的IP”默认为0.0.0.0/0,::/0,这意味着所有网络流量都可以通过 WireGuard 网络进行隧道传输。如果需要通过WireGuard VPN传输所有端点的流量,可以将“DNS 服务器”选项设置为192.168.4.1,以便它可以使用 WireGuard 的接口作为 DNS 服务器。
现在已经拥有完整了 WireGuard端点配置。
在单击选中按钮来保存端点配置之前,先使用手机客户端的WireGuard程序来扫描右侧的二码维,导入WireGuard端点配置。
配置客户端(iOS 示例)
在手机上打开 WireGuard 程序,单击“添加隧道”按钮。
然后单击“扫描二维码”,扫描网页上的二维码,导入端点配置。
为端点输入一个名称,例如“Home VPN”,完成后单击“保存”。
保存配置
配置完WireGuard客户端后,现在可以单击带有复选标记的按钮来保存端点配置。屏幕会刷新显示下一个端点的配置信息,方便让你快速创建其他端点。在“实例”页面上,单击刷新图标可以看到列出的新生成的端点。
启用服务
配置了服务器和客户端端点后,可以启用WireGuard 服务器。单击“启用 WireGuard”复选框,然后单击“应用”按钮保存更改。
分配接口
从技术上来说,创建WireGuard接口不是必须的,但强烈推荐它。创建WireGuard接口最大的好处是它会自动创建必要的出站NAT 规则,免去了手动设置出站的过程。
转到“接口 > 分配”。选择“wg0”接口。输入“描述”信息,单击“添加”按钮,将该接口添加到接口列表中。
转到“接口 > [wg]”页面。选中“启用”和“防止接口删除”复选框,然后单击保存即可。不再需要输入其他任何内容。
添加规则
放行WireGuard通信端口
要允许外部客户端访问WireGuard VPN,需要添加WAN放行规则,允许WireGuard通信所使用的端口(51820)通过。
转到“防火墙 > 规则 > WAN”页面,点击“+”按钮添加新的防火墙规则。如下图所示:
“操作”选择“通过”,“协议”选择“UDP”。“源”设置为“any”,“目标”“WAN 地址或防火墙自身”,目标端口设置为WireGuard服务器设置的端口,本示例为默认端口51820。
单击“保存”按钮保存防火墙规则。
允许访问内部网络
WireGuard VPN配置为允许来自客户端设备(例如手机)的外部连接,如果不创建任何防火墙规则,客户端将无法访问网络上的任何内容。如果想让规则保持简单,我们可以在wg接口上创建一个“允许所有”规则,如下图所示:
连接WireGuard
现在打开手机WireGuard客户端,并打开“连接”按钮。在浏览器输入OPNsense防火墙LAN访问地址,检查是否能打开配置页面。浏览网站,检查访问是否正常 。访问IP检查网站,查看IP是否为OPNsense防火墙的公网地址。
在 OPNsense 中,转到“VPN > WireGuard > 状态”页面,可以看到有关已连接用户的信息。