L2TP

本页介绍 MikroTik RouterOS L2TP 配置,涵盖客户端与服务器设置、认证方式、MTU/MRRU、IPsec 集成以及二层隧道的动态接口管理。

L2TP

本节介绍 L2TP 示例。可使用本节配置 LAC 与 LNS 场景及相关 L2TP 互操作案例。

第二层隧道协议(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 数据包。

支持多链路 PPP(MP),以提供 MRRU(能够传输完整大小的 1500 及更大数据包)以及通过 PPP 链路使用桥接控制协议(BCP)进行桥接,从而允许在 PPP 链路上发送原始以太网帧。这样无需 EoIP 即可建立桥接。网桥应配置管理性 MAC 地址,或包含一个类以太网接口,因为 PPP 链路没有 MAC 地址。

警告

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

快速示例

L2TP 服务器

在服务器侧启用 L2TP 服务器,并为特定用户创建 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 客户端

本示例配置用户名为 "MT-User"、密码为 "StrongPass"、服务器为 192.168.51.3 的 L2TP 客户端:

[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

概述

第二层隧道协议版本 3(L2TPv3)由互联网工程任务组(IETF)的 RFC 3931 定义。它对原始 L2TP 进行了多项改进,允许在 L2TP 中封装二层(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 摘要哈希算法。

匹配 circuit-id 与 cookie

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