第214篇:L2TP over IPsec 远程拨号
关键词
L2TP、L2TP over IPsec、远程拨号、VPDN、NAS-Initiated、Client-Initiated、PPP 会话
一、L2TP 概述
1.1 什么是 L2TP
L2TP(Layer 2 Tunneling Protocol)是一种二层隧道协议,可以在 IP 网络上建立 PPP 会话,实现远程接入:
L2TP 的典型应用:远程员工拨号接入公司内网
L2TP 网关 内网 IP 分配 认证 + 计费
L2TP 的特点: - 支持 PPP 会话(可分配内网 IP) - 支持多协议(IPv4、IPv6、IPX) - 天然支持认证 + 计费(RADIUS 联动) - 但 L2TP 本身不提供加密!
1.2 L2TP vs IPsec
L2TP 单独使用的问题——没有加密:
原始 PPP 报文: | L2TP 头 | PPP 头 | IP 头 | 数据 | ← 明文,可被窃听 | | --- | --- | --- | --- | --- |
解决方案:L2TP over IPsec 先用 IPsec 加密整个 L2TP 报文 再通过 Internet 传输
| 外层 IP (公网) | ESP 头 | L2TP 头 | PPP 头 | IP 头 (私网) | 数据 | ESP 尾 |
|---|---|---|---|---|---|---|
| ├──────── 已加密 ────────────────────────┤ |
二、L2TP over IPsec 协议栈
2.1 两种实施模式
| 模式 | 说明 | 适用场景 |
|---|---|---|
| Client-Initiated | 客户端发起 L2TP 连接,再启用 IPsec | 远程员工拨号 |
| NAS-Initiated | NAS 或 LAC 发起 L2TP 隧道 | 运营商 VPDN |
2.2 Client-Initiated 工作流程
远程员工连接公司内网的完整流程:
远程客户端 LNS(公司网关)
│ │
│ 1. Internet 连接 │
│───────────────── 公网 ──────────→│
│ │
│ 2. IKE 阶段 1 (主模式/野蛮模式) │
│─────────────────────────────────→│
│←─────────────────────────────────│
│ │
│ 3. IKE 阶段 2 (IPsec SA) │
│─────────────────────────────────→│
│←─────────────────────────────────│
│ IPsec 隧道建立完成 │
│ │
│ 4. L2TP 隧道 (已受 IPsec 保护) │
│─────────────────────────────────→│
│←─────────────────────────────────│
│ │
│ 5. PPP 协商 (认证) │
│ LCP → CHAP → IPCP │
│─────────────────────────────────→│
│←─────────────────────────────────│
│ │
│ 6. 获取内网 IP 地址 │
│ 如 10.0.0.100 │
│ │
│ 7. 开始访问内网资源 │
│───────────────── 加密通道 ───────→│
│ │
2.3 协议封装层次
Remote Client VPN Gateway
│ │
│ ┌─ IP 数据包 ──────────────────┐ │
│ │ S=10.0.0.100 D=10.0.1.1 │ │
│ │ ┌─ PPP ─────────────────┐ │ │
│ │ │ ┌─ L2TP ─────────┐ │ │ │
│ │ │ │ ┌─ UDP 1701 ─┐ │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ └──┴──┴──┴────────────┴─┴───┘ │ │
│ ┌─ ESP (IPsec) ─────────────────┐ │ │
│ │ 加密整个 L2TP 报文 │ │ │
│ └────────────────────────────────┘ │ │
│ ┌─ 外层 IP ──────────────────────┐│ │
│ │ S=公网IP D=202.1.1.1 ││ │
│ └────────────────────────────────┘│ │
└─────────────────────────────────────┘ │
三、LNS(L2TP Network Server)配置
3.1 LNS 基础配置
# LNS 侧配置(总部网关)
# 1. 创建虚拟 PPP 模板
interface Virtual-Template1
ppp authentication-mode chap
ip address unnumbered interface LoopBack0 # 借用地址
remote address pool vpn_pool # 给客户端分配 IP
!
# 2. 地址池
ip pool vpn_pool
gateway 10.0.100.1 255.255.255.0
section 0 10.0.100.10 10.0.100.200
# 3. L2TP 组配置
l2tp-group 1
tunnel name LNS
allow l2tp virtual-template 1 # 允许 L2TP 会话
!
# 隧道认证
tunnel authentication
tunnel password Huawei@123
!
# LAC 对等体(允许所有,或指定 IP)
allow l2tp lac-ip any
# 4. IPsec 保护 L2TP 流量
ipsec policy L2TP_POLICY 10 isakmp
security acl 3001
ike-peer REMOTE_USER
proposal L2TP_PROPOSAL
!
acl number 3001
rule 5 permit udp source any destination any eq 1701 # 保护 L2TP 端口
!
# 应用到 L2TP 使用的接口
interface GigabitEthernet0/0/0
ipsec policy L2TP_POLICY
3.2 认证联动(RADIUS)
# LNS 与 RADIUS 联动(集中认证计费)
radius-server group VPN_RADIUS
radius-server authentication 10.0.0.10 1812
radius-server accounting 10.0.0.10 1813
!
aaa
authentication-scheme vpn_auth
authentication-mode radius local
accounting-scheme vpn_acct
accounting-mode radius
!
domain vpn_users
authentication-scheme vpn_auth
accounting-scheme vpn_acct
radius-server group VPN_RADIUS
!
l2tp-group 1
domain vpn_users # 关联认证域
四、远程客户端配置
4.1 Windows 客户端配置
Windows 10/11 原生支持 L2TP over IPsec:
控制面板 → 网络和共享中心 → 设置新的连接 → 连接到工作区
配置:
Internet 地址: 202.1.1.1 (LNS 公网地址)
目标名称: 公司 VPN
VPN 类型: L2TP/IPsec
预共享密钥: Huawei@123
用户名: remote_user
密码: ******
连接后:
获取内网 IP: 10.0.100.10
可以访问 10.0.0.0/8 内网资源
4.2 移动端配置
iOS / Android 配置步骤:
1. 设置 → VPN → 添加 VPN 配置
2. 类型: L2TP
3. 描述: 公司 VPN
4. 服务器: 202.1.1.1
5. 账户: remote_user
6. 密码: ******
7. 密钥: Huawei@123(IPsec 预共享密钥)
8. 发送所有流量: 开启
9. 保存并连接
4.3 Linux 客户端(strongSwan + xl2tpd)
# /etc/ipsec.conf
conn company_vpn
auto=add
keyexchange=ikev1
type=transport # L2TP 通常使用传输模式
left=%defaultroute
leftprotoport=17/1701
right=202.1.1.1
rightprotoport=17/1701
ike=aes256-sha256-modp2048
esp=aes256-sha256-modp2048
ikelifetime=24h
lifetime=8h
# /etc/xl2tpd/xl2tpd.conf
[lac company_vpn]
lns = 202.1.1.1
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client
length bit = yes
# /etc/ppp/options.l2tpd.client
ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-chap
name remote_user
password Huawei@123
五、故障排查
5.1 常见问题
问题类型 排查命令
──────────────────────────────────────────
IPsec 隧道未建立 display ike sa, display ipsec sa
L2TP 隧道未建立 display l2tp tunnel
PPP 认证失败 display aaa online-fail-record
内网 IP 未分配 display ip pool vpn_pool used
内网路由不通 tracert -n 从客户端到内网服务器
# L2TP 隧道状态
display l2tp tunnel
LocalTunnelID RemoteTunnelID RemoteLNS Status
100 200 202.1.1.1 Established
# PPP 会话状态
display pppoe-client session summary
Interface Protocol State
Virtual-PPP1 L2TP UP
5.2 抓包诊断
# 在 LNS 侧抓取 L2TP over IPsec 流量
# 确认 ESP 包正常收发
# IPsec 阶段:看到 ESP 报文
# L2TP 阶段:UDP 1701 端口(在 IPsec 保护内部)
# 常见抓包过滤:
# ESP 报文:没有端口号,协议号 50
# L2TP 控制消息:UDP 1701
六、L2TP over IPsec vs SSL VPN
对比维度 L2TP over IPsec SSL VPN
────────────────────────────────────────────────────────
客户端 系统内置 + 手动配置 浏览器即可
加密强度 高(IPsec ESP) 高(TLS)
NAT 穿透 较差(需 NAT-T) 天然支持
应用兼容性 所有 IP 应用 TCP 为主
配置复杂度 中-高 低
用户认证 PPP + RADIUS Portal + 双因子
移动设备 iOS/Android 原生支持 浏览器访问
适用场景 公司配发设备的员工 任意设备、合作伙伴
七、总结
| 知识点 | 核心要点 |
|---|---|
| L2TP | 二层隧道,支持 PPP 会话和 IP 分配 |
| L2TP over IPsec | L2TP + IPsec ESP 加密,业界标准方案 |
| 协议层次 | 外层 IP → ESP → UDP 1701 → L2TP → PPP → 内层 IP |
| LNS | L2TP 服务器,终结 PPP 会话 |
| Client-Initiated | 客户端主动发起,远程办公场景 |
| 认证联动 | PPP-CHAP + RADIUS 集中认证计费 |
| 客户端支持 | Windows/macOS/iOS/Android/Linux 原生支持 |
八、思考
- L2TP 单独使用为什么不安全?L2TP over IPsec 如何解决这个问题?
- L2TP over IPsec 的完整协议栈包含哪些层次?从外层到内层依次说明。
- Client-Initiated 模式中,客户端建立连接的步骤是怎样的?
- LNS 使用 Virtual-Template 和地址池的作用是什么?
- L2TP over IPsec 和 SSL VPN 相比,各有什么优势和劣势?
下篇预告:第215篇《GRE 隧道与 Overlay 网络》——通用路由封装(GRE)的原理和应用,作为 Overlay 网络的基础技术。