WireGuard是一种 VPN 工具,它比其它VPN之类的工具更快、更简单、更精简。在本教程中我们将深入研究如何在pfSense上安装WireGuard。以下教程在pfSense2.6系统上完成。
安装配置WireGuard
1、导航到系统>插件管理>可用插件,找到WireGuard,然后单击右侧的安装按钮进行安装。
2、安装完成后,导航到VPN>WireGuard ,然后在隧道选项卡,点击右下角的添加隧道按钮添加一个新隧道。
3、在隧道配置页面,为隧道输入描述内容,将监听接口设置为51820 ,然后单击生成按钮,自动生成私钥和公钥远程。复制公钥到记事本,在后面的客户端配置上,这里的公钥要填写在”peer”的公钥部分。
4、选择设置选项卡,选中启用WireGuard。然后 保存并应用。
配置WireGuard接口
创建了WireGuard隧道后,还必须创建WireGuard 接口。
1、导航到接口菜单,选择分配。
2、在底部,添加刚刚创建的隧道。
选中接口(本文中为OPT8)进行编辑。
3、启用接口,修改描述内容。将 IPv4 配置类型更改为静态 IPv4。
4、在静态 IPv4 配置中,将 IP地址修改为10.200.0.1/24。也可以使用其他私有网段(只要当前未使用)。将MTU设置为1420,保存并应用接口设置。
5.、返回到WireGuard隧道列表,现在会看到该接口已分配给前面建立的隧道了。
配置防火墙规则
创建两个防火墙规则。一个用于WG_VPN接口,一个用于 WAN(放行51820端口)。
1、导航到防火墙,然后选择规则,然后在WG_VPN(上面的 WireGuard 接口)下,添加一个新规则。
2、 将协议改为Any,输入描述内容,其他默认,然后保存并应用规则。
3、选择WAN接口并添加新的防火墙规则。将地址族保留为IPv4,协议设置为UDP,目标设置为WAN 地址,自定义端口设置为51820。保存并应用新的防火墙规则。
至此,防火墙上的WireGuard配置完成。在完成手机或Windows客户端的配置以后,还需要返回添加远程端点。
WireGuard远程端点配置
现在将创建一个“peer”,它是一个将连接到我们的服务器的客户端。
WireGuard Peer设置有点独特,因为需要从正在设置的远程端点获取公钥。远程端点可以是Windows电脑、Mac/Linux设备,或是Android/iOS移动终端。配置的过程大同小异,下面介绍在Android和Windows的配置方法。
Android配置
Android设备必须安装Wireguard客户端,输入名称并生成公钥/私钥来创建新的WireGuard 隧道。在地址部分,本示例为10.200.0.5/24,这是分配给此客户端的IP地址。确保掩码是24以避免在连接其他设备时遇到问题。设置好DNS服务器,然后复制公钥并保存。
Windows配置
下载Windows Wireguard客户端并打开,添加一个空隧道。 会自动生成公钥和私钥。地址设置为 10.200.0.5/24,这是分配给该客户端的 IP 地址。 确保掩码是24以避免在连接其他设备时遇到问题。填写DNS服务器地址,然后复制公钥并保存。
pfSense端点配置
回到pfSense上,导航到VPN>WireGuard,然后选择端点,点击右下角的添加端点按钮,添加一个远程端点。
隧道选择我们在第一步中创建的WireGuard VPN隧道。输入一个描述说明,然后输入远程端点的公钥。(上面的Android 或Windows 设备上的公钥)。
在允许IP部分,输入在客户端配置中设置的IP地址,确保使用/32的掩码,以包含客户端在连接时使用的IP地址。
如果想通过确保需要公钥和预共享密钥来提高安全性,请可以选择生成预共享密钥。然后,复制它并将其添加到WireGuard客户端配置中。这将要求WireGuard客户端必须包含 pfSense服务器公钥和预共享密钥才能连接。
完成在pfSense添加远程端点以后,我们还必须在客户端设备上修改设置。
Android WireGuard客户端
公钥是pfSense WireGuard隧道上的生成的公钥。如果设置了预共享密钥,请输入预共享密钥。如果没有,可以留空。
端点是防火墙的静态外部IP地址。如果没有静态外部IP地址,可以使用动态DNS主机名。端口是默认的51820。
Windows WireGuard客户端
在Windows上的配置类似。下面是一个示例的配置。
拆分隧道与全时隧道VPN
根据流量方向的不同,可以创建拆分隧道VPN或全时隧道 VPN。
- 拆分隧道VPN:只在尝试访问内部资源时,流量才会通过隧道发送。不通过隧道访问外部网络。
- 全时隧道VPN:所有流量都通过VPN隧道发送。
拆分隧道VPN客户端配置
在允许IP部分,输入希望通过此VPN隧道发送的IP地址。一般是VPN子网(示例为 10.200.0.0/24)和 LAN 子网(方便连接到本地设备),以逗号分隔。这样设置后,在访问外部网部时的公网IP地址不会有变化。
Android配置示例
Windws配置示例
全时隧道VPN客户端配置
如果想通过VPN隧道路由所有流量,请将允许IP设置为 0.0.0.0/0。这会通过VPN隧道路由所有流量。访问外部网络的公网IP会更改为pfSense的WAN接口IP。
Android配置示例
Windws配置示例
连接测试
所有的配置已准备就绪!确保客户端和防火墙网络畅通。现在应该能连接到pfSense lan子网及任意本地资源。如果使用的是拆分隧道 VPN,则访问外网的IP地址不会变化,如果使用的是全时隧道 VPN,则应该与pfSense网络相同。可以通过查询当前访问外部网络的公网IP来进行验证。
在防火墙菜单上,导航到状态>WireGuard,可以查看VPN隧道的连接情况。如果已连接并且握手成功,将会看到一个绿色的握手符号。
如果需要重启WireGuard 服务,导航到状态>服务,找到WireGuard,点击重新启动图标即可。