华为防火墙——通过IPv4 PPPoE接入互联网
一、认识PPPoE:
PPPoE提供了在以太网上建立PPPoE会话以及封装PPP数据包的方法。PPPoE要求在通信双方之间建立的是点到点关系,而不是在以太网和其他多路访问环境中所出现的多点关系。它利用以太网将多个主机组成网络,通过一个远端接入设备接入因特网,并对接入的每个主机实现控制、计费功能。极高的性价比使PPPoE被广泛应用于包括小区组网等一系列应用中。
二、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)报文,在此报文中包含主机想要得到的服务类型信息。
-
以太网内的服务器收到这个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。
注意事项:
- 如果在PPPoE的服务器端配置service-name,client将发送Discovery阶段的PADI报文给服务器端请求建立连接。
- 如果该PADI报文中包含有不为空的service-name时,服务器端将用配置的service-name和该报文中的service-name进行完全匹配性检测。如果两者完全相同,服务器端提供后续服务,否则,服务器端不提供服务。
- 以上是两者的service-name都不为空时的情况。但如果两者中有一个service-name为空,就不进行此项检测。
四、实验:
4.1 实验拓扑:

4.2 实验配置:
- 配置接口GigabitEthernet 1/0/3的IP地址。
<FW> system-view [FW] interface GigabitEthernet 1/0/3 [FW-GigabitEthernet1/0/3] ip address 10.3.0.1 255.255.255.0 [FW-GigabitEthernet1/0/3] quit - 将各个接口加入对应安全区域。
[FW] firewall zone untrust [FW-zone-untrust] add interface GigabitEthernet 1/0/1 [FW-zone-untrust] quit [FW] firewall zone trust [FW-zone-trust] add interface GigabitEthernet 1/0/3 [FW-zone-trust] quit - 配置设备作为DHCP Server,为局域网内部PC分配IP地址。
# 开启DHCP功能。 [FW] dhcp enable # 创建接口地址池,为内网PC配置网关地址并指定DNS Server。 [FW] interface GigabitEthernet 1/0/3 [FW-GigabitEthernet1/0/3] dhcp select interface [FW-GigabitEthernet1/0/3] dhcp server ip-range 10.3.0.1 10.3.0.254 [FW-GigabitEthernet1/0/3] dhcp server dns-list 9.9.9.9 [FW-GigabitEthernet1/0/3] dhcp server gateway-list 10.3.0.1 [FW-GigabitEthernet1/0/3] quit - 配置接口GigabitEthernet 1/0/1,采用PPPoE方式获得IP地址和DNS Server地址。
[FW] dialer-rule 1 ip permit [FW] interface Dialer 1 [FW-Dialer1] link-protocol ppp [FW-Dialer1] dialer user user [FW-Dialer1] ip address ppp-negotiate [FW-Dialer1] ppp ipcp dns admit-any [FW-Dialer1] dialer-group 1 [FW-Dialer1] dialer bundle 1 [FW-Dialer1] ppp pap local-user user password cipher password [FW-Dialer1] quit [FW] firewall zone untrust [FW-zone-untrust] add interface Dialer 1 [FW-zone-untrust] quit [FW] interface GigabitEthernet 1/0/1 [FW-GigabitEthernet1/0/1] pppoe-client dial-bundle-number 1 ipv4 [FW-GigabitEthernet1/0/1] quit - 配置安全策略,允许内部网络中的PC访问Internet。
[FW] security-policy [FW-security-policy] rule name policy_sec_1 [FW-security-policy-policy_sec_1] source-address 10.3.0.0 mask 255.255.255.0 [FW-security-policy-policy_sec_1] source-zone trust [FW-security-policy-policy_sec_1] destination-zone untrust [FW-security-policy-policy_sec_1] action permit [FW-security-policy-policy_sec_1] quit [FW-security-policy] quit - 配置NAT策略,允许内网用户访问Internet。
[FW] nat-policy [FW-policy-nat] rule name policy_nat_1 [FW-policy-nat-rule-policy_nat_1] source-address 10.3.0.0 mask 255.255.255.0 [FW-policy-nat-rule-policy_nat_1] source-zone trust [FW-policy-nat-rule-policy_nat_1] egress-interface dialer 1 [FW-policy-nat-rule-policy_nat_1] action source-nat easy-ip [FW-policy-nat-rule-policy_nat_1] quit [FW-policy-nat] quit - 配置缺省路由,确保局域网用户访问Internet路由可达。下一跳为运营商分配给企业的网关地址。
[FW] ip route-static 0.0.0.0 0.0.0.0 Dialer 1