CCNA7:ACL、NAT(一对一、一对多、多对多)、端口映射、远程登录

CCNA7:ACL、NAT(一对一、一对多、多对多)、端口映射、远程登录

一、远程登录:

远程登录的思路:首先在被登录方设置一个用户名和密码,然后开启远程登录。虚拟链路0-4,一共5根虚拟链路,允许同时5人登录进来。
在这里插入图片描述

R2(config)#username ccna privilege 15 secret cisco123
R2(config)#line vty 0 4
R2(config-line)#login local 

我们尝试远程登录一下R1,密码默认不显示:
在这里插入图片描述

二、ACL:访问控制列表:

首先我们要知道ACL有两种功能:一个是访问控制,还有一个

1、访问控制:

访问控制:对路由器流量进出的接口上,规则流量的进出。

定义ACL列表后,将列表调用于路由器的接口上,当流量通过接口时,进行匹配,匹配成功后按照设定的动作进行处理即可(允许、拒绝)

(1)匹配规则:

至上而下逐一匹配,上条匹配按上条执行,不再查看下条,末尾隐含拒绝所有。

解释: 这句话的意思是说:如果对一个网段或某个IP做了两个策略,那么会比较两个策略的先后顺序,位于策略中相对先出现的先执行。如果末尾不添加任何对其它路由的策略,则默认是拒绝的。

(2)分类:

①:标准ACL:

标准ACL仅关注数据包中的源IP地址,因此在调用的时候,应该尽量靠近目标,避免误删。

标准ACL的写法:编号写法:1~99,命名写法为:一个名字一张列表。

不足:当要删除一个表中的某条规则的时候整张表消失,解决办法就是使用 show running-config 然后将里面的配置复制到某个文档中,然后再修改,最后在贴进去。

②:扩展ACL:

扩展ACL关注数据包中的源、目标IP地址、目标端口号、协议号。因此在调用的时候应该靠近源,但是不能在源上。因为ACL不能限制本地路由器产生的其它流量(路由协议),因此可以拒绝其它路由器控制层面上的流量。

写法:扩展ACL的写法:编号写法:100~199,命名写法为:一个名字一张列表。

关注目标端口号:
ICMP(ping)跨层封装协议,不存在端口号
Telnet(远程登录):TCP下的23端口

特点:
1、一个名字一张表,删除其中某条策略并不影响。
2、有序列号便于删除和插入。

③:基于时间的ACL:
 创建A列表:
R1(config)#time-range A =

R1(config-time-range)#absolute start 12:00 1 aug 2018 end 12:00 1 aug 2020

定义整个列表的工作的总周期时间:
R1(config-time-range)#periodic daily 9:30 to 12:00
R1(config-time-range)#periodic daily 13:30 to 16:00

创建ACL扩展列表:A
R1(config)#ip access-list extended A
R1(config-ext-nacl)#permit ip host 172.16.20.253 any
R1(config-ext-nacl)#deny ip 172.16.20.0 0.0.0.255 any time-range A
R1(config-ext-nacl)#deny ip 172.16.10.0 0.0.0.255 any time-range A
R1(config-ext-nacl)#permit ip any any

2、定义感兴趣的流量:

定义感兴趣的流量:为其它的策略去匹配流量,可以为其它的策略进行服务,这里可以参考我的另一篇博客中写的相关策略:CCNP9:重发布技术+路由策略

如果只是这样晦涩的一说,我觉得还不是很好理解,接下来我用个小实验为大家深刻讲解一下,这个实验。

3、实验

这个实验我想采用之前单臂路由的实验图(CCNA实验:单臂路由),然后再稍微添加一下,做出来的效果如图:
在这里插入图片描述
这里再说明一下,左边的路由器R2,右边的路由器R1,中间的交换机名为sw1,最右边的交互机名为sw2。右边路由器下的PC均为DHCP方式获取的IP,左边的为静态方式。注意右边的路由器做的是单臂路由,存在两个虚拟子接口F0/0.1(vlan2)、F0/0.2(vlan3)。最后我使用的模拟器是Cisco Packet Tracer Instructor。

IP如上配置,配置好之后,添加两条静态路由即可。其余的可查看我那次的实验图。

R2(config)#ip route 192.168.1.0 255.255.255.0 192.168.3.2
R2(config)#ip route 192.168.2.0 255.255.255.0 192.168.3.2
R1(config)#ip route 192.168.4.0 255.255.255.0 192.168.3.1

