(
1
)标准型
IP
访问列表的格式
----
标准型
IP
访问列表的格式如下:
---- access-list[list number][permit|deny][source address]
---- [address][wildcard mask][log]
----
下面解释一下标准型
IP
访问列表的关键字和参数。首先,在
access
和
list
这
2
个关键字之间必须有一个连字符
"-"
;其次,
list number
的范围在
0
~
99
之间,这表明该
access-list
语句是一个普通的标准型
IP
访问列表语句。因为对于
Cisco IOS
,在
0
~
99
之间的数字指示出该访问列表和
IP
协议有关,所以
list number
参数具有双重功能
:
(
1
)定义访问列表的操作协议
;
(
2
)通知
IOS
在处理
access-list
语句时,把相同的
list number
参数作为同一实体对待。正如本文在后面所讨论的,扩展型
IP
访问列表也是通过
list number
(范围是
100
~
199
之间的数字)而表现其特点的。因此,当运用访问列表时,还需要补充如下重要的规则
:
在需要创建访问列表的时候,需要选择适当的
list number
参数。
----
(
2
)允许
/
拒绝数据包通过
----
在标准型
IP
访问列表中,使用
permit
语句可以使得和访问列表项目匹配的数据包通过接口,而
deny
语句可以在接口过滤掉和访问列表项目匹配的数据包。
source address
代表主机的
IP
地址,利用不同掩码的组合可以指定主机。
----
为了更好地了解
IP
地址和通配符掩码的作用,这里举一个例子。假设您的公司有一个分支机构,其
IP
地址为
C
类的
192.46.28.0
。在您的公司,每个分支机构都需要通过总部的路由器访问
Internet
。要实现这点,您就可以使用一个通配符掩码
0.0.0 .255
。因为
C
类
IP
地址的最后一组数字代表主机,把它们都置
1
即允许总部访问网络上的每一台主机。因此,您的标准型
IP
访问列表中的
access-list
语句如下:
---- access-list 1 permit 192.46.28.0 0.0.0.255
----
注意,通配符掩码是子网掩码的补充。因此,如果您是网络高手,您可以先确定子网掩码,然后把它转换成可应用的通配符掩码。这里,又可以补充一条访问列表的规则
5
。
----
(
3
)指定地址
----
如果您想要指定一个特定的主机,可以增加一个通配符掩码
0.0.0.0
。例如,为了让来自
IP
地址为
192.46.27.7
的数据包通过,可以使用下列语句:
---- Access-list 1 permit 192.46.27.7 0.0.0.0
----
在
Cisco
的访问列表中,用户除了使用上述的通配符掩码
0.0.0.0
来指定特定的主机外,还可以使用
"host"
这一关键字。例如,为了让来自
IP
地址为
192.46.27.7
的数据包通过,您可以使用下列语句:
---- Access-list 1 permit host 192.46.27.7
----
除了可以利用关键字
"host"
来代表通配符掩码
0.0.0.0
外,关键字
"any"
可以作为源地址的缩写,并代表通配符掩码
0.0.0.0 255.255.255.255
。例如,如果希望拒绝来自
IP
地址为
192.46.27.8
的站点的数据包,可以在访问列表中增加以下语句:
---- Access-list 1 deny host 192.46.27.8
---- Access-list 1 permit any
----
注意上述
2
条访问列表语句的次序。第
1
条语句把来自源地址为
192.46.27.8
的数据包过滤掉,第
2
条语句则允许来自任何源地址的数据包通过访问列表作用的接口。如果改变上述语句的次序,那么访问列表将不能够阻止来自源地址为
192.46.27.8
的数据包通过接口。因为访问列表是按从上到下的次序执行语句的。这样,如果第
1
条语句是
:
---- Access-list 1 permit any
----
的话,那么来自任何源地址的数据包都会通过接口。
----
(
4
)拒绝的奥秘
----
在默认情况下,除非明确规定允许通过,访问列表总是阻止或拒绝一切数据包的通过,即实际上在每个访问列表的最后,都隐含有一条
"deny any"
的语句。假设我们使用了前面创建的标准
IP
访问列表,从路由器的角度来看,这条语句的实际内容如下:
---- access-list 1 deny host 192.46.27.8
---- access-list 1 permit any
---- access-list 1 deny any
----
在上述例子里面,由于访问列表中第
2
条语句明确允许任何数据包都通过,所以隐含的拒绝语句不起作用,但实际情况并不总是如此。例如,如果希望来自源地址为
192.46.27.8
和
192.46.27.12
的数据包通过路由器的接口,同时阻止其他一切数据包通过,则访问列表的代码如下:
---- access-list 1 permit host 192.46.27.8
---- access-list 1 permit host 192.46.27.12
----
注意,因为所有的访问列表会自动在最后包括该语句
.
----
顺便讨论一下标准型
IP
访问列表的参数
"log"
,它起日志的作用。一旦访问列表作用于某个接口,那么包括关键字
"log"
的语句将记录那些满足访问列表中
"permit"
和
"deny"
条件的数据包。第一个通过接口并且和访问列表语句匹配的数据包将立即产生一个日志信息。后续的数据包根据记录日志的方式,或者在控制台上显示日志,或者在内存中记录日志。通过
Cisco IOS
的控制台命令可以选择记录日志方式。
扩展型
IP
访问列表
----
扩展型
IP
访问列表在数据包的过滤方面增加了不少功能和灵活性。除了可以基于源地址和目标地址过滤外,还可以根据协议、源端口和目的端口过滤,甚至可以利用各种选项过滤。这些选项能够对数据包中某些域的信息进行读取和比较。扩展型
IP
访问列表的通用格式如下:
---- access-list[list number][permit|deny]
---- [protocol|protocol key word]
---- [source address source-wildcard mask][source port]
---- [destination address destination-wildcard mask]
---- [destination port][log options]
----
和标准型
IP
访问列表类似,
"list number"
标志了访问列表的类型。数字
100
~
199
用于确定
100
个惟一的扩展型
IP
访问列表。
"protocol"
确定需要过滤的协议,其中包括
IP
、
TCP
、
UDP
和
ICMP
等等。
----
如果我们回顾一下数据包是如何形成的,我们就会了解为什么协议会影响数据包的过滤,尽管有时这样会产生副作用。图
2
表示了数据包的形成。请注意,应用数据通常有一个在传输层增加的前缀,它可以是
TCP
协议或
UDP
协议的头部,这样就增加了一个指示应用的端口标志。当数据流入协议栈之后,网络层再加上一个包含地址信息的
IP
协议的头部。
由于
IP
头部传送
TCP
、
UDP
、路由协议和
ICMP
协议,所以在访问列表的语句中,
IP
协议的级别比其他协议更为重要。但是,在有些应用中,您可能需要改变这种情况,您需要基于某个非
IP
协议进行过滤
----
为了更好地说明,下面列举
2
个扩展型
IP
访问列表的语句来说明。假设我们希望阻止
TCP
协议的流量访问
IP
地址为
192.78.46.8
的服务器,同时允许其他协议的流量访问该服务器。那么以下访问列表语句能满足这一要求吗?
---- access-list 101 permit host 192.78.46.8
---- access-list 101 deny host 192.78.46.12
----
回答是否定的。第一条语句允许所有的
IP
流量、同时包括
TCP
流量通过指定的主机地址。这样,第二条语句将不起任何作用。可是,如果改变上面
2
条语句的次序
反向访问列表
有
5
个
VLAN,
分别为
管理
(63)
、办公
(48)
、业务
(49)
、财务
(50)
、家庭
(51)
。
要求
:
管理可以访问其它
,
而其它不能访问管理
,
并且其它
VLAN
之间不能互相访问!
其它的应用不受影响,例如通过上连进行
INTERNET
的访问
方法一
:
只在管理
VLAN
的接口上配置
,
其它
VLAN
接口不用配置。
在入方向放置
reflect
ip access-list extended infilter
permit ip any any reflect cciepass
!
在出方向放置
evaluate
ip access-list extended outfilter
evaluate cciepass
deny i p 10.54.48 .0 0.0.0.255 any
deny i p 10.54.49 .0.0.0.0.255 any
deny i p 10.54.50 .0 0.0.0.255 any
deny i p 10.54.51 .0 0.0.0.255 any
permit ip any any
!应用到管理接口
int vlan 63
ip access-group infilter in
ip access-group outfilter out
方法二:在管理
VLAN
接口上不放置任何访问列表,而是在其它
VLAN
接口都放。
以办公
VLAN
为例:
在出方向放置
reflect
ip access-list extended outfilter
permit ip any any reflect cciepass
!
在入方向放置
evaluate
ip access-list extended infilter
deny i p 10.54.48 .0 0.0.0.255 10.54.49.0 0.0.0.255
deny i p 10.54.48 .0 0.0.0.255 10.54.50.0 0.0.0.255
deny i p 10.54.48 .0 0.0.0.255 10.54.51.0 0.0.0.255
deny i p 10.54.48 .0 0.0.0.255 10.54.63.0 0.0.0.255
evaluate cciepass
permit ip any any
!
应用到办公
VLAN
接口:
int vlan 48
ip access-group infilter in
ip access-group outfilter out
总结:
1
)
Reflect
放置在允许的方向上(可进可出)
2
)
放在管理
VLAN
上配置简单,但是不如放在所有其它
VLAN
上直接。
3)
如果在内网口上放置
:
在入上设置
Reflect
如果在外网口上放置
:
在出口上放置
Reflect
LAN WAN
-
inbound outbound
4)reflect
不对本地路由器上的数据包跟踪
,
所以对待进入的数据包时注意
,
要允许一些数据流进入
关于访问列表的
in/out
不管在那个端口启用
,
就在那个端口下
ip access-group x in/out
所谓
IN,
就是在数据包进入路由器之前作访问表的对照
,
如果是
OUT,
就是数据可以先进路由器
,
然后在出路由器时检查访问列表
,
所以默认是
IN.
例如
,
假如你的例子中
,E
口是指向内网
,
并用
IN,
就是数据包
----
来自内网
----
在进入路由器之前并检查
.
思科的访问列表中
,
最后默认为
DENY
ANY,所以一般都要在列表最后一项加,
access-list xxx permit ip any any
从
IOS12.0
开始,
CISCO
路由器新增加了一种基于时间的访问列表。通过它,可以根据一天中的不同时间,或者根据一星期中的不同日期,当然也可以二者结合起来,控制对网络数据包的转发。
一、使用方法
这种基于时间的访问列表就是在原来的标准访问列表和扩展访问列表中加入有效的时间范围来更合理有效的控制网络。它需要先定义一个时间范围,然后在原来的各种访问列表的基础上应用它。并且,对于编号访问表和名称访问表都适用。
二、使用规则
用
time-range
命令来指定时间范围的名称,然后用
absolute
命令或者一个或多个
periodic
命令来具体定义时间范围。
IOS
命令格式为:
time-range time-range-name absolute [start time date] [end time date] periodic days-of-the week hh:mm to [days-of-the week] hh:mm
我们分别来介绍下每个命令和参数的详细情况
time-range
:
用来定义时间范围的命令
time-range-name
:时间范围名称,用来标识时间范围,以便于在后面的访问列表中引用
absolute
:
该命令用来指定绝对时间范围。它后面紧跟这
start
和
end
两个关键字。在这两个关键字后面的时间要以
24
小时制、
hh:mm
(小时:分钟)表示,日期要按照日
/
月
/
年来表示。可以看到,他们两个可以都省略。如果省略
start
及其后面的时间,那表示与之相联系的
permit
或
deny
语句立即生效,并一直作用到
end
处的时间为止;若省略如果省略
end
及其后面的时间,那表示与之相联系的
permit
或
deny
语句在
start
处表示的时间开始生效,并且永远发生作用,当然把访问列表删除了的话就不会起作用了。
怎么样,看明白了吗?上面讲的就是命令和基本参数为了便于理解,我们看两个例子。
1
、如果要表示每天的早
8
点到晚
8
点就可以用这样的语句:
absolute start 8:00 end 20:00
2
、再如,我们要使一个访问列表从
2006
年
10
月
1
日早
5
点
开始起作用,直到
2006
年
10
月
31
日晚
24
点
停止作用,语句如下:
absolute start 5:00 1 December 2000 end 24:00 31 December 2000
这样一来,我们就可以用这种基于时间的访问列表来实现,而不用半夜跑到办公室去删除那个访问列表了。这对于网络管理员来说,是个很好的事情。如果你恰好是网管。。哇。。。什么也不要讲了,快回去好好配置吧:)。好了接下来,让我们接着看下一个
periodic
命令及其参数。一个时间范围只能有一个
absolute
语句,但是可以有几个
periodic
语句。
periodic
:主要是以星期为参数来定义时间范围的一个命令。它的参数主要有宾
Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
中的一个或者几个的组合,也可以是
daily
(每天)、
weekday
(周一到周五)或者
weekend
(周末)。
示例一
:
带
Established
选项的扩展访问列表
拓扑
:
R2-(S2/0)-----------------(S2/0)-R1(S2/1)---------------(S2/1)-R3
带有
Established
的扩展访问列表允许内部用户访问外部网络
,
而拒绝外部网络访问内部网络
,
而没带
Established
的标准访问列表和扩展访问列表没有这个特性
.
这个示例首先用
OSPF
来使全网互联
.
R1:
r1#sh run
*Mar 1 00:25:17.275: %SYS-5-CONFIG_I: Configured from console by console
Building configuration...
Current configuration : 1410 bytes
!
version 12.2
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname r1
!
logging queue-limit 100
!
ip subnet-zero
!
!
!
ip audit notify log
ip audit po max-events 100
mpls ldp logging neighbor-changes
!
!
!
!
no voice hpi capture buffer
no voice hpi capture destination
!
!
mta receive maximum-recipients 0
!
!
!
!
interface Loopback0
ip address 1.1.1 .1 255.255.255.0
!
interface FastEthernet0/0
no ip address
shutdown
duplex auto
speed auto
!
interface FastEthernet1/0
no ip address
shutdown
duplex auto
speed auto
!
interface Serial2/0
ip address 12.1.1.1 255.255.255.0
encapsulation frame-relay
ip ospf network point-to-point
serial restart_delay 0
frame-relay map i p 12.1.1 .2 102 broadcast
no frame-relay inverse-arp
!
interface Serial2/1
ip address 13.1.1.1 255.255.255.0
encapsulation frame-relay
ip ospf network point-to-point
serial restart_delay 0
frame-relay map i p 13.1.1 .3 113 broadcast
!
interface Serial2/2
no ip address
shutdown
serial restart_delay 0
!
interface Serial2/3
no ip address
shutdown
serial restart_delay 0
!
router ospf 10
log-adjacency-changes
network 0.0.0.0 255.255.255.255 area 0
!
ip http server
no ip http secure-server
ip classless
!
!
!
!
!
call rsvp-sync
!
!
mgcp profile default
!
!
!
dial-peer cor custom
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
no login
!
!
end
R2:
r2#sh run
Building configuration...
*Mar 1 00:27:29.871: %SYS-5-CONFIG_I: Configured from console by console
Current configuration : 1298 bytes
!
version 12.2
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname r2
!
logging queue-limit 100
!
ip subnet-zero
!
!
!
ip audit notify log
ip audit po max-events 100
mpls ldp logging neighbor-changes
!
!
!
!
!
!
!
!
!
!
!
!
no voice hpi capture buffer
no voice hpi capture destination
!
!
mta receive maximum-recipients 0
!
!
!
!
interface Loopback0
ip address 2.2.2.2 255.255.255.0
!
interface FastEthernet0/0
no ip address
shutdown
duplex auto
speed auto
!
interface FastEthernet1/0
no ip address
shutdown
duplex auto
speed auto
!
interface Serial2/0
ip address 12.1.1.2 255.255.255.0
encapsulation frame-relay
ip ospf network point-to-point
serial restart_delay 0
frame-relay map i p 12.1.1 .1 201 broadcast
no frame-relay inverse-arp
!
interface Serial2/1
no ip address
shutdown
serial restart_delay 0
!
interface Serial2/2
no ip address
shutdown
serial restart_delay 0
!
interface Serial2/3
no ip address
shutdown
serial restart_delay 0
!
router ospf 10
log-adjacency-changes
network 0.0.0.0 255.255.255.255 area 0
!
ip http server
no ip http secure-server
ip classless
!
!
!
!
!
call rsvp-sync
!
!
mgcp profile default
!
!
!
dial-peer cor custom
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
no login
!
!
end
r3
r3#sh run
Building configuration...
Current configuration : 1298 bytes
!
version 12.2
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname r3
!
logging queue-limit 100
!
ip subnet-zero
!
!
!
ip audit notify log
ip audit po max-events 100
mpls ldp logging neighbor-changes
!
!
!
!
!
!
!
!
!
!
!
!
no voice hpi capture buffer
no voice hpi capture destination
!
!
mta receive maximum-recipients 0
!
!
!
!
interface Loopback0
ip address 3.3.3.3 255.255.255.0
!
interface FastEthernet0/0
no ip address
shutdown
duplex auto
speed auto
!
interface FastEthernet1/0
no ip address
shutdown
duplex auto
speed auto
!
interface Serial2/0
no ip address
shutdown
serial restart_delay 0
!
interface Serial2/1
ip address 13.1.1.3 255.255.255.0
encapsulation frame-relay
ip ospf network point-to-point
serial restart_delay 0
frame-relay map i p 13.1.1 .1 311 broadcast
no frame-relay inverse-arp
!
interface Serial2/2
no ip address
shutdown
serial restart_delay 0
!
interface Serial2/3
no ip address
shutdown
serial restart_delay 0
!
router ospf 10
log-adjacency-changes
network 0.0.0.0 255.255.255.255 area 0
!
ip http server
no ip http secure-server
ip classless
!
!
!
!
!
call rsvp-sync
!
!
mgcp profile default
!
!
!
dial-peer cor custom
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
no login
!
!
end
监视和测试配置
:
我们让
R2
作为内部网络
,R3
作为内部网络
,
以下配置使
R2
发起访问
R3
没问题
,
从
R3
访问
R2
则被拒绝
.
注意这个配置方案是针对基于
TCP
的应用
,
任何
TCP
通讯都是双向的
,
从
R2
发起的访问外部网络之后
,
外部网络的流量得以通过
,
这个时候
TCP
报文
,ACK
或
RST
位被设置为
1
R1(configure)access-list 101 permit tcp any any established log-input
R1(configure)access-list 101 permit ospf any any
R1(configure)access-list 101 deny ip any any log-input
R1(configure)int s2/1
R1(configure-if)ip access-group 101 in
以上
log-input
是为了显示监视数据报文被过滤的情况
,
接下来用
debug ip packet detailed
来监视报文经过
R1
的情况
,
应该路由器还有
OSPF
报文产生
,
因此我们对
DEBUG
信息做了限制
.
r1(config)#access-list 102 permit tcp any any
我们这样做
让
R2
发起
telnet
访问
R3
r1#telnet 3.3.3 .3
Trying 3.3.3.3 ... Open
r3>
*Mar 1 00:55:53.003: IP: tableid=0, s=13.1.1.1 (local), d=3.3.3.3 (Serial2/1), routed via RIB
*Mar 1 00:55:53.003: IP: s=13.1.1.1 (local), d=3.3.3.3 (Serial2/1), len 44, sending
*Mar 1 00:55:53.007: TCP src=11001, dst=23, seq=2398697781, ack=0, win=4128 SYN
*Mar 1 00:55:53.179: %SEC-6-IPACCESSLOGP: list 101 permitted tcp 3.3.3.3(23) (Serial2/1 ) -> 13.1.1.1(11001), 1 packet
*Mar 1 00:55:53.183: IP: tableid=0, s=3.3.3.3 (Serial2/1), d=13.1.1.1 (Serial2/1), routed via RIB
*Mar 1 00:55:53.183: IP: s=3.3.3.3 (Serial2/1), d=13.1.1.1 (Serial2/1), len 44, rcvd 3
*Mar 1 00:55:53.187: TCP src=23, dst=11001, seq=949632690, ack=2398697782, win=4128 ACK SYN
*Mar 1 00:55:53.187: IP: tableid=0, s=13.1.1.1 (local), d=3.3.3.3 (Serial2/1), routed via RIB
*Mar 1 00:55:53.191: IP: s=13.1.1.1 (local), d=3.3.3.3 (Serial2/1), len 40, sending
*Mar 1 00:55:53.191: TCP src=11001, dst=23, seq=2398697782, ack=949632691, win=4128 ACK
*Mar 1 00:55:53.199: IP: tableid=0, s=13.1.1.1 (local), d=3.3.3.3 (Serial2/1), routed via RIB
*Mar 1 00:55:53.203: IP: s=13.1.1.1 (local), d=3.3.3.3 (Serial2/1), len 49, sending
*Mar 1 00:55:53.203: TCP src=11001, dst=23, seq=2398697782, ack=949632691, win=4128 ACK PSH
*Mar 1 00:55:53.207: IP: tableid=0, s=13.1.1.1 (local), d=3.3.3.3 (Serial2/1), routed via RIB
*Mar 1 00:55:53.211: IP: s=13.1.1.1 (local), d=3.3.3.3 (Serial2/1), len 40, sending
*Mar 1 00:55:53.215: TCP src=11001, dst=23, seq=2398697791, ack=949632691, win=4128 ACK
*Mar 1 00:55:53.455: IP: tableid=0, s=3.3.3.3 (Serial2/1), d=13.1.1.1 (Serial2/1), routed via RIB
*Mar 1 00:55:53.455: IP: s=3.3.3.3 (Serial2/1), d=13.1.1.1 (Serial2/1), len 52, rcvd 3
*Mar 1 00:55:53.459: TCP src=23, dst=11001, seq=949632691, ack=2398697791, win=4119 ACK PSH
*Mar 1 00:55:53.459: IP: tableid=0, s=3.3.3.3 (Serial2/1), d=13.1.1.1 (Serial2/1), routed via RIB
*Mar 1 00:55:53.463: IP: s=3.3.3.3 (Serial2/1), d=13.1.1.1 (Serial2/1), len 45, rcvd 3
*Mar 1 00:55:53.467: TCP src=23, dst=11001, seq=949632703, ack=2398697791, win=4119 ACK PSH
*Mar 1 00:55:53.467: IP: tableid=0, s=3.3.3.3 (Serial2/1), d=13.1.1.1 (Serial2/1), routed via RIB
*Mar 1 00:55:53.471: IP: s=3.3.3.3 (Serial2/1), d=13.1.1.1 (Serial2/1), len 43, rcvd 3
*Mar 1 00:55:53.471: TCP src=23, dst=11001, seq=949632708, ack=2398697791, win=4119 ACK PSH
*Mar 1 00:55:53.475: IP: tableid=0, s=3.3.3.3 (Serial2/1), d=13.1.1.1 (Serial2/1), routed via RIB
*Mar 1 00:55:53.479: IP: s=3.3.3.3 (Serial2/1), d=13.1.1.1 (Serial2/1), len 46, rcvd 3
*Mar 1 00:55:53.479: TCP src=23, dst=11001, seq=949632711, ack=2398697791, win=4119 ACK PSH
*Mar 1 00:55:53.483: IP: tableid=0, s=13.1.1.1 (local), d=3.3.3.3 (Serial2/1), routed via RIB
*Mar 1 00:55:53.487: IP: s=13.1.1.1 (local), d=3.3.3.3 (Serial2/1), len 43, sending
*Mar 1 00:55:53.487: TCP src=11001, dst=23, seq=2398697791, ack=949632717, win=4102 ACK PSH
*Mar 1 00:55:53.491: IP: tableid=0, s=13.1.1.1 (local), d=3.3.3.3 (Serial2/1), routed via RIB
*Mar 1 00:55:53.495: IP: s=13.1.1.1 (local), d=3.3.3.3 (Serial2/1), len 43, sending
*Mar 1 00:55:53.495: TCP src=11001, dst=23, seq=2398697794, ack=949632717, win=4102 ACK PSH
*Mar 1 00:55:53.499: IP: tableid=0, s=13.1.1.1 (local), d=3.3.3.3 (Serial2/1), routed via RIB
*Mar 1 00:55:53.503: IP: s=13.1.1.1 (local), d=3.3.3.3 (Serial2/1), len 49, sending
*Mar 1 00:55:53.503: TCP src=11001, dst=23, seq=2398697797, ack=949632717, win=4102 ACK PSH
*Mar 1 00:55:53.659: IP: tableid=0, s=3.3.3.3 (Serial2/1), d=13.1.1.1 (Serial2/1), routed via RIB
*Mar 1 00:55:53.663: IP: s=3.3.3.3 (Serial2/1), d=13.1.1.1 (Serial2/1), len 43, rcvd 3
*Mar 1 00:55:53.663: TCP src=23, dst=11001, seq=949632717, ack=2398697797, win=4113 ACK PSH
*Mar 1 00:55:53.867: IP: tableid=0, s=13.1.1.1 (local), d=3.3.3.3 (Serial2/1), routed via RIB
*Mar 1 00:55:53.867: IP: s=13.1.1.1 (local), d=3.3.3.3 (Serial2/1), len 40, sending
*Mar 1 00:55:53.871: TCP src=11001, dst=23, seq=2398697806, ack=949632720, win=4099 ACK
*Mar 1 00:55:53.963: IP: tableid=0, s=3.3.3.3 (Serial2/1), d=13.1.1.1 (Serial2/1), routed via RIB
*Mar 1 00:55:53.967: IP: s=3.3.3.3 (Serial2/1), d=13.1.1.1 (Serial2/1), len 40, rcvd 3
*Mar 1 00:55:53.967: TCP src=23, dst=11001, seq=949632720, ack=2398697806, win=4104 ACK
注意
R3
返回
R2
的数据报文得以通过
,
接下来我们测试从
R3
发起访问
R2
的情况
r3#telnet 2.2.2.2
Trying 2.2.2.2 ...
% Destination unreachable; gateway or host down
r1#
*Mar 1 01:02:22.779: %SEC-6-IPACCESSLOGP: list 101 denied tc p 13.1.1 .3(11002) (Serial2/1 ) -> 2.2.2.2(23), 1 packet
*Mar 1 01:02:22.783: IP: s=13.1.1.3 (Serial2/1), d=2.2.2.2, len 44, access denied
*Mar 1 01:02:22.783: IP: tableid=0, s=13.1.1.1 (local), d=13.1.1.3 (Serial2/1), routed via RIB
*Mar 1 01:02:22.787: IP: s=13.1.1.1 (local), d=13.1.1.3 (Serial2/1), len 56, sending
*Mar 1 01:02:24.139: IP: s=12.1.1.2 (Serial2/0), d=224.0.0.5, len 80, rcvd 0
*Mar 1 01:02:24.315: IP: s=13.1.1.1 (local), d=224.0.0.5 (Serial2/1), len 80, sending broad/multicast
*Mar 1 01:02:25.139: IP: s=12.1.1.1 (local), d=224.0.0.5 (Serial2/0), len 80, sending broad/multicast
注意
,TCP
协议的第一次发送是
SYN
字段
,
这是用来同步准备建立一个新连接的两端主机
,
而
ACK
位由接收者置位从而向发送者表明数据已经成功接收
.RST(reset)
位说明什么时候重新启动连接
.
带
Eetablished
的扩展访问列表只允许
ACK
或
RST
位置
1
的
TCP
报文通过
.
1
)
Reflect
放置在允许的方向上(可进可出)
2
)
放在管理
VLAN
上配置简单,但是不如放在所有其它
VLAN
上直接。
3)
如果在内网口上放置
:
在入上设置
Reflect
如果在外网口上放置
:
在出口上放置
Reflect
LAN WAN
-
inbound outbound
4)reflect
不对本地路由器上的数据包跟踪
,
所以对待进入的数据包时注意
,
要允许一些数据流进入
reflect+evalute
实现单向访问控制列表的最新实验结果
interface Vlan12
ip address 10.147.18.92 255.255.255.240
ip access-group in-filter in
ip access-group out-filter out
ip helper-address 10.147.17.193
no ip redirects
standby 12 ip 10.147.18.94
standby 12 priority 150
standby 12 preempt
第一步
:
ip access-list extended in-filter
evaluate abcd
deny ip any any
ip access-list extended out-filter
permit ip any any reflect abcd
结果从
VLAN12
上的客户机
ping
其它
VLAN
的机器
,
提示
:
Reply from 10.147.18.92: Destination net unreachable.
第二步
:
将上面的访问控制列表改为
:
ip access-list extended in-filter
permit ip any any reflect abcd
ip access-list extended out-filter
evaluate abcd
deny ip any any
结果从
VLAN12
的客户机可以
ping
通其它
vlan
的机器
,
但其它
vlan
的机器
ping
不通
vlan12
的机器
.
观察发现
,
我从
vlan12
的客户机上
ping
其它
vlan
里面的任何一台机器的话
,
就会自动生成一条动态度的
access-list,(
假如
我从
vlan12
的机器
10.147.18.90 ping vlan1
里面的
10.147.17.251)
记录如下
:
Reflexive IP access list abcd
permit icmp host 10.147.17.251 host 10.147.18.90 (8 matches) (time left 297)
permit udp host 202.96.170.163 eq 8000 host 10.147.18.90 eq 4000 (6 matches) (time left 247)
permit udp host 224.0.0.2 eq 1985 host 10.147.18.93 eq 1985 (155 matches) (time left 299)
Extended IP access list in-filter
permit ip any any reflect abcd
Extended IP access list out-filter
evaluate abcd
deny ip any any (289 matches)
第三步
:
我想实现功能
:vlan12
里的机器能访问所有其他
vlan,
除了
vlan 2(10.147.16.0/255.255.255.128)
外均
不能访问
vlan12:
将访问控制列表改为
:
ip access-list extended in-filter
permit ip any any reflect abcd
ip access-list extended out-filter
evaluate abcd
permit ip 10.147.16.0 0.0.0 .128 any
deny ip any any
结果一开始几分钟内
,
除了定义的
VLAN2(10.147.16.0/255.255.255.128)
外
,
其它
vlan
的机器均
ping
不通
vlan 12
的机器
后来就全部
PING
不通
,
和第二次开发步的结果相同