简介
PPPoE提供了在以太网上建立PPPoE会话以及封装PPP数据包的方法。PPPoE要求在通信双方之间建立的是点到点关系,而不是在以太网和其他多路访问环境中所出现的多点关系。
定义
PPPoE是Point-to-Point Protocol over Ethernet的简称,它利用以太网将多个主机组成网络,通过一个远端接入设备接入因特网,并对接入的每个主机实现控制、计费功能。极高的性价比使PPPoE被广泛应用于包括小区组网等一系列应用中。
目的
当多个用户同时通过接入服务器获取服务时:
-
用户希望接入成本低,不要或者很少改变配置即可接入成功。以太网无疑是最好的组网方式。
-
服务提供商希望通过同一个接入服务器连接到远程站点上的多个主机,同时要求服务器能提供与使用PPP拨号上网类似的访问控制功能和支付功能。
PPP(Point-to-Point)应用虽然很广泛,但是不能应用于以太网,因此提出了PPPoE技术。PPPoE是对PPP的扩展,它可以使PPP协议应用于以太网。
PPPoE提供通过简单桥接的接入服务器把一个网络的多个主机连接到远程接入服务器的功能。
原理描述
介绍PPPoE的实现原理。
PPPoE协议采用客户端-服务器(Client/Server)方式,它将PPP报文封装在以太网帧之内,在以太网上提供点对点的连接。
以IPv4 PPPoE为例,PPPoE建立连接的过程如图1所示。
Discovery阶段
当主机开始通过PPPoE接入服务器时,它必须先识别接入端的以太网MAC地址,建立PPPoE的Session_ID。这就是Discovery阶段的目的。
Discovery阶段由四个过程组成。完成之后通信双方都会知道PPPoE的Session_ID以及对方以太网地址,它们共同确定了唯一的PPPoE会话。
Discovery阶段的四个过程如下:
-
主机在本以太网内广播一个PADI(PPPoE Active Discovery Initial)报文,在此报文中包含主机想要得到的服务类型信息。
说明:-
如果在PPPoE的服务器端配置service-name,client将发送Discovery阶段的PADI报文给服务器端请求建立连接。
-
如果该PADI报文中包含有不为空的service-name时,服务器端将用配置的service-name和该报文中的service-name进行完全匹配性检测。如果两者完全相同,服务器端提供后续服务,否则,服务器端不提供服务。
-
以上是两者的service-name都不为空时的情况。但如果两者中有一个service-name为空,就不进行此项检测。
-
-
以太网内的服务器收到这个PADI报文后,将其中请求的服务与自己能提供的服务进行比较,可以提供此服务的服务器发回PADO(PPPoE Active Discovery Offer)报文。
-
主机收到服务器的PADO报文,向它发回一个会话请求报文PADR(PPPoE Active Discovery Request)。
-
服务器产生一个唯一的会话标识,标识和主机的这段PPPoE会话。并把此会话标识通过会话确认报文PADS(PPPoE Active Discovery Session-confirmation)发回给主机,如果没有错误,双方进入PPPoE Session阶段。
接入服务器发送确认数据包后,它就可以进入到PPPoE会话阶段。当主机接收到该确认数据包后,它就可以进入PPPoE会话阶段。
Session阶段
当PPPoE进入Session阶段后,PPP报文就可以作为PPPoE帧的净荷封装在以太网帧发送到对端,Session_ID必须是Discovery阶段确定的ID,MAC地址必须是对端的MAC地址,PPP报文从Protocol ID开始。这时所有的以太网数据包都是单播的。
在Session阶段,主机或服务器任何一方都可以发送PADT(PPPoE Active Discovery Terminate)报文通知对方结束本Session。
举例:配置IPv4 PPPoE
组网需求
如图所示,FW_A作为PPPoE Client,FW_B作为PPPoE Server,FW_A通过PPPoE方式从FW_B获取IP地址,使NetworkA和NetworkB中的PC可以互相访问。
其中,PPPoE Server采用PAP方式验证PPPoE Client,用户名为usera,密码为Password1,FW_B为FW_A分配的IP地址是10.2.0.2。
操作步骤
- 配置FW_B。
# 配置接口,并将接口加入安全区域。
<FW_B> system-view
[FW_B] interface GigabitEthernet 1/0/3
[FW_B-GigabitEthernet1/0/3] ip address 10.4.0.1 24
[FW_B-GigabitEthernet1/0/3] quit
[FW_B] firewall zone untrust
[FW_B-zone-untrust] add interface GigabitEthernet 1/0/1
[FW_B-zone-untrust] quit
[FW_B] firewall zone trust
[FW_B-zone-trust] add interface GigabitEthernet 1/0/3
[FW_B-zone-trust] quit
# 增加一个PPPoE用户。
[FW_B] user-manage user usera
[FW_B-localuser-usera] password Password1
[FW_B-localuser-usera] quit
# 配置地址池。
[FW_B] ip pool global1
[FW_B-ip-pool-global1] section 1 10.2.0.2
[FW_B-ip-pool-global1] quit
# 配置业务方案引用地址池。
[FW_B] aaa
[FW_B-aaa] service-scheme scheme1
[FW_B-aaa-service-scheme1] ip-pool global1
[FW_B-aaa-service-scheme1] quit
[FW_B-aaa] quit
# 配置VT接口。
[FW_B] interface virtual-template 1
[FW_B-Virtual-Template1] ppp authentication-mode pap
The command is used to configure the PPP authentication mode on the local end.
Confirm that the peer end adopts the corresponding PPP authentication. Continue[Y/N]: y
[FW_B-Virtual-Template1] ip address 10.2.0.1 24
[FW_B-Virtual-Template1] remote service-scheme scheme1
[FW_B-Virtual-Template1] quit
[FW_B] firewall zone untrust
[FW_B-zone-untrust] add interface virtual-template 1
[FW_B-zone-untrust] quit
# 绑定VT接口和物理接口。
[FW_B] interface GigabitEthernet 1/0/1
[FW_B-GigabitEthernet1/0/1] pppoe-server bind virtual-template 1
[FW_B-GigabitEthernet1/0/1] quit
# 配置安全策略。
[FW_B] security-policy
[FW_B-policy-security] rule name policy_sec_1
[FW_B-policy-security-rule-policy_sec_1] source-zone trust
[FW_B-policy-security-rule-policy_sec_1] source-address 10.4.0.0 24
[FW_B-policy-security-rule-policy_sec_1] destination-zone untrust
[FW_B-policy-security-rule-policy_sec_1] destination-address 10.3.0.0 24
[FW_B-policy-security-rule-policy_sec_1] action permit
[FW_B-policy-security-rule-policy_sec_1] quit
[FW_B-policy-security] rule name policy_sec_2
[FW_B-policy-security-rule-policy_sec_2] source-zone untrust
[FW_B-policy-security-rule-policy_sec_2] source-address 10.3.0.0 24
[FW_B-policy-security-rule-policy_sec_2] destination-zone trust
[FW_B-policy-security-rule-policy_sec_2] destination-address 10.4.0.0 24
[FW_B-policy-security-rule-policy_sec_2] action permit
[FW_B-policy-security-rule-policy_sec_2] quit
[FW_B-policy-security] quit
# 配置路由。
2.配置FW_A。
# 配置接口,并将接口加入安全区域。
[FW_A] dialer-rule 1 ip permit
[FW_A] interface dialer 1
[FW_A-Dialer1] dialer user usera
[FW_A-Dialer1] dialer-group 1
[FW_A-Dialer1] dialer bundle 1
[FW_A-Dialer1] ip address ppp-negotiate
[FW_A-Dialer1] ppp pap local-user usera password cipher Password1
[FW_A-Dialer1] quit
[FW_A] firewall zone untrust
[FW_A-zone-untrust] add interface dialer 1
[FW_A-zone-untrust] quit
# 配置PPPoE会话。
[FW_A] interface GigabitEthernet 1/0/1
[FW_A-GigabitEthernet1/0/1] pppoe-client dial-bundle-number 1 ipv4
# 配置安全策略
[FW_A] security-policy
[FW_A-policy-security] rule name policy_sec_1
[FW_A-policy-security-rule-policy_sec_1] source-zone trust
[FW_A-policy-security-rule-policy_sec_1] source-address 10.3.1.0 24
[FW_A-policy-security-rule-policy_sec_1] destination-zone untrust
[FW_A-policy-security-rule-policy_sec_1] destination-address 10.4.1.0 24
[FW_A-policy-security-rule-policy_sec_1] action permit
[FW_A-policy-security-rule-policy_sec_1] quit
[FW_A-policy-security] rule name policy_sec_2
[FW_A-policy-security-rule-policy_sec_2] source-zone untrust
[FW_A-policy-security-rule-policy_sec_2] source-address 10.4.1.0 24
[FW_A-policy-security-rule-policy_sec_2] destination-zone trust
[FW_A-policy-security-rule-policy_sec_2] destination-address 10.3.1.0 24
[FW_A-policy-security-rule-policy_sec_2] action permit
[FW_A-policy-security-rule-policy_sec_2] quit
[FW_A-policy-security] quit
# 配置路由。
FW_A] ip route-static 10.4.0.0 24 dialer 1
结果验证
配置完成后,可以查看到PPPoE Server和PPPoE Client的session信息。
<FW_B>display pppoe-server session all
SID Intf State OIntf RemMAC LocMAC
1 Virtual-Template1:0 UP GE1/0/1 00e0.fcb0.0c7e 00e0.fc64.122f
查看PPPoE Client端的session信息。
<USG_A>display pppoe-client session summary dial-bundle-number 1
PPPoE Client Session:
ID Bundle Dialer Intf Client-MAC Server-MAC State
1 1 1 GE1/0/1 00e0fcb00c7e 00e0fc64122f PPPUP