在企业网络中经常遇到这样的问题:在网络一个重要的部门的主机或服务器不允许其他部门访问,而这个部门却可以去访问其他的部门的主机或服务器。我们可以利用访问控制列表ACL实现单方向访问来实现以上单向访问功能。

所谓单向访问,就是一部分网络主机可以访问另一部分网络主机,而反过来则不允许访问。对于单向访问不能简单的通过访问控制列表ACL中的deny语句来实现,deny语句可以实现AB主机间访问数据流的彻底阻断,但是无法实现单向访问。因为如果denyA主机到B主机的访问,那么B主机也就不能访问A主机了(因为B主机到A主机的访问数据虽然能到达A主机,但是A主机的回复数据流被ACL访问控制列表规则阻断了)。

那么怎么实现单向访问呢?答案是利用permit语句。方法就是利用permit语句让B主机访问A主机的同时允许A主机的响应数据流通过(要在permit语句中使用established参数),但是不允许由A主机发起的到B主机的访问通过,这样就可以实现B主机向A主机的单向访问。

扩展的单向访问控制列表ACL的基本配置命令如下:
Router(config)#access-list access-list-number {permit|deny} protocol source source-wildcard [operator port] destination destination-wildcard [operator port] [established] [log]
参数解释:
access-list-number 扩展的访问控制列表ACL的编号,比如100
permit|deny
允许或不允许通过

protocol 协议类型,比如 TCP IP UDP .
soure
源地址

destination 目标地址
established 已建立的连接
established参数可以在拒绝数据流通过的方向上,让已建立的连接的TCP数据流通过(比如ACK确认包),我们正是利用这一点来实现单向访问,将一个普通的扩展访问列表ACL转变成一个允许单向访问的控制列表ACL

在路由器接口上应用扩展的访问控制列表ACL的配置命令如下:
Router(config)#ip access-group access-list-number in (一般都是进方向)

下边我们用一个ACL实例来看一下具体的实现单向访问的方法:
网络环境假定:

A部门网段:路由 S0192.168.0.1 E010.98.0.1
B
部门网段:路由 S0192.168.0.2 E010.98.1.1
主机A B分别属于两个部门

主要配置如下:
A路由配置:
!
interface eth0
ip add 10.98.0.1 255.255.0.0
interface s0
ip add 192.168.0.1 255.255.255.0
ip access-group 100 in

!
ip route 10.98.1.0 255.255.0.0 s0
!
access-list 100 permit tcp any host 10.98.0.1 established log

(这条命令允许10.98.0.1建立的连接回送数据)
access-list 100 deny ip any any log

B路由配置:
!
interface eth0
ip add 10.98.1.1 255.255.0.0
!
inter s0
ip add 192.168.0.2 255.255.255.0
!
ip route 10.98.0.1 255.255.0.0 s0

通过访问控制列表ACL的限制实现了B部门到A部门之间单项访问,部门A可以访问部门B的网络主机或服务器,而B部门的主机无法访问到A部门的主机。