pfSense book之L2TP VPN

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 服务器配置

要使用2TP, 首先我们要导航到VPN > L2TP,选择启用L2TP服务器。

接口

接口设置控制L2TP守护进程将绑定和侦听连接的位置。 这通常是WAN接口接受入站的连接。

IP 地址

开始之前,请确定要为L2TP服务器和客户端使用哪些IP地址,以及现在要支持多少个并发客户端。

服务器地址:远程地址范围之外的未使用IP地址,例如图L2TP 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服务器进行身份验证。 这可用于从Microsoft Active Directory验证L2TP用户以及许多其他支持RADIUS的服务器。如果使用RADIUS,请选中使用RADIUS服务器进行身份验证,并填写RADIUS服务器和共享密钥。 如果第一个RADIUS服务器失败,也可以添加第二个RADIUS服务器。 要使用本地用户数据库进行认证,请不要选中该框。 用户必须手动添加到VPN> L2TP页面的用户选项卡上,除非使用RADIUS。

保存设置启动L2TP服务器

填写上述项目后,点击保存。 这将保存配置并启动L2TP服务器。

配置防火墙规则

导航到防火墙>规则策略,然后单击L2TP VPN选项。 这些规则用来控制来自L2TP客户端的流量。 在添加防火墙规则以允许通信之前,从连接的L2TP客户端发起的所有通信将被阻止。 从LAN发起的到L2TP客户端的流量使用LAN防火墙规则进行控制。 最初,为了测试目的,可能需要允许所有规则,如图L2TP VPN防火墙规则所示,一旦功能已经验证,就可以根据需要限制规则集。

L2TP VPN 防火墙规则

注意:还必须在L2TP所使用的接口上(通常为WAN或IPsec)开放允许1701端口的访问。

添加L2TP用户

将用户添加到内置的L2TP用户系统很简单。 要添加本地用户:

  • 导航到VPN > L2TP,用户选项卡。参照下图进行设置。
  • 单击  添加显示用于添加用户的表单。

  • 输入用户名、密码和确认密码。
  • 可以根据需要输入静态指定的IP。

  • 单击保存,然后将返回用户列表。

如果要编辑已有用户,在列表右侧单击 。要删除已有用户,在列表右则单击

L2TP与Psec

在当前版本的pfSense上,可以为移动客户端配置L2TP / IPsec,但这不是我们推荐的配置。

正如本章开始时所警告的那样,Windows客户端以及strongSwan IPsec守护进程并不总是兼容的,在很多情况下导致失败。 我们强烈建议使用其他解决方案,如IKEv2而不是L2TP / IPsec。

设置Psec

这些设置已经过测试,发现可以与某些客户端一起使用,但其他类似的设置也可以起作用。 如果不能使用,请随意尝试其他加密算法、哈希设置等。

移动客户端选项卡

  • 导航到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 原始”选项卡上找到。