L2TP

本页介绍 MikroTik RouterOS L2TP 配置,涵盖客户端和服务器设置,包括认证方法、MTU/MRRU 设置、IPsec 集成以及针对 Layer Two Tunneling Protocol 场景的动态接口管理。

L2TP

本节涵盖 L2TP 示例。使用它可配置 LAC 和 LNS 场景以及相关的 L2TP 互操作案例。

Layer Two Tunneling Protocol "L2TP" 扩展了 PPP 模型,允许 L2 和 PPP 端点位于由分组交换网络互连的不同设备上。L2TP 为每个 L2TP 连接包含 PPP 认证和计费。每个连接的完整认证和计费可以通过 RADIUS 客户端完成,也可以在本地完成。L2TP 流量在控制数据包和数据数据包中都使用 UDP 协议。UDP 端口 1701 仅用于链路建立,后续流量使用任意可用的 UDP 端口(可能与 1701 不同)。这意味着,只要允许 UDP 流量通过防火墙或路由器,L2TP 就可以与大多数防火墙和路由器(即使有 NAT)配合使用。L2TP 标准定义于 RFC 2661。L2TPv3 支持在 7.1 版本中加入。它支持 IPv4 和 IPv6。

简介

L2TP 可以像其他任何隧道协议一样使用,可选择是否加密。L2TP 标准指出,加密数据最安全的方式是 L2TP over IPsec(这是 Microsoft L2TP 客户端的默认模式),因为特定隧道的所有 L2TP 控制数据包和数据数据包对 IPsec 系统而言都表现为同质的 UDP/IP 数据包。

支持 Multilink PPP (MP),以提供 MRRU(传输完整 1500 及更大数据包的能力)以及通过 PPP 链路的桥接(使用 Bridge Control Protocol (BCP)),后者允许通过 PPP 链路发送原始以太网帧。这样无需 EoIP 即可设置桥接。网桥应具有管理性设置的 MAC 地址,或其中包含一个类以太网接口,因为 PPP 链路没有 MAC 地址。

警告

L2TP 不为隧道流量提供加密机制。可以使用 IPsec 增加额外的安全层。

快速示例

L2TP 服务器

在服务器端,启用 L2TP-server 并为特定用户创建 PPP 配置文件:

[admin@MikroTik] > /interface/l2tp-server/server/set enabled=yes
[admin@MikroTik] > /ppp/secret/add local-address=10.0.0.2 name=MT-User password=StrongPass profile=default-encryption remote-address=10.0.0.1 service=l2tp

L2TP 客户端

此示例配置一个 L2TP 客户端,用户名为 "MT-User",密码为 "StrongPass",服务器为 192.168.51.3:

[admin@MikroTik] > /interface/l2tp-client \
add connect-to=192.168.51.3 disabled=no name=MT-User password=StrongPass user=MT-User
[admin@MikroTik] > /interface/l2tp-client/print 
Flags: X - disabled, R - running 
0 R name="MT-User" max-mtu=1450 max-mru=1450 mrru=disabled connect-to=192.168.51.3 user="MT-User" 
password="StrongPass" profile=default-encryption keepalive-timeout=60 use-ipsec=no ipsec-secret="" 
allow-fast-path=no add-default-route=no dial-on-demand=no allow=pap,chap,mschap1,mschap2

L2TP Ether

概述

Layer 2 Tunnel Protocol Version 3 (L2TPv3) 由 Internet Engineering Task Force (IETF) 的 RFC 3931 定义。它对原始 L2TP 引入了多项改进,允许在 L2TP 内封装二层 (L2) 有效载荷,以用于 L2 虚拟专用网络 (VPN)。L2TP Ether 隧道在两个端点之间传输原始以太网帧(一种以太网伪线,Pseudowire-Type 5)。

要建立 L2TP Ether 隧道,必须在客户端侧创建 L2TP Ether 接口,同时在远端(服务器)侧启用 L2TP 服务器。正确配置两侧后,它们之间会自动创建一个动态接口,在 IP 网络上形成透明的二层连接。

