PPP & PPPoE & L2TP & PPTP 一文全介绍

目录

PPP

PPP介绍

PPP帧格式

LCP

认证

NCP

PPPoE

介绍

拓扑

报文格式

报文交互流程

发现阶段

PPP会话阶段

BCP

PPTP

工作原理

报文格式

控制报文

数据报文

报文交互流程

实现

L2TP

介绍

典型组网

配置界面

数据格式

控制通道和数据通道

PPTP和L2TP比较


PPP

PPP介绍

PPP协议:点到点链路数据链路层协议,在SLIP(Serial Line Internet Protocol)基础上发展起来。可提供用户验证,易扩充,支持全双工同步异步通信。

SLIP:只支持异步传输、不支持协商(不能协商双方IP地址等网络层属性)、只能承载IP报文等缺陷。SLIP逐步被PPP替代。

PPP可在串行通信线路上传输多种网络层协议,如IP、IPX、AppleTalk。

PPP既支持同步又支持异步,而X.25、FR(Frame Relay)等链路层仅支持同步,SLIP仅支持异步。

点到点直接连接是简单的广域网连接形式,如PPP。

PPP有良好扩展性,如需在以太网上承载PPP协议时,可扩展为PPPoE。

PPP包含:

        LCP(Link Control Protocol)协议:建立、拆除和监控PPP数据链路。

        NCP(Network Control Protocol)协议:协商网络层格式与类型。

        CHAP和PAP:(Challenge-Handshake Authentication Protocol)和PAP(Password Authentication Protocol)

PPP帧格式

Flag域:标识一个物理帧的起始和结束,该字节为0x7E。

Address域:唯一标识对端,点对点链路无须对方链路层地址,0xFF即可。

Control域:默认为0x03,表明为无序号帧,PPP默认不采用Seq和ACK来实现可靠传输。

        Address和Control域一起标识此报文为PPP报文,即PPP报头为FF03。

Protocol域:标识信息域中数据包类型

        0x0021 IP

        0xC021 LCP

        0x8021 NCP

        0xC023 PAP

        0xC025 LQR

        0xC223 CHAP

Information域:最大长度MRU默认1500字节,可实际协商。长度不够可填充。

FCS域:校验。

链路建立过程:

PPP链路建立过程:

        1. Establish阶段:LCP协商

                协商内容:SP(Single-link PPP)还是MP(Multilink PPP)、MRU、认证方式、魔术字等选项。

                LCP协商成功后进入Opened状态,表示底层链路建立。

        2. Authenticate阶段:CHAP或PAP验证,成功后为SUCCESS状态。

        3. Network阶段:NCP协商

                IPCP(IP Control Protocol)、MPLSCP(MPLS Control Protocol)

                IPCP会协商双方IP

NCP协商后,链路建立成功。运行过程中,可能随时中断连接,物理链路断开、认证失败、超时等都可能导致链路进入Terminate阶段。

Terminate阶段,所有资源被释放,通信双方回到Dead

LCP

LCP报文:

Code域:即编码,标识LCP报文类型

        0x01 Configure-Request

        0x02 Configure-Ack

        0x03 Configure-Nak

        0x04 Configure-Reject

        0x05 Terminate-Request

        0x06 Terminate-Ack

        0x07 Code-Reject

        0x08 Protocol-Reject

        0x09 Echo-Request

        0x0A Echo-Reply

        0x0B Discard-Request

Identifier:即ID,用来匹配请求和响应

        请求报文的ID从0x01递增

Length:即长度,Data域总长度,即Type、Length和Data总长度。

Data字段:即LCP数据段

type:报文类型

        0x01 MRU 最主要

        0x02 Async-Control-Character-Map

        0x03 Authentication-Protocol (身份验证PAP or CHAP,若无认证则不包含该type)

        0x04 Quality-Protocol(协商使用链路检测的方法)

        0x05 Magic-Number (防止环路)

        0x06 RESERVED

        0x07 Protocol-Field-Compression(PPP协议字段的压缩协商)

        0x08 Address-and-Control-Field-Compression(链路层地址和控制字段的压缩协商)

Configure-Request:

        没收到Configure回复时,每隔3秒重传一次Configure-Request,最多10次。

        对应响应有:

                Configure-Ack:表示协商成功

                Configure-Nak:表示参数不能接受,其中只包含不能识别的参数列表

                Configure-Reject:表示参数不能识别,其中只包含不能识别的参数列表

Echo-Request、Echo-Reply:

        定期发送,用于链路状态检测

Terminate-Request,Terminate-Ack:

        链路关闭

认证

LCP若协商为PAP认证:

        使用PAP authenticate-request、PAP authenticate-ack报文协商

        PAP authenticate-request包含明文用户名和密码。

LCP若协商为CHAP认证:

        服务器发送CHAP challenge报文,包含ID值及一个随机字符串

        客户端根据hash得到字符串,并在CHAP Response中回复

        服务器hash计算后CHAP Response中hash比较。若一致回复success,否则回复failure

NCP

协商IPCP协议, 包括IP地址

PPPoE

介绍

