L2TP VPN
L2TP VPN
L2TP VPN 简介
L2TP(Layer 2 Tunneling Protocol) VPN 是一种用于承载 PPP 报文的隧道技术,基于 UDP,端口 1701。该技术主要应用在远程办公场景中为出差员工远程访问企业内网资源提供接入服务。
重要
针对 FortiGate,L2TP 相比较 SSL VPN/IPSec VPN,更推荐用户使用 SSL VPN/IPSec VPN,一方面是安全性更高(数据加密),另一方面是性能上 SSL VPN/IPSec VPN 比 L2TP 强得多(SSL VPN/IPSec VPN 可以被 NP 芯片加速,而 L2TP 只能由 CPU 处理)。而且 IPSec VPN 也支持各种系统原生客户端接入。
L2TP 数据报文
L2TP 数据报文分为两种:控制报文和数据报文;
**控制报文:**控制消息用于隧道和会话连接的建立、维护以及传输控制;位于隧道和会话建立过程中。控制消息的传输是可靠传输,并且支持对控制消息的流量控制和拥塞控制;主要的控制消息包括控制报文、会话报文等。

数据报文:用于承载用户的 PPP 连接数据报文,并在隧道上进行传输。数据消息的传输是不可靠传输,若数据报文丢失,不予重传。不支持对数据消息的流量控制和拥塞控制。


L2TP 协议交互过程
建立 L2TP 隧道
SCCRQ(Start-Control-Connection-Request):终端向 FortiGate 发起控制连接请求;
SCCRP(Start-Control-Connection-Reply):FortiGate 接受了终端的连接请求,隧道的建立过程可以继续;
SCCCN(Start-Control-Connection-Connected):对 SCCRP 的回应,完成隧道的建立。
建立 L2TP 会话
ICRQ(Incoming-Call-Request):终端请求在已经建立的隧道中建立会话;
ICRP(Incoming-Call-Reply):FortiGate 回应 ICRQ,表示 ICRQ 成功,也会在 ICRP 中标识 L2TP 会话必要的参数;
ICCN(Incoming-Call-Connected):回应 ICRP,L2TP 会话建立完成。
对用户认证,认证通过,建立 PPP 连接

网络需求
在外移动办公的工作人员需要通过 L2TP VPN 隧道模式拨入到公司内网来对内网主机进行访问。
网络拓扑

配置步骤
配置 FortiGate L2TP VPN
1.基础配置



2.创建用户并将用户加入到用户组


3.配置 L2TP VPN
config vpn l2tp
set status enable
set eip 172.31.1.200
set sip 172.31.1.10
set usrgrp "L2TP_Group"
end3.配置地址对象

4.配置防火墙策略
FortiGate 会自动创建 L2TP 的接口 l2t.root。

第 1 条策略用于客户端 L2TP VPN 拨号后访问内网;第 2 条策略用于客户端 L2TP VPN 拨号后上网。
当客户端 L2TP VPN 拨号成功后,将会使用获取的地址(172.31.1.10-172.31.1.200)访问内部主机,因此内部网络需要增加到 172.31.1.0/24 网段的回程路由指向 FortiGate 或者 可以在策略中开启 NAT,那么源地址将被转换为 FortiGate 接口地址,则不用考虑回程路由。

5.配置路由
将 L2TP 地址池的地址段指向 l2t.root 接口。
config router static
edit 0
set dst 172.31.1.0 255.255.255.0
set device "l2t.root"
next
end配置终端 L2TP VPN
右击本地连接图标,选择“打开网络和 Internet 设置”,选择 VPN。

点击“添加 VPN 连接”,设置 L2TP,然后点击保存。

L2TP VPN 创建完整。

修改注册表
Windows 系统默认使用 L2TP over IPSec 的拨号方式,因此首先会发起 IKE 的协商,并不是纯 L2TP 的协商,需要修改电脑的注册表,让电脑发起纯 L2TP 的协商,而非 IKE 的协商。
重要
修改注册表后需要重启计算机才能生效。
修改方法:
打开注册表编辑器,找到注册表路径
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters下的ProhibitIpSec选项(若没有则在Parameters目录下创建 DWORD (32 位) 值ProhibitIpSec即可)的值修改为 1。也可以通过如下 CMD 命令执行(需要管理员权限)。
reg add "HKLM\SYSTEM\CurrentControlSet\Services\RasMan\Parameters" /v prohibiteIPsec /t REG_DWORD /d 1 /f
L2TP VPN 拨号测试
点击创建的“L2TP_VPN”,点击“连接”。

连接成功。

