文章目录
一、PPoE原理和配置
DSL应用场景
数字用户线路DSL(Digital Subscriber Line)是以电话线为传输介质的传输技术,人们通常把所有的DSL技术统称为xDSL,x代表不同种类的数字用户线路技术。目前比较流行的宽带接入方式为ADSL,ADSL是非对称DSL技术,使用的是PPPoE(PPP over Ethernet)协议。
在使用DSL接入网络时,用户侧会安装调制解调器,然后通过现有的电话线与数字用户线路接入复用器(DSLAM)相连。DSLAM是各种DSL系统的局端设备,属于最后一公里接入设备。
然后,DSLAM通过高速ATM网络或者以太网将用户的数据流量转发给宽带远程接入服务器(BRAS)。BRAS是面向宽带网络应用的接入网关,位于骨干网的边缘层。
PPPoE在DSL中的应用
运营商希望通过同一台接入设备来连接远程的多个主机,同时接入设备能够提供访问控制和计费功能。在众多的接入技术中,把多个主机连接到接入设备的最经济的方法就是以太网,而PPP协议可以提供良好的访问控制和计费功能,于是产生了在以太网上传输PPP报文的技术,即PPPoE。
PPPoE利用以太网将大量主机组成网络,通过一个远端接入设备连入因特网,并运用PPP协议对接入的每个主机进行控制,具有适用范围广、安全性高、计费方便的特点。
PPPoE技术解决了用户上网收费等实际应用问题,得到了宽带接入运营商的认可并被广泛应用。
PPPoE报文
PPPoE报文是使用Ethernet格式进行封装的,Ethernet中各字段解释如下:
DMAC:表示目的设备的MAC地址,通常为以太网单播目的地址或者以太网广播地址(0xFFFFFFFF)。
SMAC:表示源设备的以太网MAC地址。
Type:表示协议类型字段,当值为0x8863时表示承载的是PPPoE发现阶段的报文。当值为0x8864时表示承载的是PPPoE会话阶段的报文。
PPPoE字段中的各个字段解释如下:
VER:表示PPPoE版本号,值为0x01。
Type:表示类型,值为0x01。
Code:表示PPPoE报文类型,不同取值标识不同的PPPoE报文类型。
PPPoE会话ID,与以太网SMAC和DMAC一起定义了一个PPPoE会话。
Length:表示PPPoE报文的Payload长度,不包括以太网头部和PPPoE头部的长度。
PPPoE会话建立过程
PADI(PPPoE Active Discovery Initiation)报文:用户主机发起的PPPoE服务器探测报文,目的MAC地址为广播地址。
PADO(PPPoE Active Discovery Offer)报文:PPPoE服务器收到PADI报文之后的回应报文,目的MAC地址为客户端主机的MAC地址。
PADR(PPPoE Active Discovery Request)报文:用户主机收到PPPoE服务器回应的PADO报文后,单播发起的请求报文,目的地址为此用户选定的那个PPPoE服务器的MAC地址。
PADS(PPPoE Active Discovery Session Configuration)报文:PPPoE服务器分配一个唯一的会话进程ID,并通过PADS报文发送给主机。
PADT(PPPoE Active Discovery Terminate)报文:当用户或者服务器需要终止会话时,可以发送这种PADT报文。
PPPoE协议报文
PPPoE发现阶段
在发现阶段,PPPoE客户端在本地以太网中广播一个PADI报文,此PADI报文中包含了客户端需要的服务信息。在PADI报文中,目的MAC地址是一个广播地址,Code字段为0x09,Session ID字段为0x0000。所有PPPoE服务器收到PADI报文之后,会将报文中所请求的服务与自己能够提供的服务进行比较。
如果服务器可以提供客户端请求的服务,就会回复一个PADO报文。客户端(RTA)可能会收到多个PPPoE服务器发送的PADO报文。在PADO报文中,目的地址是发送PADI报文的客户端MAC地址,Code字段为0x07,Session ID字段为0x0000。
因为PPPoE客户端是以广播的形式发送PADI报文,所以客户端可能会收到多个PADO报文。在接收到的所有PADO报文中,PPPoE客户端选择最先收到的PADO报文对应的PPPoE服务器,并发送一个PADR报文给这个服务器。在PADR报文中,目的地址是选中的服务器的MAC地址,Code字段为0x19,Session ID字段为0x0000。
PPPoE服务器收到PADR报文后,会生成一个唯一的Session ID来标识和PPPoE客户端的会话,并通过一个PADS报文把Session ID发送给PPPoE客户端。在PADS报文中,目的地址是PPPoE客户端的MAC地址,Code字段为0x65,Session ID字段是PPPoE服务器为本PPPoE会话产生的Session ID。会话建立成功后,PPPoE客户端和服务器进入PPPoE会话阶段。
PPPoE会话阶段
PPPoE会话阶段可分为两部分:PPP协商阶段和PPP报文传输阶段。
PPPoE Session上的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP三个阶段。
LCP阶段主要完成建立、配置和检测数据链路连接。
LCP协商成功后,开始进行认证,认证协议类型由LCP协商结果决定。认证成功后,PPP进入NCP阶段,
NCP是一个协议族,用于配置不同的网络层协议,常用的是IP控制协议(IPCP),它负责配置用户的IP地址和DNS服务器地址等。
PPPoE Session的PPP协商成功后,就可以承载PPP数据报文。在这一阶段传输的数据包中必须包含在发现阶段确定的Session ID并保持不变。
PPPoE会话终结
当PPPOE客户端希望关闭连接时,可以向PPPOE服务器端发送一个PADT报文。同样,如果PPPOE服务器端希望关闭连接时,也可以向PPPOE客户端发送一个PADT报文,此报文用于关闭连接。
在PADT报文中,目的MAC地址为单播地址,Session ID为希望关闭的连接的Session ID。一旦收到一个PADT报文之后,连接随即关闭。
PPPoE会话连接过程
用户客户端向服务器发送一个PADI报文,开始PPPOE接入。
服务器向客户端发送PADO报文。
客户端根据回应,发起PADR请求给服务器。
服务器产生一个Session ID,通过PADS发给客户端。
客户端和服务器之间进行PPP的LCP协商,建立链路层通信。同时,协商使用CHAP认证方式。
服务器通过Challenge报文发送给认证客户端,提供一个128bit的Challenge。
客户端收到Challenge报文后,并将密码和Challenge做MD5算法运算后,在Response回应报文中把结果发送给服务器。
服务器根据用户发送的信息判断用户是否合法,然后回应认证成功/失败报文,将认证结果返回给客户端。
进行NCP(如IPCP)协商,通过服务器获取到规划的IP地址等参数。
PPPoE配置(服务端)
PPPoE配置(客户端)
PPPoE客户端配置包括三个步骤。
首先需要配置一个拨号接口。
dialer-rule命令用于进入Dialer-rule视图,在该视图下,可以通过拨号规则来配置发起PPPoE会话的条件。
interface dialer number命令用来创建并进入Dialer接口。
dialer user user-name命令用于配置对端用户名,这个用户名必须与对端服务器上的PPP用户名相同。
dialer-group group-number命令用来将接口置于一个拨号访问组。
dialer bundle number命令用来指定Dialer接口使用的Dialer bundle。设备通过Dialer bundle将物理接口与拨号接口关联起来。
第二个步骤是在接口上将Dialer Bundle和接口绑定:
pppoe-client dial-bundle-number number命令来实现Dialer Bundle和物理接口的绑定,用来指定PPPoE会话对应的Dialer Bundle,其中number是与PPPoE会话相对应的Dialer Bundle编号。on-demand表示PPPoE会话工作在按需拨号模式。AR2200支持报文触发方式的按需拨号。目前ARG3系列路由器支持的按需拨号方式为报文触发方式,即当物理线路Up后,设备不会立即发起PPPoE呼叫,只有当有数据需要传送时,设备才会发起PPPoE呼叫,建立PPPoE会话。
第三个步骤是配置一条缺省静态路由,该路由允许在路由表中没有相应匹配表项的流量都能通过拨号接口发起PPPoE会话。
display interface dialer[ number ]命令用于查看拨号接口的配置,便于定位拨号接口的故障。
LCP opened, IPCP opened表示链路的状态完全正常。
display pppoe-client session summary命令用于查看PPPoE客户端的PPPoE会话状态和统计信息。
本节给出了两个例子来说明不同的PPPoE会话状态。
ID表示PPPoE会话ID,Bundle ID和Dialer ID的值与拨号参数配置有关。
Intf表示客户端侧协商时的物理接口。
State表示PPPoE会话的状态,包括以下四种:
IDLE表示当前会话状态为空闲。
PADI表示PPPoE会话处于发现阶段,并已经发送PADI报文。
PADR表示PPPoE会话处于发现阶段,并已经发送PADR报文。
UP表示PPPoE会话建立成功。
配置验证
[R1]interface Dialer 1 #创建dialer 1
[R1-Dialer1]link-protocol ppp #协议设置为ppp
[R1-Dialer1]ppp chap user huawei #创建chap认证账户
[R1-Dialer1]ppp chap password simple huawei #创建chap认证密码
[R1-Dialer1]ip address ppp-negotiate #拨号接口地址从pppoe的服务器上得到
[R1-Dialer1]dialer user huawei #绑定用户
[R1-Dialer1]dialer bundle 2 #指定diraler 1接口的编号(用于和物理接口绑定)
[R1-Dialer1]dialer-group 10 #绑定acl策略
[R1]interface GigabitEthernet 0/0/1 #进入接口gi0/0/1中
[R1-GigabitEthernet0/0/1]pppoe-client dial-bundle-number 2 #将pppoe拨号接口绑定到出接口地址
[R1-GigabitEthernet0/0/1]quit #退出接口配置模式
二、网络地址转换
随着Internet的发展和网络应用的增多,IPv4地址枯竭已经成为制约网络发展的瓶颈。尽管IPv6可以从根本上解决IPv4地址空间不足的问题,但目前众多的网络设备和网络应用仍是基于IPv4的,因此在IPv6广泛应用之前,一些过渡技术的使用是解决这个问题的主要技术手段
网络地址转换技术NAT(Network Address Translation)主要用于实现位于内部网络的主机访问外部网络的功能。当局域网内的主机需要访问外部网络时,通过NAT技术可以将其私网地址转换为公网地址,并且多个私网用户可以共用一个公网地址,这样既可保证网络互通,又节省了公网地址。
NAT应用场景
企业或家庭所使用的网络为私有网络,使用的是私有地址;运营商维护的网络为公共网络,使用的是公有地址。私有地址不能在公网中路由。NAT一般部署在连接内网和外网的网关设备上。
静态NAT
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l2vLUrsV-1693126684769)(PPPoE%E5%8E%9F%E7%90%86%E5%92%8C%E9%85%8D%E7%BD%AE.assets/image-20230726114339412.png)]
动态NAT
NAPT
网络地址端口转换NAPT允许多个内部地址映射到同一个公有地址的不同端口
Easy IP
EasyIP允许将多个内部地址映射到网关出接口地址上的不同端口,适用于小规模的局域网部署
NAT服务器
通过配置NAT服务器可以使外网用户访问内网服务器
静态NAT配置
配置验证
静态nat转换抓包实验
- PC1配置
- PC2配置
- R1配置
- R2配置
配置验证
抓包:
用pc1访问200.1.1.254,对R2的g0/0/0接口进行抓包:
用pc1访问200.1.1.254,对R1的g0/0/1接口进行抓包:
通过比较上面抓到的包,发现地址在通过R1时,将pc1的私网IP地址转换成了公网IP地址
总结
静态nat转换
私网地址去往公网地址时,在网关内,他们的源地址和目的地址是一致的,在网关外会将私网地址转换成公网地址,再到达目的ip地址
动态nat
不需要公网ip和私网ip做唯一的映射
端口nat
一个公网ip,通过不同的端口做映射
三、访问控制列表
企业网络中的设备进行通信时,需要保障数据传输的安全可靠和网络的性能稳定
访问控制列表ACL (Access Control List) 可以定义一系列不同的规则,设备根据这些规则对数据包进行分类,并针对不同类型的报文进行不同的处理,从而可以实现对网络访问行为的控制、限制网络流量、提高网络性能、防止网络攻击等等。
ACL是由一系列规则组成的集合。设备可以通过这些规则对数据包进行分类,并对不同类型的报文进行不同的处理。
设备可以依据ACL中定义的条件(例如源IP地址)来匹配入方向的数据,并对匹配了条件的数据执行相应的动作。
ACL应用场景
ACL分类
根据不同的划分规则,ACL可以有不同的分类。最常见的三种分类是基本ACL、高级ACL和二层ACL。
基本ACL可以使用报文的源IP地址、分片标记和时间段信息来匹配报文,其编号取值范围是2000-2999。
高级ACL可以使用报文的源/目的IP地址、源/目的端口号以及协议类型等信息来匹配报文。高级ACL可以定义比基本ACL更准确、更丰富、更灵活的规则,其编号取值范围是3000-3999。
二层ACL可以使用源/目的MAC地址以及二层协议类型等二层信息来匹配报文,其编号取值范围是4000-4999。
ACL规则
一个ACL可以由多条“deny | permit”语句组成,每一条语句描述了一条规则。设备收到数据流量后,会逐条匹配ACL规则,看其是否匹配。如果不匹配,则匹配下一条。一旦找到一条匹配的规则,则执行规则中定义的动作,并不再继续与后续规则进行匹配。如果找不到匹配的规则,则设备不对报文进行任何处理。需要注意的是,ACL中定义的这些规则可能存在重复或矛盾的地方。规则的匹配顺序决定了规则的优先级,ACL通过设置规则的优先级来处理规则之间重复或矛盾的情形。
ARG3系列路由器支持两种匹配顺序:配置顺序和自动排序。
配置顺序按ACL规则编号(rule-id)从小到大的顺序进行匹配。设备会在创建ACL的过程中自动为每一条规则分配一个编号,规则编号决定了规则被匹配的顺序。例如,如果将步长设定为5,则规则编号将按照5、10、15…这样的规律自动分配。如果步长设定为2,则规则编号将按照2、4、6、8…这样的规律自动分配。通过设置步长,使规则之间留有一定的空间,用户可以在已存在的两个规则之间插入新的规则。路由器匹配规则时默认采用配置顺序。另外,ARG3系列路由器默认规则编号的步长是5。
自动排序使用“深度优先”的原则进行匹配,即根据规则的精确度排序。
本示例中,RTA收到了来自两个网络的报文。默认情况下,RTA会依据ACL的配置顺序来匹配这些报文。网络172.16.0.0/24发送的数据流量将被RTA上配置的ACL2000的规则15匹配,因此会被拒绝。而来自网络172.17.0.0/24的报文不能匹配访问控制列表中的任何规则,因此RTA对报文不做任何处理,而是正常转发。
基本ACL配置
acl [ number ] 命令用来创建一个ACL,并进入ACL视图。
rule [ rule-id ] { deny | permit } source { source-address source-wildcard | any } 命令用来增加或修改ACL的规则。deny用来指定拒绝符合条件的数据包,permit用来指定允许符合条件的数据包,source用来指定ACL规则匹配报文的源地址信息,any表示任意源地址。
traffic-filter { inbound | outbound }acl{ acl-number }命令用来在接口上配置基于ACL对报文进行过滤。
本示例中,主机A发送的流量到达RTA后,会匹配ACL2000中创建的规则rule deny source 192.168.1.0 0.0.0.255,因而将被拒绝继续转发到Internet。主机B发送的流量不匹配任何规则,所以会被RTA正常转发到Internet。
执行display acl 命令可以验证配置的基本ACL。
本例中,所配置的ACL只有一条规则,即拒绝源IP地址在192.168.1.0/24范围的所有IP报文。
执行display traffic-filter applied-record命令可以查看设备上所有基于ACL进行报文过滤的应用信息,这些信息可以帮助用户了解报文过滤的配置情况并核对其是否正确,同时也有助于进行相关的故障诊断与排查。
配置确认
高级ACL配置
基本ACL可以依据源IP地址进行报文过滤,而高级ACL能够依据源/目的IP地址、源/目的端口号、网络层及传输层协议以及IP流量分类和TCP标记值等各种参数(SYN|ACK|FIN等)进行报文过滤。
本示例中,RTA上定义了高级ACL3000,其中第一条规则“rule deny tcp source 192.168.1.0 0.0.0.255 destination 172.16.10.1 0.0.0.0 destination-port eq 21”用于限制源地址范围是192.168.1.0/24,目的IP地址为172.16.10.1,目的端口号为21的所有TCP报文;第二条规则“rule deny tcp source 192.168.2.0 0.0.0.255 destination 172.16.10.2 0.0.0.0 ”用于限制源地址范围是192.168.2.0/24,目的地址是172.16.10.2的所有TCP报文;第三条规则“rule permit ip”用于匹配所有IP报文,并对报文执行允许动作。
执行display acl 命令可以验证配置的高级ACL。
显示信息表明:RTA上一共配置了3条高级ACL规则。第一条规则用于拒绝来自源IP地址192.168.1.0/24,目的IP地址为172.16.10.1,目的端口为21(SFTP)的TCP报文;第二条规则用于拒绝来自源IP地址192.168.2.0/24,目的IP地址为172.16.10.2的所有TCP报文;第三条规则允许所有IP报文通过。
四、实操
1.端口nat转换实操
- 首先连接并配置设备的响应IP地址
- 配置R1
acl 2000
rule permit source 192.168.1.0 0.0.0.255
q
nat address-group 1 12.1.1.2 12.1.1.2
#进入g0/0/0接口
int g0/0/0
nat outbound 2000 address-group 1
- 使用pc1访问R2
- 在R1的g0/0/0接口查看抓包
可以看到,都是从12.1.1.2去访问12.1.1.254的现在让pc1持续ping12.1.1.254,然后使用pc访问12.1.1.254,如果使用动态nat映射的话,就会访问不通,如果能访问通,说明使用的是端口映射。通过下面的图可以看出R1做了端口映射。
- 添加一台服务器和一台客户机
让客户机去访问server1服务器,并通过在R1的g0/0/0接口和LSW1的gg0/0/4接口抓包查看:
R1的g0/0/0接口抓包:
LSW1的g0/0/4接口抓包:
可以看出端口做了转换。
2.动态nat转换实操
- 连接并配置各个接口的IP地址
- R2配置
[Huawei-GigabitEthernet0/0/0]ip address 12.1.1.1 24
[Huawei-GigabitEthernet0/0/1]ip address 192.168.1.254 24
[Huawei]nat address-group 1 12.1.1.2 12.1.1.4
[Huawei]acl 2000
[Huawei-acl-basic-2000]rule 10 permit source 192.168.1.0 0.0.0.255
[Huawei-GigabitEthernet0/0/0]nat outbound 2000 address-group 1 no-pat
- 在R2的g0/0/0接口抓包
如图所示,当主机访问服务器IP:12.1.1.5时会和公网IP12.1.1.2、12.1.1.3、12.1.1.4做映射,当映射还没有删除时,如果继续访问服务器,就会请求超时,当之前的映射释放时,会再次访问成功。
3.easy ip实操
- 首先连接并配置各个接口的IP
- R2配置:
[Huawei-GigabitEthernet0/0/0]ip address 12.1.1.1 24
[Huawei-GigabitEthernet0/0/1]ip address 192.168.1.254 24
[Huawei]acl 2000
[Huawei-acl-basic-2000]rule 10 permit source 192.168.1.0 0.0.0.255
[Huawei-GigabitEthernet0/0/0]nat outbound 2000
- 使用pc1访问服务器12.1.1.5:
- 抓取R2的g0/0/0接口:
在图中可以看出,只用了一个公网IP在访问服务器,并且在pc1一直访问的同时,其他pc机可能访问到服务器。
4.acl2000(基础acl实操)
-
连接并配置各个接口的IP地址
-
pc1,pc2,LSW1,AR1之间建立单臂路由,相关配置如下:
LSW1配置:
[Huawei]vlan batch 10 20 [Huawei-Ethernet0/0/1]port link-type hybrid [Huawei-Ethernet0/0/1]port hybrid pvid vlan 10 [Huawei-Ethernet0/0/1]port hybrid untagged vlan 10 20 [Huawei-Ethernet0/0/2]port link-type hybrid [Huawei-Ethernet0/0/2]port hybrid untagged vlan 10 20 [Huawei-Ethernet0/0/2]port hybrid pvid vlan 20 [Huawei-Ethernet0/0/3]port link-type hybrid [Huawei-Ethernet0/0/3]port hybrid tagged vlan 10 20
R1配置:
[Huawei-GigabitEthernet0/0/0.1]ip address 192.168.1.254 24 [Huawei-GigabitEthernet0/0/0.1]dot1q termination vid 10 [Huawei-GigabitEthernet0/0/0.1]arp broadcast enable [Huawei-GigabitEthernet0/0/0.2]ip address 192.168.2.254 24 [Huawei-GigabitEthernet0/0/0.2]dot1q termination vid 20 [Huawei-GigabitEthernet0/0/0.2]arp broadcast enable [Huawei-GigabitEthernet0/0/1]ip address 192.168.3.254 24 #配置g0/0/1接口IP
-
配置完单臂路由之后,pc1,pc2,pc3之间能够正常相互通信,现在要求只有pc1能够访问pc3,而pc2不能访问pc3。
R1配置:
[Huawei]acl 2000 [Huawei-acl-basic-2000]rule deny source 192.168.2.0 0.0.0.25 [Huawei-GigabitEthernet0/0/1]traffic-filter outbound acl 2000
分别使用pc1和pc2访问pc3
由上面两图可知,现在只有pc1能够访问pc3,配置成功。
5.高级acl实操
-
连接并配置各个接口的IP地址
-
pc1,pc2,LSW1,AR1之间建立单臂路由,相关配置如下:
LSW1配置:
[Huawei]vlan batch 10 20 [Huawei-Ethernet0/0/1]port link-type hybrid [Huawei-Ethernet0/0/1]port hybrid pvid vlan 10 [Huawei-Ethernet0/0/1]port hybrid untagged vlan 10 20 [Huawei-Ethernet0/0/2]port link-type hybrid [Huawei-Ethernet0/0/2]port hybrid untagged vlan 10 20 [Huawei-Ethernet0/0/2]port hybrid pvid vlan 20 [Huawei-Ethernet0/0/3]port link-type hybrid [Huawei-Ethernet0/0/3]port hybrid tagged vlan 10 20
R1配置:
[Huawei-GigabitEthernet0/0/0.1]ip address 192.168.1.254 24 [Huawei-GigabitEthernet0/0/0.1]dot1q termination vid 10 [Huawei-GigabitEthernet0/0/0.1]arp broadcast enable [Huawei-GigabitEthernet0/0/0.2]ip address 192.168.2.254 24 [Huawei-GigabitEthernet0/0/0.2]dot1q termination vid 20 [Huawei-GigabitEthernet0/0/0.2]arp broadcast enable [Huawei-GigabitEthernet0/0/1]ip address 192.168.3.254 24 #配置g0/0/1接口IP
-
此时pc1能够访问pc3和server1
-
现在要求:让pc1能够访问到pc3,但访问不到server1
R1配置:
[Huawei]acl 3000 [Huawei-acl-adv-3000]rule deny ip source 192.168.1.0 0.0.0.255 destination 192.168.3.2 0.0.0.0 [Huawei-GigabitEthernet0/0/1]traffic-filter outbound acl 3000
-
现在使用pc1访问server1和pc3:
abitEthernet0/0/0.2]ip address 192.168.2.254 24
[Huawei-GigabitEthernet0/0/0.2]dot1q termination vid 20
[Huawei-GigabitEthernet0/0/0.2]arp broadcast enable
[Huawei-GigabitEthernet0/0/1]ip address 192.168.3.254 24 #配置g0/0/1接口IP
- 此时pc1能够访问pc3和server1
- 现在要求:让pc1能够访问到pc3,但访问不到server1
R1配置:
```shell
[Huawei]acl 3000
[Huawei-acl-adv-3000]rule deny ip source 192.168.1.0 0.0.0.255 destination 192.168.3.2 0.0.0.0
[Huawei-GigabitEthernet0/0/1]traffic-filter outbound acl 3000
-
现在使用pc1访问server1和pc3:
[外链图片转存中…(img-fSebUZOq-1693126684780)]
[外链图片转存中…(img-X2l7pubd-1693126684780)]