第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 原生支持

八、思考

  1. L2TP 单独使用为什么不安全?L2TP over IPsec 如何解决这个问题?
  2. L2TP over IPsec 的完整协议栈包含哪些层次?从外层到内层依次说明。
  3. Client-Initiated 模式中,客户端建立连接的步骤是怎样的?
  4. LNS 使用 Virtual-Template 和地址池的作用是什么?
  5. L2TP over IPsec 和 SSL VPN 相比,各有什么优势和劣势?

下篇预告:第215篇《GRE 隧道与 Overlay 网络》——通用路由封装(GRE)的原理和应用,作为 Overlay 网络的基础技术。