PPP 数据包的第 2 层隧道
第 2 层隧道协议概述
L2TP 在 RFC 2661 第二 层隧道协议 (L2TP) 中定义。
L2TP 有助于以对最终用户和应用程序尽可能透明的方式在干预网络中建立 PPP 数据包的隧道。它使用访问配置文件进行组和个人用户访问,并使用身份验证在每个隧道的两端之间建立安全连接。还支持多链路 PPP 功能。
L2TP 服务仅在以下路由器上受支持:
带 AS PIC 的 M7i 路由器
具有 AS 和多服务 100 PIC 的 M10i 路由器
具有 AS、多服务 100 和多服务 400 PIC 的 M120 路由器
在 MX 系列路由器上,L2TP 访问集中器 (LAC) 和 L2TP 网络服务器 (LNS) 功能仅在 MPC 上受支持;它们在任何服务 PIC 或 MS-DPC 上均不受支持。有关 MPC 对 L2TP 的支持的详细信息,请参阅 MX 系列接口模块参考
有关更多信息,请参阅 L2TP 服务配置概述。
参见
L2TP 服务配置概述
用于配置 L2TP 服务的语句位于以下层次结构级别:
[编辑服务 L2TP 隧道组 group-name]
L2TP 隧道组 语句标识 L2TP 实例或 L2TP 服务器。关联语句指定接受传入隧道和会话的本地网关地址、处理此隧道组中会话数据的自适应服务 (AS) 物理接口卡 (PIC)、对 L2TP 和 PPP 访问配置文件的引用,以及用于配置窗口大小和计时器值的其他属性。
[编辑接口 sp-fpc/pic/port 单位 logical-unit-number 拨号选项]
拨号选项语句包括 l2tp-interface-id 语句和共享/专用标志的配置。接口标识符将用户会话与逻辑接口相关联。会话可以使用共享或专用逻辑接口。要运行路由协议,会话必须使用专用逻辑接口。
[编辑访问配置文件 profile-name 客户端 name L2TP]
隧道配置文件在 [编辑访问权限] 层次结构级别定义。隧道客户端在这些配置文件中使用身份验证、多链路协商和分段以及其他 L2TP 属性进行定义。
[编辑访问配置文件 profile-name 客户端 name PPP]
用户配置文件在 [编辑访问权限] 层次结构级别定义。在这些配置文件中,使用身份验证和其他 PPP 属性定义用户客户端。指定本地身份验证时,将使用这些客户端配置文件。
[编辑访问半径-服务器 address]
在 [编辑访问配置文件profile-name] 层次结构级别配置身份验证顺序半径时,必须在 [编辑访问半径服务器] 层次结构级别配置 RADIUS 服务。
有关在 [edit access] 层次结构级别配置属性的详细信息,请参阅 Junos OS 路由设备管理库。有关 MX 系列路由器上用于订阅者访问的 L2TP LAC 和 LNS 配置的信息,请参阅 Junos 订阅者访问配置指南中的用于订阅者访问的 L2TP 概述。
L2TP 最低配置
要配置 L2TP 服务,必须至少执行以下任务:
使用以下属性在层次结构级别定义
[edit services l2tp]
隧道组:l2tp-access-profile
— L2TP 隧道的配置文件名称。ppp-access-profile
- L2TP 用户的配置文件名称。local-gateway
—L2TP 隧道的地址。service-interface
— L2TP 服务的 AS PIC 接口。(可选)您可以进行配置
traceoptions
以进行调试。
以下示例显示了具有跟踪选项的隧道组的最低配置:
[edit services l2tp] tunnel-group finance-lns-server { l2tp-access-profile westcoast_bldg_1_tunnel; ppp-access-profile westcoast_bldg_1; local-gateway { address 10.21.255.129; } service-interface sp-1/3/0; } traceoptions { flag all; filter { protocol udp; protocol l2tp; protocol ppp; protocol radius; } }
在
[edit interfaces]
层次结构级别:标识 L2TP 隧道数据包进入路由器的物理接口,例如
ge-0/3/0
。使用 为
unit 0 family inet
IP 服务定义配置 AS PIC 接口,并使用 和family inet
dial-options
语句配置另一个逻辑接口。
以下示例显示了 L2TP 的最低接口配置:
[edit interfaces] ge-0/3/0 { unit 0 { family inet { address 10.58.255.129/28; } } } sp-1/3/0 { unit 0 { family inet; } unit 20 { dial-options { l2tp-interface-id test; shared; } family inet; } }
在
[edit access]
层次结构级别:配置隧道配置文件。每个客户端指定一个唯一的 L2TP 接入集中器 (LAC) 名称,其
interface-id
值与 AS PIC 接口单元上配置的值匹配;shared-secret
即 LAC 和 L2TP 网络服务器 (LNS) 之间的身份验证。配置用户配置文件。如果使用 RADIUS 作为身份验证方法,则需要对其进行定义。
使用路由器和 RADIUS 服务器之间共享的 IP 地址、端口和身份验证数据定义 RADIUS 服务器。
注意:当 L2TP 网络服务器 (LNS) 配置 RADIUS 身份验证时,默认行为是接受首选的 RADIUS 分配的 IP 地址。以前,默认行为是接受并安装 IPCP 配置请求数据包的 IP 地址选项中的非零对等方 IP 地址。
或者,您可以为公共属性定义组配置文件,例如
keepalive 0
关闭激活消息。
以下示例显示了 L2TP 的最低配置文件配置:
[edit access] group-profile westcoast_users { ppp { keepalive 0; } } profile westcoast_bldg_1_tunnel { client production { l2tp { interface-id test; shared-secret "$ABC123"; # SECRET-DATA } user-group-profile westcoast_users; } } profile westcoast_bldg_1 { authentication-order radius; } radius-server { 192.168.65.63 { port 1812; secret "$ABC123"; # SECRET-DATA } }
参见
配置 L2TP 隧道组
要在路由器上建立 L2TP 服务,您需要标识 L2TP 隧道组并指定多个值,用于定义在创建隧道时使用的访问配置文件、接口地址和其他属性。要标识隧道组,请在层次结构级别包含 tunnel-group
语句 [edit services l2tp]
。
如果删除隧道组或将其标记为非活动状态,则该隧道组中的所有 L2TP 会话都将终止。如果更改 或 local-gateway address
语句的值 service-interface
,则使用这些设置的所有 L2TP 会话都将终止。如果在层次结构级别更改 [edit services l2tp tunnel-group group-name]
或删除其他语句,则您建立的新隧道将使用更新的值,但现有隧道和会话不受影响。
以下部分说明如何配置 L2TP 隧道组:
为 L2TP 隧道组配置访问配置文件
要验证 L2TP 连接和会话请求,您可以通过在层次结构级别配置profile
[edit access]
语句来设置访问配置文件。您需要配置两种类型的配置文件:
L2TP 隧道访问配置文件,验证对指定本地网关地址的所有 L2TP 连接请求
PPP 访问配置文件,通过建立到本地网关地址的 L2TP 隧道验证所有 PPP 会话请求
有关配置配置文件的详细信息,请参阅 Junos OS 路由设备管理库。 配置文件示例包含在示例:配置 L2TP 服务中。
要将配置文件与隧道组关联,请在层次结构级别包含 l2tp-access-profile
and ppp-access-profile
语句 [edit services l2tp tunnel-group group-name]
:
l2tp-access-profile profile-name; ppp-access-profile profile-name;
配置本地网关地址和 PIC
配置 L2TP 组时,还必须为 L2TP 隧道连接和处理请求的 AS PIC 定义本地地址:
要配置本地网关 IP 地址,请在层次结构级别包含
address
语句[edit services l2tp tunnel-group group-name local-gateway]
:address address;
要配置 AS PIC,请在层次结构级别包含
service-interface
[edit services l2tp tunnel-group group-name]
语句:service-interface sp-fpc/pic/port;
您可以选择指定逻辑单元号以及服务接口。如果指定,该单元将用作表示使用此配置文件协商的 PPP 会话的逻辑接口。
如果更改本地网关地址或服务接口配置,则使用这些设置的所有 L2TP 会话都将终止。
只要 L2TP 会话配置为在出口接口上使用 IQ2 PIC,动态服务等级 (CoS) 功能在 L2TP LNS 会话或带有 ATM VC 的 L2TP 会话上受支持。有关更多信息,请参阅服务等级用户指南(路由器和 EX9200 交换机)。
配置 L2TP 隧道的窗口大小
您可以在 L2TP 隧道的每一端配置数据包处理的最大窗口大小:
接收窗口大小限制服务器处理的并发数据包数。默认情况下,最多为 16 个数据包。要更改窗口大小,请在层次结构级别包含
receive-window
语句[edit services l2tp tunnel-group group-name]
:receive-window packets;
最大发送窗口大小限制另一端的接收窗口大小。信息在接收窗口大小属性-值对中传输。默认情况下,最大为 32 个数据包。要更改窗口大小,请在层次结构级别包含
maximum-send-window
语句[edit services l2tp tunnel-group group-name]
:maximum-send-window packets;
为 L2TP 隧道配置计时器
您可以配置以下计时器值来调节 L2TP 隧道处理:
呼叫间隔 — 如果服务器在指定的时间间隔内未收到任何消息,路由器软件将向隧道的远程对等方发送呼叫消息。默认情况下,间隔长度为 60 秒。如果配置值 0,则不会发送任何呼叫消息。要配置其他值,请在层次结构级别包含
hello-interval
[edit services l2tp tunnel-group group-name]
语句:hello-interval seconds;
重新传输间隔 - 默认情况下,重新传输间隔长度为 30 秒。要配置其他值,请在层次结构级别包含
retransmit-interval
[edit services l2tp tunnel-group group-name]
语句:retransmit-interval seconds;
隧道超时 — 如果服务器无法在指定的时间间隔内通过隧道发送任何数据,则会假定与远程对等方的连接已丢失并删除隧道。默认情况下,间隔长度为 120 秒。要配置其他值,请在层次结构级别包含
tunnel-timeout
[edit services l2tp tunnel-group group-name]
语句:tunnel-timeout seconds;
隐藏 L2TP 隧道的属性值对
建立 L2TP 隧道并对连接进行身份验证后,将通过属性-值对信息进行编码。默认情况下,此信息不会隐藏。要在知道共享密钥后隐藏属性-值对,请在层次结构级别包含 hide-avps
语句 [edit services l2tp tunnel-group group-name]
:
hide-avps;
配置 L2TP 隧道活动的系统日志记录
您可以指定用于控制如何为 L2TP 服务生成系统日志消息的属性。
要配置接口范围的默认系统日志记录值,请在层次结构级别包含 syslog
语句 [edit services l2tp tunnel-group group-name]
:
syslog { host hostname { services severity-level; facility-override facility-name; log-prefix prefix-value; } }
host
使用指定系统日志目标服务器的主机名或 IP 地址配置语句。主机名local
将系统日志消息定向到路由引擎。对于外部系统日志服务器,主机名必须可从初始数据包(触发会话建立)传递到的同一路由实例访问。只能指定一个系统日志记录主机名。
表 1 列出了可以在层次结构级别的 [edit services l2tp tunnel-group group-name syslog host hostname]
配置语句中指定的严重性级别。从 emergency
到的级别按从最高严重性(对功能影响最大)到最低的 info
顺序排列。
严重性级别 |
描述 |
---|---|
|
包括所有严重性级别 |
|
系统崩溃或导致路由器停止运行的其他情况 |
|
需要立即更正的情况,例如系统数据库损坏 |
|
严重情况,如硬盘错误 |
|
错误条件的后果通常不如紧急、警报和严重级别的错误严重 |
|
需要监控的条件 |
|
不是错误但可能需要特殊处理的情况 |
|
感兴趣的事件或非错误条件 |
建议在正常操作期间将 error
系统日志记录严重性级别设置为。要监视 PIC 资源的使用情况,请将级别 warning
设置为 。要在检测到入侵检测系统错误时收集有关入侵攻击的信息,请将特定服务集的级别设置为 。 notice
要调试配置或记录网络地址转换 (NAT) 事件,请将级别 info
设置为 。
有关系统日志消息的详细信息,请参阅 系统日志资源管理器。
要将一个特定设施代码用于对指定系统日志主机的所有日志记录,请在层次结构级别包含 facility-override
以下语句 [edit services l2tp tunnel-group group-name syslog host hostname]
:
facility-override facility-name;
支持的功能包括:、 、 、 user
、 kernel
authorization
ftp
daemon
和 local0
到 。local7
要为此系统日志主机的所有日志记录指定文本前缀,请在层次结构级别包含 log-prefix
以下语句 [edit services l2tp tunnel-group group-name syslog host hostname]
:
log-prefix prefix-text;
为提供 L2TP 服务的逻辑接口配置标识符
您只能在 M7i、M10i、M120 和 MX 系列路由器上的自适应服务接口上配置 L2TP 服务。您必须将逻辑接口配置为专用或共享。如果逻辑接口是专用的,则一次只能表示一个会话。一个共享逻辑接口可以有多个会话。
要配置逻辑接口,请在层次结构级别包含 l2tp-interface-id
语句 [edit interfaces interface-name unit logical-unit-number dial-options]
:
l2tp-interface-id name; (dedicated | shared);
l2tp-interface-id
必须在层次结构级别复制[edit access profile name]
在逻辑接口上配置的名称:
对于特定于用户的标识符,请在层次结构级别包含
l2tp-interface-id
[edit access profile name ppp]
语句。对于组标识符,请在层次结构级别包含
l2tp-interface-id
语句[edit access profile name l2tp]
。
您可以使用相同的接口标识符配置多个逻辑接口,以用作多个用户的池。有关配置访问配置文件的详细信息,请参阅 Junos OS 路由设备管理库。
如果删除在逻辑接口上配置的 dial-options
语句设置,则在该接口上运行的所有 L2TP 会话都将终止。
示例:在共享逻辑接口上配置多链路 PPP
共享或专用逻辑接口支持多链路 PPP。以下示例可用于在单个共享接口上配置多个多链路捆绑包:
interfaces { sp-1/3/0 { traceoptions { flag all; } unit 0 { family inet; } unit 20 { dial-options { l2tp-interface-id test; shared; } family inet; } } } access { profile t { client test { l2tp { interface-id test; multilink; shared-secret "$ABC123"; # SECRET-DATA } } } profile u { authentication-order radius; } radius-server { 192.168.65.63 { port 1812; secret "$ABC123"; # SECRET-DATA } } } services { l2tp { tunnel-group 1 { l2tp-access-profile t; ppp-access-profile u; local-gateway { address 10.70.1.1; } service-interface sp-1/3/0; } traceoptions { flag all; debug-level packet-dump; filter { protocol l2tp; protocol ppp; protocol radius; } } } }
用于 L2TP 服务的 AS PIC 冗余
L2TP 服务支持 AS PIC 冗余。要配置冗余,请指定冗余服务 PIC (rsp
) 接口,其中主 AS PIC 处于活动状态,辅助 AS PIC 处于备用状态。如果主 AS PIC 发生故障,辅助 PIC 将变为活动状态,并且所有服务处理都将传输到它。如果主 AS PIC 已恢复,它将保持待机状态,并且不会抢占辅助 AS PIC;您需要手动将服务还原到主 PIC。要确定哪个 PIC 当前处于活动状态,请发出 show interfaces redundancy
命令。
在 L2TP 上,唯一支持的服务选项是 热备用,其中一个备份 PIC 支持多个工作 PIC。无法保证恢复时间,因为在检测到故障后,必须在备份 PIC 上完全还原配置。隧道和会话在切换时被拆除,需要分别由 LAC 和 PPP 客户端重新启动。但是,尽管需要重新建立协议状态,但配置将保留并在新的活动 PIC 上可用。
与其他支持热备用的 AS PIC 服务一样,您可以发出命令以 request interfaces (revert | switchover)
在主 L2TP 接口和辅助 L2TP 接口之间手动切换。
有关更多信息,请参阅 配置 AS 或多服务 PIC 冗余。有关示例配置,请参阅 示例:配置 L2TP 服务。有关操作模式命令的信息,请参阅 CLI 资源管理器。
示例:配置 L2TP 服务
为并发隧道会话配置具有多个组和用户配置文件以及逻辑接口池的 L2TP:
[edit access] address-pool customer_a { address 10.1.1.1/32; } address-pool customer_b { address-range low 10.2.2.1 high 10.2.3.2; } group-profile sunnyvale_users { ppp { framed-pool customer_a; idle-timeout 15; primary-dns 192.168.65.1; secondary-dns 192.168.65.2; primary-wins 192.168.65.3; secondary-wins 192.168.65.4; interface-id west; } } group-profile eastcoast_users { ppp { framed-pool customer_b; idle-timeout 20; primary-dns 192.168.65.5; secondary-dns 192.168.65.6; primary-wins 192.168.65.7; secondary-wins 192.168.65.8; interface-id east; } } group-profile sunnyvale_tunnel { l2tp { maximum-sessions-per-tunnel 100; interface-id west_shared; } } group-profile east_tunnel { l2tp { maximum-sessions-per-tunnel 125; interface-id east_shared; } } profile sunnyvale_bldg_1 { client white { chap-secret "$ABC123"; # SECRET-DATA ppp { idle-timeout 22; primary-dns 192.168.65.1; framed-ip-address 10.12.12.12/32; interface-id east; } group-profile sunnyvale_users; } client blue { chap-secret "$ABC123"; # SECRET-DATA group-profile sunnyvale_users; } authentication-order password; } profile sunnyvale_bldg_1_tunnel { client test { l2tp { shared-secret "$ABC123"; # SECRET-DATA maximum-sessions-per-tunnel 75; interface-id west_shared; ppp-authentication chap; } group-profile sunnyvale_tunnel; } client production { l2tp { shared-secret "$ABC123"; ppp-authentication chap; } group-profile sunnyvale_tunnel; } } [edit services] l2tp { tunnel-group finance-lns-server { l2tp-access-profile sunnyvale_bldg_1_tunnel; ppp-access-profile sunnyvale_bldg_1; local-gateway { address 10.1.117.3; } service-interface sp-1/3/0; receive-window 1500; maximum-send-window 1200; retransmit-interval 5; hello-interval 15; tunnel-timeout 55; } traceoptions { flag all; } } [edit interfaces sp-1/3/0] unit0 { family inet; } unit 10 { dial-options { l2tp-interface-id foo-user; dedicated; } family inet; } unit 11 { dial-options { l2tp-interface-id east; dedicated; } family inet; } unit 12 { dial-options { l2tp-interface-id east; dedicated; } family inet; } unit 21 { dial-options { l2tp-interface-id west; dedicated; } family inet; } unit 30 { dial-options { l2tp-interface-id west_shared; shared; } family inet; } unit 40 { dial-options { l2tp-interface-id east_shared; shared; } family inet; }
配置 L2TP 冗余:
interfaces { rsp0 { redundancy-options { primary sp-0/0/0; secondary sp-1/3/0; } unit 0 { family inet; } unit 11 { dial-options { l2tp-interface-id east_shared; shared; } family inet; } } }
跟踪 L2TP 操作
跟踪操作跟踪所有 AS PIC 操作,并将其记录在 / var/log 目录下的日志文件中。默认情况下,此文件名为 / var/log/l2tpd。
本主题涉及跟踪 M 系列路由器上的 L2TP LNS 操作。要跟踪 MX 系列路由器上的 L2TP LAC 操作,请参阅 跟踪 L2TP 事件以进行故障排除。
要跟踪 L2TP 操作,请在层次结构级别包含 traceoptions
语句 [edit services l2tp]
:
traceoptions { debug-level level; file <filename> <files number> <match regular-expression > <size maximum-file-size> <world-readable | no-world-readable>; filter { protocol name; user-name username; } flag flag; interfaces interface-name { debug-level severity; flag flag; } level (all | error | info | notice | verbose | warning); no-remote-trace; }
您可以指定以下 L2TP 跟踪标志:
all
—追踪一切。configuration
- 跟踪配置事件。protocol
— 跟踪路由协议事件。routing-socket
— 跟踪路由套接字事件。rpd
— 跟踪路由协议进程事件。
您可以为 PPP、L2TP、RADIUS 和用户数据报协议 (UDP) 跟踪指定跟踪级别。要配置跟踪级别,请在层次结构级别包括[edit services l2tp traceoptions]
该debug-level
语句,并指定以下值之一:
detail
- 详细的调试信息error
- 仅错误packet-dump
—数据包解码信息
您可以按协议进行筛选。要配置过滤器,请在层次结构级别包含 filter protocol
语句 [edit services l2tp traceoptions]
,并指定以下一个或多个协议值:
ppp
l2tp
radius
udp
要实现按协议名称过滤,还必须配置 flag protocol
或 flag all
。
您还可以在特定自适应服务接口上为 L2TP 配置跟踪选项。要配置每个接口的跟踪,请在层次结构级别包含 interfaces
语句 [edit services l2tp traceoptions]
:
interfaces interface-name { debug-level level; flag flag; }
实现跟踪选项会消耗 CPU 资源并影响数据包处理性能。
您可以为接口指定 and debug-level
flag
语句,但这些选项与常规 L2TP 跟踪选项略有不同。将调试级别指定为 detail
、 error
或 extensive
,这将提供完整的 PIC 调试信息。以下标志可用:
all
—追踪一切。ipc
— 跟踪 PIC 和路由引擎之间的 L2TP 进程间通信 (IPC) 消息。packet-dump
— 根据调试级别转储每个数据包的内容。protocol
—跟踪 L2TP、PPP 和多链路处理。system
— PIC 上的跟踪数据包处理。