pppoe原理及usg6000配置案例
簡介
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
圖1 PPPoE連線建立過程
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