虚拟隧道协议(L2TP)识别及实现

L2TP于1999年正式发布,是点对点隧道协议(PPTP)的扩展。它是两种协议的合并,一种来自Microsoft(PPTP),另一种来自Cisco。

今天我们使用L2TP构建VPDN,对L2TP流量进行识别,并且分析L2TP隧道和控制连接过程等等。

L2TP是什么意思?

虚拟隧道协议(L2TP)是Internet服务提供商(ISP)用于启用虚拟专用网(VPN)操作的计算机网络协议。

L2TP与OSI参考模型中的数据链路层协议相似,但实际上它是会话层协议。

L2TP端口

L2TP使用用户数据报协议(UDP)端口1701,并且整个L2TP数据包都封装在UDP数据报内。按照正常的UDP操作,隧道启动器选择一个可用的UDP端口,并将端口号1701发送到UDP目标。

L2TP / IPSec作为VPN

如今,随着在整个企业中使用各种各样的移动设备以及家庭中宽带的广泛普及,大多数公司网络必须提供远程访问作为基本必需。 虚拟专用网(VPN)技术是满足该需求的重要组成部分。

由于L2TP不直接提供任何身份验证或加密机制,这两者都是VPN的关键功能,因此L2TP通常与IPSec配对,以在L2TP隧道内对用户和控制数据包进行加密。

使用L2TP协议构建的VPDN应用

在L2TP构建的VPDN中,网络组件包括以下三个部分

LAC(L2TP Access Concentrator)
LNS(L2TP Network Server)
远端系统

在这里插入图片描述

这里要讲一下这张图,我们可以理解为四个部分:

  • 远端系统是要接入VPDN网络的用户,通常是一个拨号用户的主机或私有网络的一台路由设备。
  • LAC是附属在交换网络上的具有PPP端系统和L2TP协议处理能力的设备,通常是一个当地ISP的NAS,主要用于为PPP类型的用户提供接入服务。
  • LAC位于LNS和远端系统之间,用于在LNS和远端系统之间传递信息包。它把从远端系统收到的信息包按照L2TP协议进行封装并送往LNS,同时也将从LNS收到的信息包进行解封装并送往远端系统。
  • LNS既是PPP端系统,又是L2TP协议的服务器端,通常作为一个企业内部网的边缘设备。

L2TP隧道和会话建立流程

在一个LNS和LAC对之间存在着两种类型的连接,分别是:

隧道(Tunnel)连接
会话(Session)连接

下面我们通过抓包分析隧道(Tunnel)连接的三次握手

在这里插入图片描述
抓包分析会话(Session)连接的三次握手

在这里插入图片描述

在L2TP隧道建立过程中,用Wireshark软件抓包,从下面的图中可以看出最初的三个报文实现了tunnel建立的三次握手,接下来的三个报文实现了session建立的三次握手。

在这里插入图片描述
最后标红的两个图标分别是,用于PPP LCP重协商的。LNS侧在接收到ICCN消息后,通知PPP LNS要求进行强制CHAP验证。PPP此时会先进行一次LCP重新协商,然后向用户侧首先发送Challenge(如上图所示),开始CHAP验证。

L2TP识别

L2TP数据传输时,没有明显特征,当前只能针对端口,为了补充端口被修改的场景,需要对控制流程进行识别。

int main(int argc, char* argv[])
{
    char errbuf[1024];
    pcap_t *desc = 0;

    char *filename = argv[1];
    if (argc != 2)
    {
        printf("usage: ./dissect_l2tp [pcap file]\n");
        return -1;
    }

    return 0;
}

编译运行:

在这里插入图片描述

上面的实现对头部信息中的len字段与真实负载长度校验。解析消息体中的control message AVP,对AVP type值校验, 0为控制消息。对message type类型范围校验。

总结

L2TP是VPDN隧道协议的一种。VPDN为远端用户与私有企业网之间提供了一种经济而有效的点到点连接方式。

L2TP具有这些优点:

为关键应用程序提供了高数据安全性。
它提供了出色而有效的连接。
它可靠,可扩展,快速而灵活。
对于具有VPN身份验证的用户,它具有最佳的授权策略。

欢迎关注微信公众号【程序猿编码】,需要L2TP源码和报文的添加本人微信号(17865354792)

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值