网络知识 ACL NAT IPv6

2017-12-27 17:00:31 浏览数 (1)

第1章 ACL 访问控制列表

访问控制表(Access Control List,ACL),又称存取控制串列,是使用以访问控制矩阵为基础的访问控制方法,每一个对象对应一个串列主体。

访问控制表描述每一个对象各自的访问控制,并记录可对此对象进行访问的所有主体对对象的权限。

1.1 为什么要用ACL

流量控制

匹配感兴趣的流量

1.2 标准访问控制列表

只能根据源地址做过滤

针对整个协议采取相关动作{允许或禁止}

1.3 扩展访问控制列表

能根据源、目的地地址、端口号等等进行过滤

能允许或拒绝特定的协议

1.4 基本原则

    1、按顺序执行,只要有一条满足,则不会继续查找

     2、隐含拒绝,如果都不匹配,那么一定匹配最后的隐含拒绝条目,思科默认的

     3、任何条件下只给用户能满足他们需求的最小权限

     4、不要忘记把ACL应用到端口上

1.5 ACL的操作

1.5.1 入站于出站

进方向和出方向是根据数据流相对于接口来确定的

1.5.2 入方向的ACL的操作

1.5.3 出方向的 ACL的操作

1.5.4 ACL语句

一、标准ACL

代码语言:javascript复制
access-list {1-99} {permit/deny} source-ip source-wildcard [log]

二、扩展ACL

代码语言:javascript复制
access-list {100-199} {permit/deny} protocol source-ip source-wildcard [operator port] destination-ip destination-wildcard   [operator port] [established]  [log]

三、命名ACL

代码语言:javascript复制
ip access-list {standard/extended} name
{ permit /deny} source-ip source-wildcard 标准ACL
{ permit /deny} protocol source-ip source-wildcard [operator port] destination-ip destination-wildcard [operator port] [established][log]  扩展acl

1.5.5 ACL匹配过程

顺序匹配,符合不再执行后面的

所有的都没有匹配到会丢弃(隐含拒绝)

1.6 ACL的配置

1.6.1 ACL的标识

1-99,1300-1999     标准访问控制列表

100-199,2000-2699 扩展访问控制列表

name                  命名访问控制列表

1.6.2 标准访问控制列表的配置

代码语言:javascript复制
access-list {1-99} {permit/deny} source [wildcard mask]

编号选择 1-99

通配符若无,默认0.0.0.0

   'no access-list access-list-number '会删除整个ACL列表

代码语言:javascript复制
ip access-group access-list-number {in|out }

在接口中应用

应用时关联入或出站方向

默认出站

'no ip access-group access-list-number '会移除接口上应用的访问列表

1.6.3 通配符

在路由器的配置中,经常出现通配符。和子网掩码一样,都是以“0”或“1”表示,不过与子网掩码所表示的意思却不一样。

子网掩码所表示的是IP的网络位和主机位,而通配符则表示与IP是否匹配。

通配符同样是32位,和IP地址一一对应,“0”位代表精确匹配,而“1“位代表不许匹配。

例如路由器EIGRP的配置中:

代码语言:javascript复制
RouterA(config)#router eigrp 100
RouterA(config-router)#network 10.0.0.0 0.0.0.255
RouterA(config-router)#network 192.168.1.0 0.0.0.255

10.0.0.0 0.0.0.255说明只要接口的IP地址是以“10”开头就参与EIGRP进程。

同理的,192.168.1.0 0.0.0.255说明只要IP是以192.168.1开头的IP就符合。

1.6.4 通配符缩写

代码语言:javascript复制
192.168.1.1 0.0.0.0 == host 192.168.1.1

精确匹配192.168.1.1这个ip

代码语言:javascript复制
0.0.0.0 255.255.255.255 == any

匹配所有IP

1.7 【实例】标准ACL

禁止主机A 上外网

1.7.1 拓扑图

1.7.2 配置路由acl

代码语言:javascript复制
R-acl-1(config)#access-list 1 deny 192.168.1.1 0.0.0.0
R-acl-1 (config)#access-list 1 permit any

应用到接口上

代码语言:javascript复制
R-acl-1 (config)#interface fastEthernet 0/0
R-acl-1 (config-if)#ip access-group 1 in

1.7.3 检查ACL 表内容

