PPPOE协议 华为
为什么有PPPoE协议?
①PPP协议最经济接入方式是用以太网
所以把PPP帧封装到以太网帧中的链路层协议,我们可以在以太网上抓到PPP报文
②PPP协议又能提供良好的访问控制和计费功能
结合以上两点,所以就有了PPPoE协议
PPPoE利用以太网将大量主机组成网络
通过一个远端接入设备连入因特网,并运用PPP协议对接入的每个主机进行控制,具有适用范围广、安全性高、计费方便的特点。
PPPoE拨号的工作原理
PPPoE 五个报文
① PADI : PPPoE Active Discovery Initial
PPPoE Client 通过广播发送的报文,用于搜索并请求可用的PPPoE服务器。
内容:客户端的MAC地址、服务名称标识符,以及其他可选参数
② PADO : PPPoE Active Discovery Offer
PPPoE Server 发送的单播报文,作为对PADI报文的响应
其中每个响应提供了服务器的MAC地址、服务名称标识符等信息
③ PADR : PPPoE Active Discovery Request
由客户端发送给选择的PPPoE服务器的报文,用于请求建立连接
内容包括 客户端和服务器的MAC地址、PPPoE会话ID(用于标识该连接),以及其他可选参数
④ PADS : PPPoE Active Discovery Session-confirmation
由PPPoE服务器发送给客户端的报文,用于确认连接的建立
报文中包含了客户端和服务器的MAC地址、PPPoE会话ID等信息
⑤ PADT : PPPoE Active Discovery Terminate
它是由任一一方(客户端或服务器)发送的报文,用于终止连接
报文中包含了正在终止连接的一方的MAC地址和PPPoE会话ID
PPPoE 三个阶段
① Discovery 阶段
Discovery阶段由四个过程组成。
-
PPPoE Client 广播发送PADI(PPPoE Active Discovery Initiation)报文,查找可用的PPPoE服务器。
-
PPPoE Server 收到PADI报文后,如果有可用的服务,则会向客户端单播发送PADO(PPPoE Active Discovery Offer)报文,其中可能包含多个PPPoE服务器的响应。
-
PPPoE Client 选择最先收到的 PADO 报文对应的 PPPoE Server 做为自己的PPPoE Server,并向所选的PPPoE服务器单播发送一个PADR(PPPoE Active Discovery Request)报文。
-
PPPoE Server产生一个唯一的会话ID(Session ID),标识和PPPoE Client的这个会话,通过发送一个PADS(PPPoE Active Discovery Session-confirmation)报文把会话ID发送给PPPoE Client,会话建立成功后便进入PPPoE Session阶段
完成之后通信双方都会知道PPPoE的Session_ID以及对方的以太网地址,它们共同确定了唯一的PPPoE Session。
Discovery阶段的 报文交互过程
② Session 阶段
PPPoE Session阶段可划分为两部分
一是PPP协商阶段,二是PPP数据传输阶段
PPPoE Session上的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP三个阶段
-
LCP阶段
主要完成建立、配置和检测数据链路连接。 -
认证协商
认证协议类型由LCP协商结果(CHAP或者PAP)决定,最常用的是PAP认证 -
NCP阶段
NCP是一个协议族,用于配置不同的网络层协议,常用的是IP控制协议(IPCP)
IPCP :主要负责协商用户的IP地址和DNS服务器地址
PPPoE Session的PPP协商成功后,就可以承载PPP数据报文
在PPPoE Session阶段所有的以太网数据包都是单播发送的
认证的两种方式
① PAP 认证过程
PAP(Password Authentication Protocol,密码认证协议)
PAP是一种简单的点对点协议验证方法
它的密码是明文形式,就是可以通过抓包查看
被验证方把认证请求报文(里面有用户和密码)发送到验证方。
验证方根据本地用户表查看是否有被验证方的用户名
- 若有
则查看密码是否正确,若密码正确,则认证通过;
若密码不正确,则认证失败。 - 若没有,则认证失败。
② CHAP 认证过程
CHAP(Challenge-Handshake Authentication Protocol,加密哈希挑战认证协议)
先在验证方发起挑战
CHAP验证协议为三次握手验证协议。
它只在网络上传输用户名,而并不传输用户密码,因此安全性要比PAP高。
由于每次认证过程都使用随机生成的挑战值,CHAP具有抵抗重放攻击的能力。
验证方主动发起验证请求,验证方向被验证方发送Challenge报文,报文中包含随机数和ID字段,并同时将本端的用户名附带上一起发送给被验证方。
被验证方接到验证方的验证请求后,先检查本端接口上是否配置了ppp chap password命令。
-
如果配置了该命令
则被验证方用报文ID、命令中配置的用户密码和随机数进行HASH/MD5运算,将生产的HASH值和自己的用户名发回验证方(Response)。 -
如果接口上未配置ppp chap password命令
则根据此报文中验证方的用户名在本端的用户表查找该用户对应的密码,用报文ID、此用户的密钥(密码)和随机数进行HASH/MD5运算,将生产的HASH值和自己的用户名发回验证方(Response)。
Session阶段的 报文交互过程
③ Terminate 阶段
PPP通信双方可以使用PPP协议自身来结束PPPoE会话
当无法使用PPP协议结束会话时可以使用PADT(PPPoE Active Discovery Terminate)报文。
进入PPPoE Session阶段后
PPPoE Client和PPPoE Server 都可以通过发送PADT报文的方式来结束PPPoE连接
PADT数据包可以在 会话建立以后的任意时刻单播发送
在发送或接收到PADT后,就不允许再使用该会话发送PPP流量了
Terminate阶段的 报文交互过程
配置
拓扑
ISP配置
在华为的模拟器中
它的 VT(Virtual-Template)和 Dialer 口
— 默认的链路类型为 PPP ,所以无需配置该链路类型 —
PPPOE 服务端
[ISP]aaa
[ISP-aaa]local-user huawei password cipher hcie --- 创建用户
[ISP-aaa]local-user huawei service-type ppp --- 此用户的服务类型
[ISP-aaa]qu
[ISP]ip pool R1 --- 创建地址池
[ISP-ip-pool-R1] network 202.101.1.0 mask 255.255.255.0 --- 地址范围
[ISP-ip-pool-R1] gateway-list 202.101.1.254 --- 网关地址
[ISP-ip-pool-R1] excluded-ip-address 202.101.1.101 202.101.1.253 --- 排除地址
[ISP-ip-pool-R1]qu
[ISP]interface Virtual-Template1 --- 创建虚拟模板
[ISP-Virtual-Template1] ip address 202.101.1.254 255.255.255.0 --- 配置地址
[ISP-Virtual-Template1] ppp authentication-mode pap --- 认证方式 PAP
[ISP-Virtual-Template1] remote address pool R1 --- 关联下发地址池
[ISP-Virtual-Template1]qu
[ISP]interface GigabitEthernet0/0/0
[ISP-GigabitEthernet0/0/0] pppoe-server bind Virtual-Template 1
--- 直接将物理接口绑定虚拟接口
这个是让ISP 能与 Server 连通
[ISP-GigabitEthernet0/0/0]interface GigabitEthernet0/0/1
[ISP-GigabitEthernet0/0/1] ip address 100.100.100.254 255.255.255.0
R1配置
PPPOE 客户端
[R1]dialer-rule --- 进入拨号规则配置
[R1-dialer-rule]dialer-rule 1 ip permit --- 允许IP类型的数据通过拨号口
[R1]int Dialer 1 --- 创建拨号口
[R1-Dialer1]dialer user huawei --- 匹配拨号口的用户,需与PPPoE的认证用户名一致
[R1-Dialer1]ppp pap local-user huawei password cipher hcie --- PAP 认证
[R1-Dialer1]ip address ppp-negotiate --- NCP协商 下发IP地址
[R1-Dialer1]dialer bundle 1
[R1-Dialer1]dialer-group 1
[R1-Dialer1]qu
[R1]int g0/0/0
[R1-GigabitEthernet0/0/0]pppoe-client dial-bundle-number 1 --- 接口绑定
请注意,拨号规则是用于配置拨号接口的规则,以控制通过该接口的流量类型。
如若配置PPPoE拨号和NAT
则PPPoE Clinet 必须配置这两条命令,否则与外界通信不了
[R1]dialer-rule:此命令用于进入拨号规则配置模式。
[R1-dialer-rule]dialer-rule 1 ip permit:此命令用于创建一个拨号规则,编号为1,并定义该规则允许IP类型的数据通过拨号接口进行传输。IP permit表示允许该类型的流量通过拨号接口。
dialer bundle number
dialer-group number
需要保持这两个命令中的"number"一致
可以确保Dialer接口正确地与相应的Bundle和Group关联。
必须确保命令dialer-group中的参数group-number和命令dialer-rule中的dialer-rule-number保持一致。
[R1-Dialer1]dialer bundle 1
此命令用于将Dialer接口1添加到Dialer Bundle中。
Dialer Bundle是一组物理或虚拟的接口,用于实现多线路的负载均衡或冗余备份。
通过将Dialer接口添加到Bundle中,可以启用接口绑定,并对接口进行聚合和管理。[R1-Dialer1]dialer-group 1
此命令用于将Dialer接口1分配给Dialer Group 1。
Dialer Group是一组Dialer接口,用于拨号请求和会话的管理。
通过将Dialer接口分配给特定的Dialer Group,可以对拨号会话进行控制和管理,并定义相关的拨号策略。
DHCP 服务端
[R1]dhcp enable --- 注意,一定要记得启用DHCP服务
[R1]ip pool PC --- 创建地址池
[R1-ip-pool-PC]network 192.168.10.0 mask 255.255.255.0 ---下发网络范围
[R1-ip-pool-PC]gateway-list 192.168.10.254 --- 网关
[R1-ip-pool-PC]dns-list 100.100.100.100 --- DNS
[R1-ip-pool-PC]excluded-ip-address 192.168.10.101 192.168.10.253 --- 排除
[R1-ip-pool-PC]quit
[R1]int g0/0/1
[R1-GigabitEthernet0/0/1]dhcp select global --- 调用全局 DHCP
NAT(PAT)配置
这里,一定要注意
是要把 拨号口设置为NAT的外接口 ,而不是物理接口!!!
[R1]ip route-static 0.0.0.0 0.0.0.0 202.101.1.1
--- 华为的PPPoE没有自动下发默认路由,需要手动配置一条默认路由,去访问外网
[R1]acl 2000 --- 配置ACL,匹配感兴趣流量
[R1-acl-basic-2000]rule 5 permit source 192.168.10.0 0.0.0.255
[R1-acl-basic-2000]rule 10 deny source any ---拒绝除了我们感兴趣流量之外的
[R1-acl-basic-2000]qu
[R1]int Dialer 1
[R1-Dialer1]nat outbound 2000 --- 配置PAT
[R1-Dialer1]qu
Server 配置
配置 IP地址
配置 DNS Server
注意:
DNS Server 的IP地址配置,只要是可达的就行
就是PC 能够去Ping 通该IP地址,就可以了
PC配置
获取IP地址
检验NAT是否配置成功
PC能 ping 到 Server 的 域名网址 ,表明内网可以访问外网,NAT配置成功
拨号成功
当弹出这两条日志的时候,就说明拨号成功,成功获得到上网地址
查看拨号获得的IP地址