PPPoE主要利用了PPP协议中的访问控制和计费功能。

以太网具有广播属性,通信双方无法验证对方身份,因而通信不安全

PPPoE通过Session ID保障用户安全

拓扑

ADSL 和FTTH(光纤到户)的拨号都使用PPPoE协议。

PPPoE不使用ARP,可防止ARP攻击。

报文格式

PPPoE报文格式:

        1. 以太网头:

                目标MAC

                源MAC

                类型:标识PPPoE报文类型,0x8863(发现阶段),0x8864(PPP会话阶段)

        2. PPPoE头部:

                Ver(4 bits): PPPoE协议版本号,值为0x1。

                Type(4 bits): PPPoE帧类型,值为0x1。

                Code(1字节): PPPoE报文具体类型。

                        0x00:会话数据

                        0x09:PADI 0x07:PADO或PADT

                        0x19:PADR 0x65:PADS

                Session ID(2字节): 标识PPPoE会话,由服务器分配。实际会话ID还结合源目MAC

                Length(2字节): PPPoE的Payload长度,不包括以太网头和PPPoE头。

        3. PPP帧:

                PPP帧被封装在PPPoE报文中,包括标志字节、地址字节、控制字节、协议字节、信息字段和校验字段等。

报文交互流程

发现阶段

        Client广播PADI(PPPoE Active Discovery Initiation)。

        Server回应PADO(PPPoE Active Discovery Offer),包含Access Concentrator Name Tag。

        Client选定合适Server,并单播回复PADR(PPPoE Active Discovery Request)。

        Server回复PADS(PPPoE Active Discovery Session-confirmation),其中包含唯一会话ID

四个报文都包含server name Tag

PPP会话阶段

PPPoE Client和PPPoE Server通常在同一局域网

BCP

即PPP Bridging Control Protocol,基于PPP链路,桥接双方子网。

BCP属于PPP协议中LCP链路配置协商参数。可结合PPTP或L2TP使用实现大二层组网。

为实现L2TP+BCP,需要的应用:

        xl2tpd + pppd

        openl2tp + pppd

还可以L2TP+BCP+IPsec

ESP协议属于IPsec

PPTP

PPTP(点对点隧道协议)由微软、3Com等联合开发

最大特点:

        配置简单(只需用户名,密码,服务器IP)

        安全性不如IPSec

PPTP是在PPP基础上开发增强型安全协议,PPTP使用用户级PPP身份验证,用于Microsoft 点对点加密 (MPPE)的数据加密。

配置界面

工作原理

PPTP第一步是建立TCP连接,该TCP连接只用于PPTP控制报文,负责链路控制。

而后续数据包不用TCP连接,以PPP协议封装, 然后在IP协议上传输。

PAC: PPTP Access Concentrator, PPTP网络集中器。客户端

PNS: PPTP Network Server,PPTP网络服务器。服务器

PPTP报文分为:

        PPTP控制报文:用于创建、维护、终止PPTP连接

        PPTP数据报文:用来传送PPP数据包,PPP数据包封装在GRE中。

报文格式

控制报文和数据报文格式不同。

控制报文

需提前建立TCP连接

数据报文

PPPoE可算是隧道,PPPoE头类似GRE头

对于数据报文, Server和Client都使用到两个IP。一个公网IP,用于连接Internet; 另一个PPTP拨号分配的内网IP。

Server可手动配置的内网IP,而Client的内网地址是从Server获取的。

PPP Compressed Datagram中又包含IP TCP 应用层数据。

报文交互流程

        1. Client向Server的1723端口建立TCP连接。

        2. PPTP链路控制

                2.1 Client发送Start Control Connection Request

                2.2 Server回复Start Control Connection Reply

                2.3 Client发送Outgoing Call Request;创建隧道,包含一个客户端到服务器方向的发送数据的PPTP隧道ID

                2.4 Server回复Outgoing Call Reply。隧道创建成功。包含一个从服务器到客户端方向的发送数据的PPTP隧道ID

                2.5 Client 发送Set-Link-Info:  协商PPP选项。

3. 隧道数据传输

        PPTP隧道建立后,就可在客户机与服务器之间传送PPP数据。

PPTP发送数据包封装过程:

        (1)应用层数据封装成IP包

        (2)将IP包发送到VPN虚拟接口

        (3)VPN虚拟接口将IP数据包压缩和加密(可选),并添加PPP头。

        (4)VPN虚拟接口将PPP帧发送给PPTP驱动。

        (5)PPTP驱动在PPP帧外加GRE头

        (6)PPTP驱动将GRE头提交给TCP/IP协议栈

        (7)TCP/IP协议栈为GRE添加IP头

        (8)最后为IP包进行数据链路层封装,并通过物理网卡发出

收包解封装过程:

实现

        modprobe pptp.ko

        modprobe ppp_mppe.ko

        pppd nodetach nodefaultroute lock usepeerdns user $pptp_user password $pptp_pass

plugin pptp.so pptp_server $pptp_srv_ip file /tmp/options.pptp nobcp &