代码语言:javascript复制
R-acl-1#show access-lists 1
Standard IP access list 1
    deny host 192.168.1.1 (6 match(es))
    permit any

1.8 扩展访问控制列表的配置

同一个接口上针对一种协议只能用一个ACL

1.8.1 配置命令

代码语言:javascript复制
access-list {100-199} {permit/deny} protocol source-ip source-wildcard [operator port] destination-ip destination-wildcard  [operator port] [established]  [log]
access-list {100-199}  permit/deny  协议号 源地址 通配符 目的地址 通配符

应用

代码语言:javascript复制
ip access-group access-list-number {in|out }

在接口中应用

应用时关联入或出站方向

1.9 【实例】扩展ACL

禁止A网段中的192.168.1.1-192.168.1.30 访问B网段的服务器

1.9.1 拓扑图

1.9.2 路由器acl配置

代码语言:javascript复制
R-ACL-2(config)#access-list 100 deny ip 192.168.1.0 0.0.0.31 host 192.168.2.200
R-ACL-2(config)#access-list 100 permit ip any any

应用到接口

代码语言:javascript复制
R-ACL-2(config)#interface fastEthernet 0/0
R-ACL-2(config-if)#ip access-group 100 in

1.9.3 检查acl信息

代码语言:javascript复制
R-ACL-2#show  access-lists 100
Extended IP access list 100
    deny ip 192.168.1.0 0.0.0.31 host 192.168.2.200
    permit ip any any
代码语言:javascript复制
1 C:>PING 192.168.2.200
2 
3 Pinging 192.168.2.200 with 32 bytes of data:
4  
5 Reply from 192.168.1.254: Destination host unreachable.
6 Reply from 192.168.1.254: Destination host unreachable.

1.9.4 禁止访问某一项服务

代码语言:javascript复制
access-list 100 deny tcp any host 192.168.2.200 eq 23
access-list 100 permint any

标准于扩展ACL的配置内容

代码语言:javascript复制
R-ACL-2(config)#access-list 1 permit ?
  A.B.C.D  Address to match
  any      Any source host
  host     A single host address

R-ACL-2(config)#access-list 100 permit  ?
  ahp    Authentication Header Protocol
  eigrp  Cisco's EIGRP routing protocol
  esp    Encapsulation Security Payload
  gre    Cisco's GRE tunneling
  icmp   Internet Control Message Protocol
  ip     Any Internet Protocol
  ospf   OSPF routing protocol
  tcp    Transmission Control Protocol
  udp    User Datagram Protocol

1.10 命名访问控制列表的配置

1.10.1 配置命令

格式

代码语言:javascript复制
ip access-list  { extended|standard } name

配置

代码语言:javascript复制
R-ACL-2(config)#ip access-list extended test
R-ACL-2(config-ext-nacl)#10 deny TCP 192.168.12.0 0.0.0.255 any eq 23
R-ACL-2(config-ext-nacl)#20 permit ip any any

查看

代码语言:javascript复制
R-ACL-2#show ip access-lists test
Extended IP access list test
    deny tcp 192.168.12.0 0.0.0.255 any eq telnet
    permit ip any any

应用到接口

代码语言:javascript复制
R-ACL-2(config)#interface fastEthernet 0/0
R-ACL-2(config-if)#ip access-group test in

1.11 注意

每个接口,每个方向,每种协议,只能设置1个ACL

组织好你的ACL的顺序,比如测试性的最好放在ACL的最顶部

不可能从ACL中除去1行,除去一行意味着你将除去整个ACL。命名ACL除外

默认acl结尾语句时deny any ,所以在ACL中至少有一句permint语句

记得创建了ACL后应用到接口上

ACL是用于过滤经过路由器的数据包,他并不会过滤路由器本身产生的数据包

尽可能的把IP标准ACL放在距离目标近的地方;把扩展ACL放在离源地址近的地方

第2章 NAT动态地址转换

2.1 为什么需要NAT

IPv4地址紧缺

解决方案: DHCP、IPv6、NAT

2.1.1 私有地址空间

私有地址(Private address)属于非注册地址,专门为组织机构内部使用。

   NAT将私有地址转化为共有IP

2.2 私有IP地址空间

10.0.0.0 ~ 10.255.255.255

172.16.0.0 ~ 172.31.255.255

192.168.0.0 ~ 192.168.255.255

2.3 NAT术语

名称

含义

内部本地

