ACL(access control list)是网络设备上最常用的安全技术,是一个需要人工编写的、用于检查和控制流量的脚本,简称ACL。网络设备能够执行ACL,对流量进行检查、控制。
一、ACL的基本结构和控制逻辑¶
1、一个ACL由若干条语句组成 2、每一条语句有两个要素:检查条件和控制 (1)检查条件是检查流量通信特征的 (2)每一条语句的控制只能指定一个操作:permit或者deny 3、ACL按语句顺序执行,当数据包第一次匹配某条语句的检查条件,就被该语句控制和处理,然后退出ACL,后续的ACL语句不会被执行。 4、如果流量不满足本语句的检查条件,本语句就不对流量进行任何控制;流量继续被下一条语句检查。 5、ACL的最后是一条默认语句:deny any,如果流量没有满足所有的语句,将被最后一条语句控制,结果一定是deny.
二、ACL的类型¶
根据ACL的检查功能的不同,分为两种类型:标准ACL和扩展ACL。 1、标准ACL只能检查流量的源IP地址。序列号为1-99 2、扩展ACL可以同时检查流量的:Protocol、源IP、目的IP、源端口、目的端口等信息,执行更精细的流量检查、控制。序列号为100-199.
三、ACL的配置方式¶
1、命名式ACL:使用字符短语作为ACL的名字,使用关键字指定ACL的类型。 2、编号式ACL:使用数字作为ACL的名字。1-99,表示标准ACL;100-199,表示扩展ACL。
四、ACL的基本原则¶
1、标准或扩展ACL,决定了流量检查的精细度和颗粒度。 2、每个接口、每协议、每方向只允许部署一个ACL。 3、ACL语句的顺序控制着测试顺序,因此检查条件最具体的语句放到最前面,检查条件最宽松的放到最后面。 4、最后的ACL语句是默认的拒绝所有语句,因此每个列表需要至少一条permit语句 5、在全局模式创建ACL,然后将其ACL应用到入站流量或出站流量的接口。 6、ACL在网络中部署位置: (1)扩展ACL应靠近源地址 (2)标准ACL应靠近目的地址
五、通配符掩码¶
1、在定义ACL语句的检查条件时,使用"IP 网络前缀+通配符掩码"的方式定义一个IP地址段范围。 2、通配符掩码是一个32bit的数字,使用"0"匹配,"1"忽略的规则,指定与"IP网络前缀"的匹配方式。 3、通配符掩码的计算示例(复杂)——匹配IP子网172.30.16.0/24至172.30.31.0/24
16——00010000
17——00010001
18——00010010
...
...
...
31——00011111
前4位相同,需要匹配;后4位不同,需要忽略。通配符掩码为00001111,整成十进制数为15
六、ACL配置命令¶
6.1 标准ACL配置命令(编号式)¶
1、创建标准式ACL (1)使用1到99作为ACL序列号 (2)第一个字目分配的序列号是10,后续条目以10为增量递增 (3)默认通配符掩码是0.0.0.0(仅针对标准ACL) (4)remark用于向ACL添加说明。 (5)no access-list ACL编号可删除整个ACL列表。
Router(config)#access-list ACL编号 {permit | deny | remark} 源地址 源地址的掩码
2、在接口上调用ACL (1)接口视图下no ip access-group ACL编号 {in | out }可删除ACL
Router(config-if)#ip access-group ACL编号 {in | out }
3、利用ACL控制VTY线路访问 (1)创建ACL列表
Router(config)#access-list ACL编号 permit 允许登录的源地址 通配符
(2)进入VTY线路,并在入方向调用ACL
Router(config)#line vty 0 4
Router(config-line)#access-class ACL编号 in
6.2 扩展ACL配置命令(编号式)¶
1、创建 扩展ACL列表
Router(config)#access-list ACL编号 permit 源地址 通配符 目的地址 通配符 eq 协议端口号
2、在接口上调用ACL (1)接口视图下no ip access-group ACL编号 {in | out }可删除ACL
Router(config-if)#ip access-group ACL编号 {in | out }
6.3 命名式标准ACL配置命令¶
1、创建名为xxxx的标准ACL
Router(config)#ip access-list standard xxxx
2、编写ACL规则
Router(config-std-nacl)#permit/deny 1.1.1.0 0.0.0.255
3、在命名式标准ACL视图下编写注释
Router(config-std-nacl)#remark zhushi
4、在相应接口下调用标准式ACL
Router(config)#int g0/0/1
Router(config-if)#ip access-group xxxx in/out
6.4 命名式扩展ACL配置命令¶
1、创建名为xxxx的扩展ACL
Router(config)#ip access-list extended xxxx
2、编写ACL规则
Router(config-ext-nacl)#permit/deny 源地址 通配符 目的地址 通配符 eq 协议端口号
3、在命名式扩展ACL视图下编写注释
Router(config-ext-nacl)#remark zhushi
4、.在相应接口下调用扩展式ACL
Router(config)#int g0/0/1
Router(config-if)#ip access-group xxxx in/out
6.5 检查命令¶
1、使用show access-lists显示所有列表。
Router#show access-lists
2、使用show ip int g0/0/1命令查看Outgoing access list和Inbound access list有没有被调用ACL。
Router#show ip int g0/0/1
七、WAN(广域网)¶
WAN是底层通信技术,实现长距离通信,WANz主干网通常由专门的企业构建,也称作SP(服务提供商),普通企业租用SP的WAN链路和服务,实现企业远程站点的互连。
7.1 VPN基本特点¶
1、虚拟化 (1)对传统网络基础架构进行虚拟化 (2)传统网络基础架构,也被称为底层网络 (3)虚拟化的网络叫做overlay网络,以前叫做VPN 2、安全通信 (1)对数据传输进行加密和认证
7.2 WAN物理层¶
1、用户设备DTE和电信端设备DCE,实现物理链路对接 2、路由器常用的WAN接口——Serical接口和Serial线缆
八、PPP¶
在串行链路上,传输多种协议的工作在第二层的点对点通信技术,是最通用的WAN协议。
PPP协议栈只涉及物理层和数据链路层。NCP用于标识和封装网络层协议,允许通过同一条PPP链路传输多种网络层协议分组。
8.1 PPP功能¶
1、具有动态分配IP地址的能力,允许在连接时协商IP地址。 2、支持多种网络协议,比如TCP/IP、NetBEUI、NWLINK等 3、具有错误检测以及纠错能力,支持数据压缩 4、具有身份验证功能 5、PPP可以用于多种类型的物理介质上,包括串口线、电话线、移动电话和光纤,PPP也可用于Internet接入。
8.2 PPP协议简介¶
PPP是第二层协议,内部包含三个子层:NCP(网络控制协议)/LCP(链路控制协议)/HDLC(高级数据链路控制)。
8.3 PPP数据帧格式¶
1、Flag:PPP采用7E作为一帧的开始和结束标志 2、地址域(A)和控制域(C)取固定值(A=FF,C=03) 3、协议域(两个字节):0021H表示IP分组;8021H表示网络控制数据;C021H表示链路控制数据。 4、Data域:小于等于1500字节 5、帧校验域(FCS):两个字节,它用于对信息域的校验 6、Flag域:7E
8.4 PPP工作过程¶
发起PPP连接后,链路将经过3个会话建立阶段: 链路建立阶段:每台PPP设备都发送LCP分组,以配置和测试链路。这些分组包含一个配置选项的字段,让设备能够协议数据长度、压缩方法和身份验证方法。如果没有配置选项,则使用默认配置。 身份验证阶段:必要时,可使用CHAP或PAP来验证身份。身份验证是在读取网络层协议信息前进行的,在此期间还可能确定链路质量。 网络层协议阶段:PPP使用网络控制协议(NCP),以封装多种网络层协议分组并通过同一条PPP数据链路发送它们。每种网络层协议都建立一个到NCP的服务。
8.5 PPP身份验证¶
8.5.1 PAP身份验证(安全性低,不推荐)¶
两次握手 1、单向认证 2、双向认证
8.5.2 CHAP身份验证(安全性高,推荐)¶
三次握手 1、单向认证 (1)主认证方发送挑战包,里面包含一个"随机数12345" (2)被认证方应答:发送本端username,"将username对应的password与挑战包里的随机数12345"共同进行md5计算,得到一个MD123;把username和MD123发送给主认证方。 (3)主认证方:使用应答包里的username,在本地找到对应的password,将password与挑战包里的随机数12345(缓存的)共同进行MD5计算,得到一个密文MD456;对比MD123和MD456,如果相同,通过验证;如果不相同,认证失败,不能建立PPP连接。
8.6 PPP配置命令¶
8.6.1 PPP(PAP)单向认证配置命令¶
1、认证方 (1)设置用户名-被认证方和密码
R3(config)#username R2 password cisco
(2)串口视图下设置IP地址、封装协议PPP以及认证协议为PAP
R3(config)#int s0/2/0
R3(config-if)#ip add 1.1.1.2 255.255.255.0
R3(config-if)#encapsulation ppp
R3(config-if)#ppp authentication pap
R3(config-if)#no shutdown
2、被认证方 (1)串口视图下设置IP地址、封装协议PPP以及发送本端用户名及密码
R2(config)#int s0/2/0
R2(config-if)#ip add 1.1.1.1 255.255.255.0
R2(config-if)#encapsulation ppp
R2(config-if)#ppp pap sent-username R2 password cisco
R2(config-if)#no shutdown
注意事项:PPP单向认证时,端口只有一边UP。
8.6.2 PPP(PAP)双向认证配置命令¶
1、认证方 (1)设置用户名-被认证方和密码
R3(config)#username R2 password cisco
(2)串口视图下设置IP地址、封装协议PPP、认证协议为PAP以及作为被认证方发送本端用户名及密码
R3(config)#int s0/2/0
R3(config-if)#ip add 1.1.1.2 255.255.255.0
R3(config-if)#encapsulation ppp
R3(config-if)#ppp authentication pap
R3(config-if)#no shutdown
R3(config-if)#ppp pap sent-username R3 password cisco
R3(config-if)#shutdown
R3(config-if)#no shutdown
2、被认证方 (1)串口视图下设置IP地址、封装协议PPP、发送本端用户名及密码以及作为认证方时设置认证协议为PAP
R2(config)#int s0/2/0
R2(config-if)#ip add 1.1.1.1 255.255.255.0
R2(config-if)#encapsulation ppp
R2(config-if)#ppp pap sent-username R2 password cisco
R2(config-if)#no shutdown
R2(config-if)#exit
R2(config)#username R3 password cisco
R2(config)#int s0/2/0
R2(config-if)#ppp authentication pap
R2(config-if)#shutdown
R2(config-if)#no shutdown
8.6.3 PPP(CHAP)单向认证配置命令¶
1、认证方 (1)设置用户名-被认证方和密码
R3(config)#username R2 password cisco
(2)串口视图下设置IP地址、封装协议PPP以及认证协议为CHAP
R3(config)#int s0/2/0
R3(config-if)#ip add 1.1.1.2 255.255.255.0
R3(config-if)#encapsulation ppp
R3(config-if)#ppp authentication chap
R3(config-if)#no shutdown
2、被认证方 (1)串口视图下设置IP地址、封装协议PPP以及发送本端用户名及密码
R2(config)#int s0/2/0
R2(config-if)#ip add 1.1.1.1 255.255.255.0
R2(config-if)#encapsulation ppp
R2(config-if)#ppp chap hostname R2
R2(config-if)#ppp chap password cisco
R2(config-if)#no shutdown
8.6.4 PPP(CHAP)双向认证配置命令¶
1、认证方 (1)设置用户名-被认证方和密码
R3(config)#username R2 password cisco
(2)串口视图下设置IP地址、封装协议PPP、认证协议为CHAP以及作为被认证方发送本端用户名及密码
R3(config)#int s0/2/0
R3(config-if)#ip add 1.1.1.2 255.255.255.0
R3(config-if)#encapsulation ppp
R3(config-if)#ppp authentication chap
R3(config-if)#no shutdown
R3(config-if)#ppp chap hostname R3
R3(config-if)#ppp chap password cisco
R3(config-if)#shutdown
R3(config-if)#no shutdown
2、被认证方 (1)串口视图下设置IP地址、封装协议PPP、发送本端用户名及密码以及作为认证方时设置认证协议为PAP
R2(config)#int s0/2/0
R2(config-if)#ip add 1.1.1.1 255.255.255.0
R2(config-if)#encapsulation ppp
R2(config-if)#ppp chap hostname R2
R2(config-if)#ppp chap password cisco
R2(config-if)#no shutdown
R2(config-if)#exit
R2(config)#username R3 password cisco
R2(config)#int s0/2/0
R2(config-if)#ppp authentication chap
R2(config-if)#shutdown
R2(config-if)#no shutdown
九、IPV6¶
9.1 IPV6高级功能¶
1、更大的地址空间 2、更简单的报头 3、移动性和安全性 4、多种过渡方式
9.2 IPV6地址表示法¶
1、x:x:x:x:x:x:x:x,其中x是16位的十六进制字段(十六进制的A、B、C、D、E、F不区分大小写) 2、字段中的前导零是可选的 3、连续的零字段可表示为::,每个地址只能用一次。
9.3 IPV6地址类型¶
1、单播 (1)地址用于单个接口 (2)IPv6有几种类型(如全局地址、保留地址、本地链路和本地站点地址) 2、组播 (1)一对多 (2)提高网络的使用效率 (3)使用更大的地址范围 3、任播 (1)一对最近(从单播地址空间分配) (2)多个设备共享相同的地址 (3)所有任播节点应提供统一服务 (4)源设备将数据包发送到任播地址 (5)路由器确定最近的设备以达到目的地 (6)适合负载均衡和内容传输服务
9.4 IPV6单播地址¶
1、类型 (1)全局地址:以2000::/3开头 (2)保留地址 (3)私有地址:本地链路(以FE80::/10开头) (4)环回地址(::1) (5)未指定地址(::) 2、单个接口可分配多个任意类型的IPv6地址:单播、任播或组播。 3、前缀范围:2000::/3-E000::/3
9.4.1 本地链路地址¶
1、本地链路地址用于自动地址配置、邻居发现和路由器发现。 2、本地链路地址可连接相同本地网络中的设备,而且无需全球地址。 3、使用本地链路地址通信时,因每个接口都连接到FE80::/10,所以必须传出接口。
9.4.2 IPv6 EUI-64接口标识符¶
1、此格式向中间16位插入"FFFE"以将48位的MAC地址扩展为64位。 2、MAC地址的第一个字节的第7个bit(U/L)位取反。
9.5 IPv6路由协议¶
1、静态 2、RIPng 3、OSPFv3 4、MP-BGP4 5、用于IPv6的EIGRP
9.6 IPv6基础配置¶
9.6.1 IPv6地址配置¶
1、启动IPv6流量转发
Router(config)#ipv6 unicast-routing
2、配置接口IPv6地址
Router(config-if)#ipv6 address 2000::/64 eui-64
Router(config-if)#ipv6 address 2000::1/64
9.6.2 IPv6域名解析配置¶
1、为IPv6地址定义静态名称
Router(config)#ipv6 host host_name [port] IPv6地址
2、配置一台或多台DNS服务器提供查询
Router(config)#ip name-server IPv6地址/IPv4地址
9.6.3 IPv6静态路由配置¶
1、静态路由配置
Router(config)#ipv6 route 2001::1/64 2001::2
2、静态缺省路由配置
Router(config)#ipv6 route ::/0 2001::2
9.6.4 RIPng配置¶
1、创建并进入RIP路由器配置模式
Router(config)#ipv6 router rip tag
2、在接口上配置RIP
Router(config-rtr)#int g0/0/1
Router(config-if)#ipv6 rip tag enable
3、显示各种RIP进程的状态
Router#show ipv6 rip
4、显示IPv6路由表中的RIP路由
Router#show ipv6 route rip
9.6.5 IPv6ACL配置¶
1、创建扩展访问列表
Router(config)#ipv6 access-list example
2、编写规则语句
Router(config-ipv6-acl)#{permit | deny} 协议 IPv6源地址 IPv6目的地址 eq 端口号
Router(config-ipv6-acl)#permit tcp 2001::1/64 2002::2/64 eq 23
3、在接口上调用ACL语句
Router(config-if)#ipv6 traffic-filter example {in | out}
十、NAT¶
网络地址转换,NAT不仅完美解决了IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。
装有NAT软件的路由器叫做NAT路由器。
10.1 NAT边界和地址类型¶
1、NAT设备是内网和外网的边界。常见术语如下: (1)Local:由内网统一编址的私有地址域,站在外网来看,是完全未知的地址。 (2)Global:指外网统一编址的地址域,可以配置内网主机到达外网的路由。 (3)Inside:表示主机的位置在内网。 (4)Outside:表示主机的位置在外网。 (5)出站流量:内网到外网的数据包。源地址被转换。 (6)入站流量:外网到内网的数据包。目的地址被转换。 2、NAT地址类型有4种,如下: (1)Inside-Local内部本地地址-内网主机配置的地址:内网主机与内网通信的地址 (2)Inside-global内网全局地址-由nat路由器定义:内网主机与外网通信的地址 (3)Outside-global外部全局地址-外网主机的外网通信地址 (4)Outside-local外部本地地址-一个外网主机,被虚拟到我们自己的内网地址
10.2 NAT转换条目¶
NAT有两种转换条目:NAT简单转换条目,仅仅转换IP包头中的地址。 1、NAT简单转换条目,仅仅转换IP包头中的地址。 2、NAT扩展转换条目,同时转换IP地址和端口号。
10.3 NAT转换类型和配置方法¶
常用NAT转换有以下三种类型: 1、静态源地址转换(Static Nat) 将内部网络的私有IP地址转换为公有IP地址,IP地址是一对一的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备的访问。 2、动态源地址转换(Dynamic Nat) 将内部网络的私有IP地址转换为公有IP地址,IP地址是不确定的。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部计算机数量时。可以采用动态地址转换的方式。
动态源地址转换的基本原理与静态NAT是完全相同的,唯一不同的是动态地址转换是在两个地址块之间,进行转换。 3、端口多路复用(PAT) PAT是指改变外出数据包的源端口并进行端口转换,即端口地址转换。采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自Internet的攻击。 (1)PAT转换特点 从内到外网的数据包,简称出站流量,源地址和源端口被转换(从内部本地地址:内部端口转换为内部全局地址:外部端口) 从外到内网的数据包,简称入站流量,目的地址和目的端口被转换(内部全局地址:外部端口转换为内部本地地址:内部端口)
10.4 NAT对路由要求¶
1、内网去往外网的路由,必须配置 2、外网去往内部全局地址的路由,必须配置 3、外网去往内部本地地址的路由,必须不能配置
10.5 路由器配置PPPoE Client连接Internet¶
1、路由器上配置DHCP地址池,并配置网关、发布地址段、导入通过ipcp获取的dns等信息。
Router(config)#ip dhcp pool pool_1
Router(dhcp-config)#network 10.0.0.0 255.0.0.0(发布地址段)
Router(dhcp-config)#default-router 10.0.0.1(配置网关)
Router(dhcp-config)#import all(导入通过ipcp获取的dns等信息)
2、路由器上连接内网接口上配置IP地址并标记为连接内部网络的接口。
Router(config)#int g0/0/0
Router(config-if)#ip address 10.0.0.1 255.255.255.0
Router(config-if)#ip nat inside (标记为连接内部网络的接口)
3、路由器上连接光猫的接口(外网物理连接接口)启动PPPoE以及以太口PPPoE客户端。
Router(config-if)#no ip address
Router(config-if)#pppoe enable(启动PPPoE)
Router(config-if)#pppoe-client dial-pool-number 1 (启动以太口PPPoE客户端)
4、路由器上创建PPPoE虚拟拨号接口,配置通过PPP协商动态获取地址、封装协议为PPP、与PPPoE物理接口绑定、优化PPPoE通信的MTU、标记为连接外部网络的接口、配置运营商分配的宽带用户名和密码。
Router(config)#interface Dialer 0(创建虚拟拨号接口,NAT外网接口)
Router(config-if)#ip address negotiated (PPP协商动态获取地址)
Router(config-if)#encapsulation ppp(封装协议为PPP)
Router(config-if)#dialer pool 1(与PPPoE物理接口绑定)
Router(config-if)#ip mtu 1492(优化PPPoE通信的MTU)
Router(config-if)#ip nat outside(标记为连接外部网络的接口)
Router(config-if)#ppp chap hostname www(配置运营商分配的宽带用户名)
Router(config-if)#ppp chap password cisco(配置运营商分配的宽带密码)
5、定义允许那些需要转换的内部本地地址的标准IP ACL
Router(config)#access-list 1 permit 10.0.0.0 通配符
6、建立动态源转换,指定上一步定义的ACL
Router(config)#ip nat inside source list 1 interface Dialer0 overload
7、配置去往外网的默认静态路由
Router(config)#ip route 0.0.0.0 0.0.0.0 Dialer 0
10.6 NAT配置命令¶
10.6.1 静态源地址转换配置命令¶
1、建立内部本地地址与内部全局地址间的静态转换。
Router(config)#ip nat inside source static 本地地址 全局地址
2、将该接口标记为连接内部网络的接口。
Router(config-if)#ip nat inside
3、将该接口标记为连接外部网络的接口。
Router(config-if)#ip nat outside
4、显示活动的转换。
Router#show ip nat translations
10.6.2 动态源地址转换配置命令¶
1、定义可根据需要进行分配的全局地址池
Router(config)#ip nat pool pool_1 起始IP 终止IP netmask 255.255.255.0
2、定义允许那些需要转换的内部本地地址的标准IP ACL
Router(config)#access-list 1 permit 1.1.1.1 通配符
3、建立动态源转换,指定上一步定义的ACL
Router(config)#ip nat inside source list 1 pool pool_1
10.6.3 PAT配置命令¶
1、定义允许那些需要转换的内部本地地址的标准IP ACL
Router(config)#access-list 1 permit 1.1.1.1 通配符
2、建立动态源转换,指定上一步定义的ACL
Router(config)#ip nat inside source list 1 interface gigabitEthernet 0/0/1 overload
3、显示活动的转换。
Router#show ip nat translations
10.6.4 清除NAT缓存条目配置命令¶
1、清除动态NAT的转换条目,释放路由器内存
Router#clear ip nat translation *
2、清除包含内部转换或同时包含内部转换与外部转换的简单动态转换条目。
Router#clear ip nat translation inside 全局地址 本地地址
3、清除包含外部的简单动态转换条目
Router#clear ip nat translation outside 全局地址 本地地址
4、清除扩展动态转换条目(PAT条目)
Router#clear ip nat translation protocol inside 全局地址 全局地址端口号 本地地址 本地地址端口号