其中/tmp/options.pptp内容:

        noipdefault

        noauth

        nobsdcomp

        nodeflate

        novj

        novjccomp

        noaccomp

        maxfail 0

        mtu 1414

        mru 1414

+mppe-128 or nomppe-stateful #是否加密

L2TP

介绍

L2TP(Layer Two Tunneling Protocol):二层隧道协议,扩展了PPP。

适用于用户远程拨号接入企业总部。

LAC(L2TP Access Concentrator):L2TP 访问集中器,L2TP客户端

LNS(L2TP Network Server):L2TP 网络服务器,L2TP服务器

VPDN:基于拨号网络的VPN,如:

        PPTP L2F L2TP

        L2TP集合PPTP和L2F优点

典型组网

远端系统=dial clients=企业分支

LAC:L2TP Access Concentrato

三种应用场景:

1. 拨号用户访问企业内网:

        用于用户不经常访问企业总部时,LAC检测用户下线,自动拆除隧道。

        需要用于自己登录L2TP账户密码

2. LAC自动拨号

        LAC与LNS间建立一条永久性L2TP会话,无需用户PPP拨号,只需IP连接即可

3. 移动办公用户访问企业内网

        由用户发起L2TP连接

配置界面

BCP:属于PPP协议中LCP链路配置协商参数,用于在PPP连接的两端协商和管理网络桥接,如配置、状态和参数。通知对端设备是否启用桥接、桥接的类型、桥接端口等信息。

数据格式

层二VPN:可用L2TP+BCP

        ETH+IP+UDP+L2TP+(PPP+BCP)+ETH+IP

层三VPN:不使能PPP的BCP协议

        ETH+IP+UDP+L2TP+PPP+IP

控制通道和数据通道

在一对LAC和LNS间可建立多条L2TP隧道

每个L2TP隧道连接包括:一个控制连接和多个会话连接。

        控制通道:隧道的建立、维护和关闭。

        数据通道:用于传输用户数据。

L2TP报头包含Tunnel ID和Session ID信息,用来标识不同的隧道和会话。隧道标识与会话标识是由对端分配,只对接收端有意义,对发送端没有意义。

隧道建立:

        SCCRQ(Start-Control-Connection-Request):一般由LAC向LNS发起请求。

        SCCRP(Start-Control-Connection-Reply):表示接受对端连接请求

        SCCCN(Start-Control-Connection-Connected):表示隧道建立完成。

会话建立:

        ICRQ(Incoming-Call-Request):当LAC检测到拨号时,向LNS发送ICRQ,请求在隧道中建立一个会话。

        ICRP(Incoming-Call-Reply):表示ICRQ成功,LNS会在ICRP中标识L2TP会话必要参数。

        ICCN(Incoming-Call-Connected):表示L2TP会话建立完成。

PPTP和L2TP比较

PPTP要求为IP网络。L2TP要求面向数据包的点对点连接(支持IP、ATM、帧中继、X.25等网络)。

PPTP只支持单一隧道。L2TP支持多隧道。

PPTP不支持包头压缩、隧道验证。L2TP支持包头压缩、隧道验证。

PPTP包头占6个字节,L2TP压缩包头占4个字节。

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以按照以下步骤在 CentOS 上快速部署 L2TP 服务: 1. 安装 L2TPPPTP 服务 ``` yum install xl2tpd ppp pptpd ``` 2. 配置 xl2tpd 编辑 `/etc/xl2tpd/xl2tpd.conf` 文件,将以下内容添加到文件末尾: ``` [global] ipsec saref = no [lns default] ip range = 192.168.42.10-192.168.42.20 local ip = 192.168.42.1 require chap = yes refuse pap = yes require authentication = yes name = l2tpd ppp debug = yes pppoptfile = /etc/ppp/options.xl2tpd length bit = yes ``` 3. 配置 ppp 创建 `/etc/ppp/options.xl2tpd` 文件,并将以下内容添加到文件中: ``` require-mschap-v2 ms-dns 8.8.8.8 ms-dns 8.8.4.4 proxyarp mtu 1400 mru 1400 auth name l2tpd password l2tpdpassword ``` 注意将 `l2tpdpassword` 改为你自己的密码。 4. 配置 pptpd 编辑 `/etc/pptpd.conf` 文件,将以下内容添加到文件末尾: ``` localip 192.168.42.1 remoteip 192.168.42.100-200 ``` 5. 配置 chap-secrets 编辑 `/etc/ppp/chap-secrets` 文件,将以下内容添加到文件末尾: ``` username l2tpd password * ``` 注意将 `l2tpd` 和 `password` 改为你自己的用户名和密码。 6. 启动服务 ``` systemctl start pptpd systemctl start xl2tpd ``` 7. 配置防火墙规则 ``` iptables -A INPUT -p udp --dport 1701 -j ACCEPT iptables -A INPUT -p udp --dport 500 -j ACCEPT iptables -A INPUT -p udp --dport 4500 -j ACCEPT iptables -A INPUT -p gre -j ACCEPT iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu ``` 完成以上步骤后,即可在 CentOS 上快速部署 L2TP 服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山下小童

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值