L2TP Ether 可以通过 UDP 封装(l2tp-proto-version=l2tpv3-udp,默认值),也可以直接通过 IP 封装(l2tp-proto-version=l2tpv3-ip)。支持 IPv4 和 IPv6 覆盖网络;connect-to 可接受 IPv4 或 IPv6 地址。

拓扑和角色

L2TP Ether 隧道有两种不同的角色:

  • 主动(客户端)侧 — 你创建一个 /interface/l2tp-ether 条目,并将 connect-to= 指向服务器。此侧发起 L2TPv3 控制连接和以太网会话。
  • 被动(服务器)侧 — 你只需启用 L2TP 服务器(/interface/l2tp-server/server)。当主动侧连接时,RouterOS 会在服务器上自动创建一个动态 l2tp-ether 接口(标志 D);你无需在那里手动配置。

通常你会将两个接口都添加到网桥,以便两个站点共享一个二层域。

配置示例

此示例在两台路由器之间建立一条 L2TP Ether 隧道。

服务器侧(L2TP 服务器)

/interface/l2tp-server/server/set enabled=yes

客户端侧(L2TP Ether 接口)

/interface/l2tp-ether/add connect-to=1.1.1.1 disabled=no

在主动侧验证会话(示例输出):

[admin@MikroTik] > /interface/l2tp-ether/print
Flags: X - disabled, R - running, D - dynamic, u - unmanaged 
 0 R name="l2tp-ether1" mac-address=02:3D:2B:00:00:00 connect-to=1.1.1.1 ...

在被动侧,一旦隧道建立,就会自动出现一个动态接口(标志 D)(示例输出):

[admin@MikroTik] > /interface/l2tp-ether/print
Flags: X - disabled, R - running, D - dynamic, u - unmanaged 
 0 DR name="l2tp-ether1" mac-address=02:3D:2B:00:00:01 connect-to=0.0.0.0 ...

服务器侧会话接受

服务器是否接受传入的以太网会话由 /interface/l2tp-server/server 中的 L2TP 服务器设置控制。完整属性列表请参见 CLI 参考。

设置控制内容
max-sessions服务器上并发 L2TP 会话的最大数量。一旦达到限制,服务器将拒绝新会话。
accept-proto-version接受哪些 L2TP 协议版本(all、l2tpv2、l2tpv3)。
accept-pseudowire-type接受哪些伪线类型(all、ether、ppp)。对于 L2TP Ether 隧道,必须允许 ether。
l2tpv3-ether-interface-list动态以太网伪线端点所附加到的接口列表。
l2tpv3-circuit-id服务器用于传入会话的 L2TPv3 电路标识符。
l2tpv3-cookie-length服务器通告的 L2TPv3 cookie 长度。
l2tpv3-digest-hash服务器使用的 L2TPv3 digest 哈希算法。

匹配 circuit-id 和 cookies

当服务器设置 l2tpv3-circuit-id、l2tpv3-cookie-length 或 l2tpv3-digest-hash 时,客户端侧的 l2tp-ether 条目(circuit-id、cookie-length、digest-hash)需要设置对应的值。如果这些值不一致,即使控制连接已建立,会话也可能失败——请检查两端是否一致。客户端侧属性请参见 L2TP Ether CLI 参考。

验证和故障排查

如果 L2TP 控制连接已建立但以太网会话立即被拆除,即使传输看起来正常,隧道也无法工作。

症状可能原因检查项
日志显示 maximum session count reached,随后出现 CDN(Result-Code=4)且隧道断开达到服务器会话限制时会话被拒绝——这是常见需检查的原因,并非确定诊断确认 /interface/l2tp-server/server 上的 max-sessions 未限制新会话
会话被拒绝,服务器上没有动态接口未接受伪线或协议类型accept-pseudowire-type 应允许 ether;accept-proto-version 应允许 l2tpv3
被动侧没有动态接口接口列表未覆盖隧道端点检查 l2tpv3-ether-interface-list
会话建立但没有流量通过客户端与服务器之间的 circuit-id / cookie-length / digest-hash 不一致比较 l2tp-ether 和 l2tp-server 的设置

随时可以使用 monitor 命令检查活动会话:

/interface/l2tp-ether/monitor l2tp-ether1