pfSense 可以充当 L2TP VPN 服务器。L2TP 纯粹是一种隧道协议,不提供自己的加密,因此它通常与其他一些加密技术(如 IPsec)结合使用。
注意:pfSense 支持 L2TP / IPsec,但在许多常见情况下,某些客户端将无法正常工作。最常见的问题是 NAT 后面的 Windows 客户端,在这种情况下,Windows 客户端和 strongSwan IPsec 守护进程不完全兼容,会导致无法连接。在这些情况下,推荐使用 IKEv2。在国内,运营商大部分已屏蔽公网 L2TP 所使用的 1701 端口,如果要使用 VPN,建议用 OpenVPN。
L2TP 安全提醒
L2TP 本身没有加密,所以它不适用于对安全要求较高的网络连接。
L2TP 和防火墙规则
默认情况下,在启用 L2TP 服务器时,防火墙不会在所选接口自动添加允许访问 1701 端口的规则,防火墙规则必须添加到 L2TP 通信将进入的任何接口,通常是公网接口,包含默认网关或 IPsec。
L2TP 和多 WAN
L2TP 使用 UDP 端口 1701,由于 L2TP 依赖于 UDP,因此使用任何不是默认网关的广域网,服务器可能会遇到问题。
L2TP 服务器配置
要使用 L2TP,首先导航到 VPN > L2TP,选择启用 L2TP 服务器。
接口
接口设置控制 L2TP 守护进程将绑定和侦听连接的位置。通常是 WAN 接口接受入站连接。
IP 地址
开始之前,请确定要为 L2TP 服务器和客户端使用哪些 IP 地址,以及现在要支持多少个并发客户端。
- 服务器地址:远程地址范围之外的未使用 IP 地址,例如
10.3.177.1。 - 远程地址范围:通常是一个新的未使用的子网,例如
10.3.177.128/25(.128 到 .255)。这些是连接时分配给客户端的地址。
L2TP 用户数
控制同时允许多少个 L2TP 用户连接,在本例中选择了 13。

DNS 设置
DNS 服务器也可以在需要时为最终用户定义。根据需要手动输入指定地址。
密钥
一些 L2TP 实现需要,类似于组密码或预共享密钥。对此的支持因客户端而异。除非已知是必需的,否则将字段留空。如果需要,输入并确认密码。
认证类型
为用户决定 PAP、CHAP 或 MS-CHAPv2 身份验证。支持可能因客户端而异,也可能依赖于 RADIUS 服务器。基于 CHAP 的类型更安全,但 PAP 得到更广泛的兼容。
用户可以从本地用户数据库或通过外部 RADIUS 服务器进行身份验证。如果使用 RADIUS,请选中“使用 RADIUS 服务器进行身份验证”,并填写 RADIUS 服务器和共享密钥。如果第一个 RADIUS 服务器失败,也可以添加第二个 RADIUS 服务器。要使用本地用户数据库进行认证,请不要选中该框。用户必须手动添加到 VPN > L2TP 页面的用户选项卡上,除非使用 RADIUS。
保存设置启动 L2TP 服务器
填写上述项目后,点击保存。这将保存配置并启动 L2TP 服务器。
配置防火墙规则
导航到 防火墙 > 规则策略,然后单击 L2TP VPN 选项。这些规则用来控制来自 L2TP 客户端的流量。在添加防火墙规则以允许通信之前,从连接的 L2TP 客户端发起的所有通信将被阻止。从 LAN 发起的到 L2TP 客户端的流量使用 LAN 防火墙规则进行控制。最初,为了测试目的,可能需要允许所有规则,一旦功能已经验证,就可以根据需要限制规则集。

注意:还必须在 L2TP 所使用的接口上(通常为 WAN 或 IPsec)开放允许 1701 端口的访问。
添加 L2TP 用户
将用户添加到内置的 L2TP 用户系统很简单。要添加本地用户:
- 导航到 VPN > L2TP,用户选项卡。参照下图进行设置。
单击
添加,显示用于添加用户的表单。
- 输入用户名、密码和确认密码。
可以根据需要输入静态指定的 IP。