现在我们开始添加策略:
Ⅰ、左边的PC6(192.168.4.2)不可以ping通右边的vlan2下的电脑要求如下:
(1)使用标准ACL的编号写法:在R1上的F0/0.1口的 方向调用。
原因:
标准ACL只关注源IP的位置,那么当我们在R2(左边的路由器)上添加策略,必然会导致PC6访问不了vlan3下的电脑,同样的R1上的F0/1口也一样。为了尽可能的让这种数据包减少网络资源的占用,我们需要将数据包能尽早就尽早的拒绝掉,因此我们需要在R1上F0/0.1的出方向( 方向在图上是↓)进行调用。

配置如下:
创建1表:
R1(config)#access-list 1 deny 192.168.4.2
R1(config)#access-list 1 permit any

f0/0.1口进行调用:
R1(config)#int f0/0.1
R1(config-subif)#ip access-group 1 out

(2)使用标准ACL的命名写法:

R1(config)#ip access-list standard a
R1(config-std-nacl)#deny host 192.168.4.2
R1(config-std-nacl)#permit any

R1(config)#int f0/0.1
R1(config-subif)#ip access-group a out

Ⅱ、接下来一个要求是:现在有另一个要求就是PC6不可以pingPC0,但是可以ping通其余的所有电脑。
我们删除之前的策略。由于使用扩展ACL,那么可以精准的匹配,因此我们最好的是在左边的路由器R2上F0/0口的入向调用。
(1)使用扩展ACL的编号写法:

拒绝主机192.168.4.2的流量到192.168.1.2R2(config)#access-list 100 deny ip host 192.168.4.2 host 192.168.1.2
R2(config)#access-list 100 permit ip any any

R2(config)#int f0/0
R2(config-if)#ip access-group 100 in

(2)使用扩展ACL的命名写法:

R2(config)#ip access-list extended b
R2(config-ext-nacl)#deny ip host 192.168.4.2 host 192.168.1.2 
R2(config-ext-nacl)#permit ip any any 

R2(config)#int f0/0
R2(config-if)#ip access-group b in

Ⅲ、拒绝PC6远程登录R1:
我这里使用的是编号写法:

R1(config)#access-list 101 deny tcp host 192.168.4.2 host 192.168.3.2 eq 23
R1(config)#access-list 101 permit ip any any
R1(config)#int f0/1
R1(config-if)#ip access-group 101 in
功能配置
标准ACLR1(config)#access-list 1 deny host 192.168.1.1(拒绝单一设备)
R1(config)#access-list 1 deny 192.168.1.0(拒绝范围)
R1(config)#access-list 1 deny any(拒绝所有)
扩展ACLR1(config)#access-list 100 deny ip host 192.168.1.1 host 192.168.1.2
R1(config)#access-list 100 deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
R1(config)#access-list 100 permit ip any any
规则端口R1(config)#access-list 101 deny tcp host 1.1.1.1 host 2.2.2.2 eq 23
R1(config)#access-list 102 deny icmp host 1.1.1.1 host 2.2.2.2
命名写法的增删R1(config)#ip access-list standard a
R1(config-std-nacl)#15 deny host 1.1.1.1
R1(config-std-nacl)#no 15
调用策略R1(config)#int f0/0
R1(config-subif)ip access-group 1 out

二、NAT:

NAT的作用就是实现网络地址转换(公有IP和私有IP间的互相转换),如下图所示,本地指的就是私有IP,全局指的就是公有IP。作用如下:
在边界路由器上:
流量从内部去往外部时,将数据包中的源IP地址进行修改(内部本地修改为内部全局);
流量从外部进入内部时,修改目标IP地址(外部全局修改为外部本地)
在这里插入图片描述
接下来我们用来讲解实验的图如下:实验底层配置、电脑IP如下图所示,之后R1、R2需要写两条静态,和两条缺省。