转换之前内部源地址的名字

外部本地

转换之前目标主机的名字

内部全局

转换之后内部主机的名字

外部全局

转换之后外部目标主机的名字

2.4 NAT三种类型

2.4.1 静态NAT

一对一映射

基本网络地址转换(Basic NAT)

这一种也可称作NAT或“静态NAT”。它在技术上比较简单一点,仅支持地址转换,不支持端口映射。Basic NAT要求对每一个当前连接都要对应一个公网IP地址,因此要维护一个公网的地址池。宽带(broadband)路由器通常使用这种方式来允许一台指定的设备去管理所有的外部链接,甚至当路由器本身只有一个可用外部IP时也如此,这台路由器有时也被标记为DMZ主机。

基本NAT要维护一个无端口号NAT表,结构如下。

2.4.2 动态NAT

动态NAT是指将内部网络的私有IP地址转换为公用IP地址时,IP地址对是不确定的,是随机的,所有被授权访问Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。

动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方式。

2.4.3 端口复用

网络地址端口转换(NAPT)

这种方式支持端口的映射,并允许多台主机共享一个公网IP地址。

支持端口转换的NAT又可以分为两类:源地址转换和目的地址转换。前一种情形下发起连接的计算机的IP地址将会被重写,使得内网主机发出的数据包能够到达外网主机。后一种情况下被连接计算机的IP地址将被重写,使得外网主机发出的数据包能够到达内网主机。实际上,以上两种方式通常会一起被使用以支持双向通信。

NAPT维护一个带有IP以及端口号的NAT表,结构如下。

2.5 NAT配置

2.5.1 静态NAT配置

代码语言:javascript复制
ip nat inside source static local-ip global-ip
进入连接内网端口

ip nat inside
进入连接外网端口

ip nat outside

查看

代码语言:javascript复制
show ip nat trnslations

2.5.2 动态NAT转换

代码语言:javascript复制
ip nat pool name start-ip end-ip
access-list access-list-number  permint source [source-wlldcard]
ip nat inside source list access-list-number pool name

查看

代码语言:javascript复制
show ip nat trnslations

2.5.3 PAT配置

代码语言:javascript复制
access-list access-list-number permit  source source-wlldcard
ip nat inside source list access-list-number interface interface overload

查看

代码语言:javascript复制
    show ip nat translations 

2.5.4 清除NAT转换表项

清除所有

代码语言:javascript复制
clear ip nat translation *

2.6 【实验】NAT转换

内网手游PC能够访问外网

外网用户能够通过公网地址访问内网服务器的telnet服务。

2.6.1 拓扑图

2.6.2 配置nat

代码语言:javascript复制
R-NAT-1(config)#access-list 1 permit 192.168.1.0 0.0.0.255
R-NAT-1(config)#ip nat inside source list 1 interface serial 0/0 overload

注意:
R-NAT-1(config)#interface fastEthernet 0/0
R-NAT-1(config-if)#ip nat   inside
R-NAT-1(config-if)#interface s 0/0
R-NAT-1(config-if)#ip nat   outside

2.6.3 查看nat表

代码语言:javascript复制
R-NAT-1#show ip nat translations
Pro  Inside global     Inside local       Outside local      Outside global
icmp 202.101.100.1:1   192.168.1.1:1      202.101.100.30:1   202.101.100.30:1
icmp 202.101.100.1:2   192.168.1.1:2      202.101.100.30:2   202.101.100.30:2
icmp 202.101.100.1:3   192.168.1.1:3      202.101.100.30:3   202.101.100.30:3
icmp 202.101.100.1:4   192.168.1.1:4      202.101.100.30:4   202.101.100.30:4

2.6.4 映射内网服务器

完整映射

代码语言:javascript复制
R-NAT-1(config)#ip nat inside source static 192.168.1.100 202.101.100.3

端口映射

代码语言:javascript复制
R-NAT-1(config)#ip nat inside source static tcp 192.168.1.100 80 202.101.100.1 8080

第3章 IPv6

IPv6的128位地址通常写成8组,每组为四个十六进制数的形式。

3.1 IPv6地址

代码语言:javascript复制
2001:0db8:3c4d:0012:0000:0000:1234:56ab
全球前缀       子网       接口ID
http://[2001:0db8:3c4d:0012:0000:0000:1234:56ab]/default.html

Web浏览器发起HTTP连接的例子:

3.1.1 【示例】IPv6地址表达式

代码语言:javascript复制
AD80:0000:0000:0000:ABAA:0000:00C2:0002

是一个合法的IPv6地址。这个地址比较长,看起来不方便也不易于书写。

零压缩法可以用来缩减其长度。

如果几个连续段位的值都是0,那么这些0就可以简单的以::来表示,上述地址就可写成

代码语言:javascript复制
AD80::ABAA:0000:00C2:0002

这里要注意的是只能简化连续的段位的0,其前后的0都要保留,比如AD80的最后的这个0,不能被简化。还有这个只能用一次,在上例中的ABAA后面的0000就不能再次简化。当然也可以在AAAA后面使用::,这样的话前面的12个0就不能压缩了。这个限制的目的是为了能准确还原被压缩的0,不然就无法确定每个::代表了多少个0。

3.2 IPv6地址类型

单播地址

–全球单播地址:典型的、可路由的通用地址

–链路本地地址:私有地址、不能被路由

–本地唯一地址:用于非路由目的,但是全球唯一

组播地址

任播地址

3.2.1 单播地址(unicast)

单播地址又叫单目地址,就是传统的点对点通信,单播表示一个单接口的标识符。IPv6单播地址的类型又分:全球单播地址、链路本地地址和站点本地地址。

*全球单播地址相当于IPv4的公网地址,这类地址由供应商提供,或由交换局提供,可聚集全球单点传送地址结构。

*链路本地单播地址是处于可聚集全球单播地址外的,只限于直连链路,是单网络链路上给的主机编号,作用是进行链路上主机的通信

*本地唯一地址用于对特定范围的通信也可说成是规定站点内的通信,不能与站点外地址通信,也不能直接连接到全球Internet。

3.2.2 组播地址(multicast)

又称为多点传送地址或者多播,即一组接口的标识符,只要存在合适的多点传输的路由拓扑就可将设有多播地址的包传输到这个地址识别的那组接口。

3.2.3 任播地址(anycast)

又称之为任意点传送地址,它也是一个标识符可以识别多重接口的情况,只要有合适的路由拓扑,即可以将设有任意传播地址的数据包传给位址识别的最近的单一接口。

最近的接口是指最短的路由距离。任意点传送地址空间可以认为是从单点传送地址空间中划分出来的,它可以是表示单点传送地址的任何形式。它与单点传送地址间结构上是没有差别的。目前,任意点传送地址仅分配给路由器。

子网-路由任意点传送地址是必须预先定义的,根据给定接口的子网前缀产生,要构建一个子网路由任意点地址必须固定子网前缀的位数,余下位数必须设定为0。

3.3 IPv6特殊的地址

IPv6地址

功能

0:0:0:0:0:0:0:0 等于::

等价于IPv4的0.0.0.0

0:0:0:0:0:0:0:1 等于::1

等价于IPv4的127.0.0.1

0:0:0:0:0:0:0:192.168.100.1

这是在IPv6/v4混合网络中IPv4地址表示

2000::/3

全球单播地址范围

FC00::/7

本地唯一单播地址范围

FE80::/10

链路本地单播地址范围

FF00::/8

组播地址范围

3FFF:FFFF::/32

为示例和文档保留的地址

2001:0DB8::/32

也是为示例和文档保留的地址

2002::/16

拥有IPv6到IPv4的转换系统,IPv6包直接通过IPv4网络传输

3.4 自动配置

某台设备的MAC地址:

代码语言:javascript复制
0060.D673.1987
0260.D6FF.FE73.1987

u IPv6地址的接口ID是64位,MAC地址只有48位,因此需要再加上16位,及在中间填充FFFE

代码语言:javascript复制
02 → 00000010

u 在填充过程中,第7位如果改成值为1,及为全球唯一的,这一位改成值为0,及为本的唯一的

u 这种类型的自动配置称为“无状态自动配置”

3.5 用IPv6配置Cisco路由器

在路由器上启用IPv6,默认时,IPv6流量转发被禁用

代码语言:javascript复制
ipv6 unicast-routing

在接口上配置IPv6地址

代码语言:javascript复制
ipv6 address 2001:db8:3c4d:1:0260.d6FF.FE73.1987/64

启用接口,通过DHCP获得IPv6地址

代码语言:javascript复制
ipv6 enable

0 人点赞