扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
案例一:拒绝某个IP地址访问互联网
现在某个企业的网络拓扑结构大致如下:
公司的网络结构比较简单,一台路由器连接交换机,然后再连接终端电脑,路由器作为企业内网与外网连接的通信口。现在的问题是,企业在网络管理员,可能需要限制某些IP地址,他们不能够访问互联网。但是,他们可以访问连接在路由器上的服务器。针对企业的这种需求,访问控制列表该如何实现呢?下面我们就以拒绝一个IP地址为例,谈谈该如何设置访问控制列表,多个IP地址也是类似的道理。假设用户电脑的IP地址为192.168.0.10,我们现在需要拒绝这个IP地址访问互联网。
首先,我们来看看访问控制列表的设置。
Access-list 1 deny host 192.168.0.10 0.0.0.0
Access-list 1 permit 0.0.0.0 255.255.255.255
只要在路由器上配置这两条简单的访问控制列表语句,就可以达到限制192.168.0.10这个IP地址访问互联网。然后把这个访问控制列表关联到互联网的出站端口即可。
在写以上的访问控制列表语句的时候,我们需要注意以下几点:
1、要注意语句的顺序。我们在上篇文章中,谈到过访问控制列表其实就是各种允许或者拒绝语句的集合。不过,其还有一个特点,就是其是根据从上到下的语句来判断的。当第一个条件满足时,就不会去判断第二条语句。如现在有一个来自于192.168.0.10的数据包,他要发送到互联网上。则在路由器进行检查的时候,他从数据包中获得IP地址,然后根据这个IP地址来核对访问控制列表。当他看到访问控制列表中,第一条语句就是拒绝192.168.0.10这个IP地址访问互联网的话,则其就不会去判断第二条语句/。假设我们现在把第一条语句跟第二条语句进行对换的话,又会有什么结果发生呢?当路由器接到192.168.0.10发来的数据包,然后核对访问控制列表中的语句。而“Access-list 1 permit 0.0.0.0 255.255.255.255”这条语句的意思则是允许所有的IP地址从这个端口转发出去。也就是说,也允许来自于192.168.0.10的数据包从这个端口出去。而这一条语句满足的时候,第二条语句“Access-list 1 deny host 192.168.0.10 0.0.0.0”就不会被执行。此时,主机192.168.0.10就可以光明正大的访问互联网。这就达不到企业所期望的控制要求。所以,若访问控制列表中的语句顺序出现颠倒的话,则最后出现的结果可能是跟用户预先期待的会大相径庭。
2、访问控制列表的名字是用数字来表示的。如上面语句中的1,就表示这是一号访问控制列表。把访问控制列表关联到具体的路由器端口时,也是利用这个数字进行关联。不过这里要注意一个潜规则。一般访问控制列表分为两类,一是标准访问控制列表,二是扩展的访问控制列表。为了管理的方便,一般1-99之间的数字用来表示是标准的访问控制列表。而100到199之间,就表示路由器将用扩展的访问控制列表条件来进行判断。一般在定义访问控制列表的时候,最好大家都要遵守这个规则。因为有时会,可能不仅一个网络管理员来管理路由器。
3、访问控制列表配置四步走。虽然在官方的文档上,一般把访问控制列表的配置分成两步,不过,在实际工作中,笔者还是喜欢把他分为四个步骤,如此的话,可以减少错误的发生。第一步就是书写需求。从上面我们可以看出,访问控制列表就是一条条条件语句的集合,而且对于条件的顺序非常敏感。为此,我们在做访问控制列表之前,需要先对用户的需求进行整理,先在纸上对于各条判断语句做出顺序的调整。第二步先在路由器模拟器上进行测试。因为路由器的改动会影响整个网络的运行,所以,在对路由器进行任何调整之前,笔者的建议是现在路由器的模拟器上进行测试。像CISCO就提供了一些很好的路由模拟器,企业可以在这些模拟器上测试自己配置的准确性。第三步在路由器上写访问控制列表语句。当测试没有问题的时候,就把访问控制列表语句移植到路由器上。第四步把访问控制列表语句关联到特定的端口。在访问控制列表语句中,没有指定这个访问控制列表用于哪个端口。只有等访问控制列表完成后,把这个访问控制列表关联到特定的路由器端口,这个访问控制列表才会起作用。
4、访问控制列表建立之后,如果需要更改访问控制列表,该怎么办呢?如我们现在想让192.168.0.10这个Ip地址访问互联网,而是想禁止102.168.0.60这个IP地址。一般来说,用户是不能直接更改这个访问控制列表的,即使更改了也没有作用。而是必须先用命令删除整个访问控制列表,然后再重新建立并进行端口的关联。另外需要注意的是,没一条新建的条件语句都被安置在访问控制列表的最后面。还有就是,访问控制列表建立之后,若想通过行序号删除访问控制列表中的某条语句,也是不可以的。如在上面这个访问控制列表中,如果现在网络管理员加入“Access-list 1 deny host 192.168.0.60 0.0.0.0”这条条件语句。网络管理员原来的设想是同时拒绝192.168.0.10与192.168.0.60两台主机访问互联网络,可是,若在原有的访问控制列表中,加入语句的话,则会变为:
Access-list 1 deny host 192.168.0.10 0.0.0.0
Access-list 1 permit 0.0.0.0 255.255.255.255
Access-list 1 deny host 192.168.0.60 0.0.0.0
而根据我们上面所讲的访问控制列表时按先后顺序进行条件语句判断的,由于第二条语句是允许所有的IP地址访问互联网络,所以,第三条判断语句永远不会被执行。如此的话,就不能达到用户的目的。
如果现在网络管理员想删除第二条语句,然后建一条“Access-list 1 permit 0.0.0.0 255.255.255.255”语句,如此,顺序不是对了吗?这个设想是好的,但是,访问控制列表时不能够通过行序号来删除某个行的条件语句。所以,如果用户需要新加条件语句时,一般只有删除原先的所有条件语句,然后重新建立。
基于这个原因,所以,笔者不建议直接在路由器上编辑访问控制列表。而是现在网络管理的终端电脑上,利用记事本先编辑好访问控制列表,然后再利用TFTP(简单文本传输协议),把这访问控制列表移植到路由器上。如此的话,就可以提高访问控制列表编辑的效率,而且,通过简单的复制、粘贴还可以减少错误的发生。
5、若有多台主机需要拒绝访问互联网,该如何处理呢?在企业网络的实际管理中,往往不是一台或者几台电脑不能访问互联网或者某个应用,而是某几个部门的电脑不能访问,如不能使用QQ等。遇到这种情况,若一个个的区制定IP地址,那显然会非常的麻烦。此时,我们可以考虑,把这些不能够访问互联网的电脑,对他们的IP地址尽心规划,划分成一个子网。然后再访问控制列表中,对子网进行过滤,而不是对IP地址进行过滤。如现在网络管理员希望对于192.168.4.0的子网进行管理,不允许他们访问互联网,但是访问内部网络是没有限制的。此时,我们就可以按照如下的规则书写访问控制列表。
Access-list 1 deny host 192.168.4.0 0.0.0.255
Access-list 1 permit 0.0.0.0 255.255.255.255
如此的话,只要数据包的IP地址属于这个子网的,则路由器就会拒绝这些数据包通过其互联网接口进行转发。现在利用子网来进行过滤的话,我们只用了一条条件语句;而我们若利用单个IP地址来过滤的话,则这个子网内有多少主机就需要书写多少条条件语句。而且,灵活性也很差。如以后我们还需要指定某些IP地址不能访问互联网的话,还必须对访问控制列表进行调整。而我们若通过子网的形式进行过滤的话,以后遇到这种需求,只需要把用户的电脑归入到这个子网内,如此的话,在不调整原有访问控制列表的情况下,也可以实现企业的网路管理需求。这明显比按单个IP地址来进行过滤,要方便的多。
上面笔者讲述的是按IP地址或者子网来进行网络过滤。不过,这有一个比较大的缺陷,这个过滤是“一棒子打死”的过滤方法。也就是说,根据IP地址过滤的话,则会过滤所有的网络流量。被访问控制列表列入黑名单的IP地址,不仅不能够使用QQ等被禁止的网络聊天工具,而且,也不能访问互联网的邮件等等。也就是说,不能根据协议的类型来管理网络流量。而后面笔者要举的扩展访问控制列表的例子,就可以满足企业根据协议对网络流量进行管理的需求。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。