查看 L2TP_VPN 获取的地址
C:\Users\admin>ipconfig/all 以太网适配器 Ethernet1: 连接特定的 DNS 后缀 . . . . . . . : 描述. . . . . . . . . . . . . . . : Intel(R) 82574L Gigabit Network Connection #2 物理地址. . . . . . . . . . . . . : 00-0C-29-A2-90-EA DHCP 已启用 . . . . . . . . . . . : 否 自动配置已启用. . . . . . . . . . : 是 本地链接 IPv6 地址. . . . . . . . : fe80::65c4:a7eb:1876:83ac%5(首选) IPv4 地址 . . . . . . . . . . . . : 10.1.1.5(首选) 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 10.1.1.1 DHCPv6 IAID . . . . . . . . . . . : 402656297 DHCPv6 客户端 DUID . . . . . . . : 00-01-00-01-29-1C-CC-4A-00-0C-29-A2-90-E0 DNS 服务器 . . . . . . . . . . . : 114.114.114.114 TCPIP 上的 NetBIOS . . . . . . . : 已启用 PPP 适配器 L2TP_VPN: 连接特定的 DNS 后缀 . . . . . . . : 描述. . . . . . . . . . . . . . . : L2TP_VPN 物理地址. . . . . . . . . . . . . : DHCP 已启用 . . . . . . . . . . . : 否 自动配置已启用. . . . . . . . . . : 是 IPv4 地址 . . . . . . . . . . . . : 172.31.1.12(首选) 子网掩码 . . . . . . . . . . . . : 255.255.255.255 默认网关. . . . . . . . . . . . . : 0.0.0.0 DNS 服务器 . . . . . . . . . . . : 114.114.114.114 TCPIP 上的 NetBIOS . . . . . . . : 已启用查看终端路由表。
C:\Users\admin>route print =========================================================================== 接口列表 6...00 09 0f fe 00 01 ......Fortinet Virtual Ethernet Adapter (NDIS 6.30) 10...00 0c 29 a2 90 e0 ......Intel(R) 82574L Gigabit Network Connection 5...00 0c 29 a2 90 ea ......Intel(R) 82574L Gigabit Network Connection #2 46...........................L2TP_VPN 1...........................Software Loopback Interface 1 =========================================================================== IPv4 路由表 =========================================================================== 活动路由: 网络目标 网络掩码 网关 接口 跃点数 0.0.0.0 0.0.0.0 10.1.1.1 10.1.1.5 4506 0.0.0.0 0.0.0.0 在链路上 172.31.1.12 26 10.1.1.0 255.255.255.0 在链路上 10.1.1.5 4506 10.1.1.5 255.255.255.255 在链路上 10.1.1.5 4506 10.1.1.255 255.255.255.255 在链路上 10.1.1.5 4506 127.0.0.0 255.0.0.0 在链路上 127.0.0.1 4556 127.0.0.1 255.255.255.255 在链路上 127.0.0.1 4556 127.255.255.255 255.255.255.255 在链路上 127.0.0.1 4556 172.31.1.12 255.255.255.255 在链路上 172.31.1.12 281访问内部主机。
C:\Users\admin>ping 192.168.2.10 正在 Ping 192.168.2.10 具有 32 字节的数据: 来自 192.168.2.10 的回复: 字节=32 时间<1ms TTL=63 来自 192.168.2.10 的回复: 字节=32 时间<1ms TTL=63 来自 192.168.2.10 的回复: 字节=32 时间<1ms TTL=63 来自 192.168.2.10 的回复: 字节=32 时间<1ms TTL=63 192.168.2.10 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失), 往返行程的估计时间(以毫秒为单位): 最短 = 0ms,最长 = 0ms,平均 = 0ms访问 Internet

注意事项
如果 FortiGate 上配置的 L2TP 用户为 LDAP 认证用户,则需要确保客户端 L2TP 连接的认证方法为 PAP。
重要
LDAP 用户身份验证支持 PPTP、L2TP、IPsec VPN 和防火墙身份验证,但由于点对点协议的限制,只支持 PAP(Packet Authentication Protocol)。
由于 Windows 本机客户端默认使用 MSCHAP 或 MSCHAPv2,LDAP 认证场景下,您需要将其更改为 PAP。
在 Windows 系统中按照下图方式打开网络连接面板。

在弹出的网络连接面板中,右键点击已创建的 L2TP 连接,然后点击属性按钮。

在弹出的 L2TP 连接属性中,选择“安全”面板,然后勾选“允许使用这些协议”,勾选“未加密的密码 (PAP)(H)”,取消勾选 CHAP 和 MS - CHAP v2,然后点击确定按钮。之后即可正常连接 L2TP。
