USG3000快速转发功能导致L2TP单向通讯故障一例

发布时间:  2012-07-18 浏览次数:  134 下载次数:  1
问题描述
(1)PPPoE客户能够正常拨入,L2TP隧道和会话都能够建立
(2)PPPoE客户能够获得LNS分配的192.168.4.2的IP地址
(3)PPPoE客户能够正常访问内网中服务器192.168.3.5,并且长ping不丢包
(4)在服务器端不能访问PPPoE客户端,Ping包首包可以Ping通,随后请求超时,长ping过程中偶尔有报文可以收到回复。
组网图:
PPPoE-Client------------LAC-------------------LNS-----------------Server
LAC为Eudemon200
LNS为USG3000
告警信息
处理过程
(1)检查LAC和LNS端配置,配置正确没有问题。
(2)检查LAC和LNS端L2TP隧道建立和会话建立情况,完全正常。
(3)从PPPoE客户端能够正常访问服务器,说明L2TP功能正常。
(4)检查LNS端VT虚模板接口计数,发现接口进出报文数量在服务器端长ping PPPoE客户端时,计数器增长不正常。
(5)在LNS端打开debug ip packet,发现当服务器端Ping PPPoE客户端时,首包是通过VT接口封装后发出,随后报文直接从与LAC互联的接口直接发出。
(6)在PPPoE客户端使用抓包分析软件,发现当服务器Ping PPPoE客户端时,只收到了首包的ICMP Echo Request,并正确返回了Echo Reply。
(7)在LNS和LAC直接互联的端口上抓包分析,发现第一个包是通过L2TP封装发出,但是随后的报文未封装在L2TP报文中,直接发送。
根据以上情况分析,因为LNS在处理服务器发出的报文处理有误,导致问题发生。因为随后的报文直接发送,LAC端没有PPPoE客户端的路由,所以报文会被丢弃,同时因为没有到服务器的路由,所以没有发出ICMP目标不可达的错误报文。
为了验证这个判断,在LAC上添加到服务器的路由,在服务器端长ping PPPoE客户端的窗口上出现了目标不可达的错误消息。
定位了问题出在LNS上面。结合Support上的案例,将LNS的VT虚模板接口和服务器接口放在同一个安全区域。这个时候,通讯问题得到了解决。这个时候在LNS和LAC直接的接口抓包分析看到所有从服务器发往PPPoE客户端的数据都是封装在L2TP上。
看来问题出现在USG3040在处理域间通讯流量上。结合典型的现象(首包能通,后包不能通讯),特别像数据报文的快速转发功能。查USG3000技术文档得知,USG3000的接口缺省打开快速转发功能,尝试关闭LNS和LAC直接互联接口上的快速转发输出功能,故障得到彻底解决。(命令:undo ip fast forwarding output) 
根因
建议与总结
这个问题与USG3000的接口快速转发功能不能正确处理L2TP报文有关。
规避这个问题解决方法有两种
(1)把VT接口和内网接口放在一个安全区域
这种不适合有多个内网区域的情况。
(2)关闭外联接口的快速转发输出功能(Undo ip fast forwarding output)
对转发性能有一定影响。

END