- 单击保存,然后将返回用户列表。
如果要编辑已有用户,在列表右侧单击
(编辑)或
(删除)。
L2TP 与 IPsec
在当前版本的 pfSense 上,可以为移动客户端配置 L2TP / IPsec,但这不是我们推荐的配置。
正如本章开始时所警告的那样,Windows 客户端以及 strongSwan IPsec 守护进程并不总是兼容的,在很多情况下导致失败。我们强烈建议使用其他解决方案,如 IKEv2 而不是 L2TP / IPsec。
设置 IPsec
这些设置已经过测试,发现可以与某些客户端一起使用,但其他类似的设置也可以起作用。如果不能使用,请随意尝试其他加密算法、哈希设置等。
移动客户端选项卡
- 导航到 VPN > IPsec,移动客户端选项卡
- 设置启用移动客户端支持
- 设置用户认证为本地数据库(必须选中)
- 不选“向客户提供一个虚拟的IP地址”
- 不选“向客户提供可访问的网络列表”
- 单击保存
阶段 1
- 如果出现,单击顶部的创建阶段1按钮,或编辑现有的移动 IPsec 阶段1
- 如果没有阶段1,并且没有出现“创建阶段1”按钮,请导航回“移动客户端”选项卡并在该处单击。
- 设置密钥交换版本为 v1
- 输入合适的描述说明
- 设置认证方法 Mutual PSK
- 设置协商模式为主要
- 设置我的标示符为 我的 IP 地址
- 设置加密算法为 AES 256
- 设置哈希算法为 SHA1
- 设置 DH 密钥组为 14 (2048 bit)。注意:iOS 和其他平台可以使用 DH 密钥组 2 来代替。
- 设置有效期为 28800
- 不选“禁用预授密钥”
- 设置 NAT 穿越为自动
- 设置启用 DPD,设置延迟 10 秒,最大故障重试 5 次。
- 单击保存
阶段 2
- 在显示移动 IPsec 阶段 2 列表单击
显示阶段 2 条目 - 单击
添加阶段 2 条目,或单击
编辑一个已有条目 - 设置模式为传送
- 填写合适的描述
- 设置协议为 ESP
- 设置加密算法为 AES 128
- 设置哈希算法为 SHA1
- 设置 PFS 密钥组为关
- 设置有效期为 3600
- 单击保存
预共享密钥
连接的预共享密钥(所有客户端都通用)必须以特殊方式进行配置。
- 导航到 VPN > IPsec,预共享密钥选项卡
- 单击
添加一个新的预共享密钥 - 设置标识符为
allusers。注意:allusers名称是 pfSense 使用的一个特殊关键字,用于配置 L2TP / IPsec 运行所需的通配符 PSK。不要使用这个 PSK 的任何其他标识符! - 设置加密类型为 PSK
- 输入一个预共享密钥,如
aaabbbccc,更长、更随机的密码一般会更安全! - 单击保存
- 单击应用更改
IPsec 防火墙规则
防火墙规则对于通过 IPsec 传输来自客户端主机的流量来建立 L2TP 隧道是必要的,并且在 L2TP 内部需要将实际隧道 VPN 流量传递到 VPN 上的系统。要添加 IPsec 规则:
- 导航到 防火墙 > 规则策略,IPsec 选项卡。审查当前的规则。如果有“允许所有”样式规则,则不需要添加其他规则。继续下一个任务。
- 在列表顶部单击
添加一个新的防火墙规则 - 设置协议为 any
- 设置源地址和目标地址都为 any。注意:不必允许所有流量通过,但必须至少允许 L2TP(UDP 端口 1701)到防火墙的 WAN IP 地址的通行。
- 单击保存
- 单击应用更改
DNS 配置
如果要把 DNS 服务器提供给客户端,并且使用了未绑定的 DNS 解析器,则为 L2TP 客户端选择的子网必须添加到其访问列表中。
- 导航到 服务 > DNS 解析器,访问列表选项卡
- 单击
添加一个新的访问列表 - 输入访问列表名称,如
VPN Users - 设置动作为 Allow
- 单击
添加网络 - 在框中输入 VPN 客户端子网,如:
10.3.177.128 - 选择适当的掩码,如:
25 - 单击保存
- 单击应用更改
客户端设置
在配置客户端时,有几点需要注意:
- 确保将客户端操作系统配置设置为连接到适当的 VPN 的外部地址。
- 如果客户端具有自动模式,则可能需要强制 VPN 类型为 L2TP / IPsec。
- 客户端认证类型必须与 L2TP 服务器上配置的内容符合(例如 CHAP)。
L2TP 故障排查
本节介绍用户遇到的 L2TP 最常见问题的故障排除步骤。
不能连接
检查是否已将防火墙规则添加到 L2TP 通信进入防火墙的外部接口。还要确保客户端连接到在 L2TP 设置中选择的接口 IP 地址。
已连接到 L2TP,但不能通过流量
确保防火墙规则已添加到 L2TP VPN 接口。
同时确保 VPN 上的远程子网与本地子网不同。当客户端所在的本地子网也是 192.168.1.0/24 时,不可能通过 VPN 到达 192.168.1.0/24 网络,因此流向该子网的流量将永远不会穿越 VPN,因为它在本地网络上。这就是为什么在使用 VPN 时选择一个比较模糊的局域网子网很重要。
连接失败与 Windows 客户端
如果 IPsec 层看起来已经完成,但没有 L2TP 流量通过,那么很可能是 Windows 与 pfSense 上使用的 strongSwan 守护程序之间的已知不兼容性。目前没有已知的解决方法,除了将 Windows 系统从 NAT 后面移出,或者使用不同样式的 VPN(例如 IKEv2)。
L2TP 流量被阻止出站
在某些情况下,例如与 IPsec 结合使用时,L2TP 流量也可能需要通过浮动规则进行特殊处理。在防火墙日志中出站方向上显示为阻止的流量,会显示为 L2TP 服务器接口。如果发生这种情况,请按如下所示添加浮动规则:
- 导航到 防火墙 > 规则策略,浮动选项卡
- 在列表顶部单击
添加一条规则 - 设置动作为通过
- 选中快速
- 接口选择 L2TP VPN
- 设置方向为出
- 设置协议为 TCP
- 根据需要设置源地址/目标地址,或设置为 any
高级选项:
- 设置 TCP 标识为任意标识
- 设置状态类型 Sloppy
L2TP 日志
登录和注销事件的记录保存在 状态 > 系统日志 的“L2TP 登录”下的“VPN”选项卡上。
每个登录和注销都会记录一个时间戳和用户名,每个登录名也将显示分配给 L2TP 客户端的 IP 地址。完整的日志可以在“L2TP 原始”选项卡上找到。
觉得内容不错?我要