R1(config)#ip route 192.168.3.0 255.255.255.0 192.168.2.2
R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.2.2
R2(config)#ip route 192.168.1.0 255.255.255.0 192.168.2.1
R2(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2

在这里插入图片描述
图中的12.1.1.1 是公有IP,后面接的是整个内网。接下来我们就需要在R2上做NAT。
此时只有边界的公有IP1.1.1.2可以上网:
在这里插入图片描述
切记:一旦进行NAT配置,就必须定义边界路由器上各个接口的方向

1、一对一(静态):

R2(config)#ip nat inside source static 192.168.1.2 12.1.1.1 (将本地192.168.1.2转为12.1.1.1)
R2(config)#int f1/0
R2(config-if)#ip nat outside 
R2(config-if)#int f0/0
R2(config-if)#ip nat inside 
R2(config-if)#int f0/1
R2(config-if)#ip nat inside

我们用其中一台PC进行检验,没问题确实实现了访问外部公网。
在这里插入图片描述
一对一实际上是将本地私有和本地全局之间实现了固定的映射,当外部全局ping本地全局的时候,实际ping的是本地私有,可以通过路由器的跳数来判段,下图是PC4ping本地全局的图:
在这里插入图片描述
我们观察TTL发现,是125,说明经过了3台路由器(TTL:生存时间,数据包每经过一台路由器,TTL就减少1,TTL一般存在3个值:64、128、255)
综上:我们感觉一对一并没有太大的意义,那我们就将下面这个意义很大的一对多。

2、一对多(动态):

一对多有个别名叫做:PAT端口地址转换
上面做到的是一个本地私网IP地址转一个公有IP地址,然后现在做的 一对多 :就是将多个私网IP转换为同一公有IP地址,依赖数据包中的端口号来进行区分。
比如当这些私网IP去访问百度时,它发送的数据包会携带端口号给边界路由器。例如下面这样的对应关系:

私网IP及其端口被转换后(公网IP及其端口)
192.168.1.1:1111
192.168.1.2:2222
192.168.1.3:3333
12.1.1.1:1111
12.1.1.1:2222
12.1.1.1:3333

这样就实现了一对多的访问,现在问题来了,既然用的是端口那么难免会遇到两个IP发来的数据包它们的端口竟然会一样的情况,而NAT是这样解决的:
当遇到端口冲突的时候,NAT会将一个端口号进行改变,而改变后的端口会被记录在一张表中,当外部全局的IP发来消息后,依据这张表将数据包转发给原来的IP。

到这里问题又来了,上面说的当端口冲突的转换为另一个端口闲置的就好了对吧,那么当65535个端口都被占用的时候,那是不是就发不出去了呢?

没错,一对多的缺陷就在这里,当用户过多的时候,延时就会很大,当释放的端口小于数据包转发的量的时候就会出现延时,单点时间内65535个包出去之后,必须回来,端口释放,然后下一个。总之就是卡到炸,带宽再高也没用。因此这种一对多仅适合于中小企业等场合适用,要解决这个问题就需要接下来讲的多对多。

使用方法:先使用ACL定义感兴趣流量,哪些私有IP地址被转换,之后在定义NAT。

清除上一步骤的NAT:

R2(config)#no ip nat inside source static 192.168.1.2 12.1.1.1

一对多的配置如下:

R2(config)#access-list 1 permit 192.168.1.0 0.0.0.255
R2(config)#access-list 1 permit 192.168.2.0 0.0.0.255
R2(config)#access-list 1 permit 192.168.3.0 0.0.0.255
R2(config)#ip nat inside source list 1 interface f1/0 overload
注释:list 1:本地列表1interface f1/0表示本地全局,overload负载

由于我们之前定义过接口方向,下面的就可以不用敲了,但是正常得敲。
R2(config)#int f1/0
R2(config-if)#ip nat outside 
R2(config-if)#int f0/0
R2(config-if)#ip nat inside
R2(config-if)#int f0/1
R2(config-if)#ip nat inside

使用命令:show ip nat translations 可以查看对应关系

这里再补充一下,一对多可以和一对一两个联合使用,这样当外网访问本地的服务器时可以直接对应上,那如果没钱买俩IP,还要实现一对一的效果就可以使用端口映射功能。

3、端口映射:

我们可以将边界路由器上的公有IP的固定端口(比如说80)映射给内网中的服务器(192.168.1.100)这样通过外部访问12.1.1.1同时端口为80时,目标IP地址

R2(config)#ip nat inside source static tcp 192.168.1.100 80 12.1.1.1 80

如果再搭一个http服务器:
我们可以再浏览界面输入服务器IP以及端口http://12.1.1.1:8080,就可以访问另一台服务器了。

R2(config)#ip nat inside source static tcp 192.168.1.200 80 12.1.1.1 8080
通过外部访问12.1.1.2 同时目标端口为8080时,目标IP地址就一定被转换为192.168.1.200,端口号8080

4、多对多(静态或动态):

多对多就是将多个IP转为多个IP
使用方法:先用ACL,后用NAT

R2(config)#access-list 2 permit 192.168.0.0 0.0.255.255 (定义本地地址范围)
R2(config)#ip nat pool xxx 12.1.1.3 12.1.1.10 netmask 255.255.255.0 (定义内部全局地址)
R2(config)#ip nat inside source list 2 pool xxx overload (配置多对多NAT)

在配置多对多NAT时,是否携带overload将决定为静态或动态多对多,不携带就是静态多对多

不携带overload——静态多对多:最先来到边界路由器上的9个私有IP地址与这9个公有IP地址形成一对一。当第10个人想访问的时候,需要前9人中有人没有再使用,且释放后在一定时间之后才能使用。

携带overload——动态多对多:循环占用每个公有IP地址进行PAT(每单点时间内可以承受65535x公有IP个数 的数据包)

  • 3
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值