路由器使用的通配符掩码(或者称作反掩码)与源或目标地址一起来分辨匹配的地址范围,它跟子网掩码刚好相反。它像子网掩码告诉路由器IP地址的哪一位属于网络号一样,通配符掩码告诉路由器为了判断出匹配,它需要检查IP地址中的多少位。这个地址掩码对使我们可以只使用两个32位的号码来确定IP地址的范围。这是十分方便的,因为如果没有掩码的话,你不得不对每个匹配的IP客户地址加入一个单独的访问列表语句。这将造成很多额外的输入和路由器大量额外的处理过程。所以地址掩码对相当有用。 在子网掩码中,将掩码的一位设成1表示IP地址对应的位属于网络地址部分。相反,在访问列表中将通配符掩码中的一位设成1表示I P地址中对应的位既可以是1又可以是0。有时,可将其称作“无关”位,因为路由器在判断是否匹配时并不关心它们。掩码位设成0则表示IP地址中相对应的位必须精确匹配。 例如: 掩码是255.255.255.0 wildcard-mask 就是0.0.0.255 255.255.255.248 反掩掩码就是0.0.0.7 |
反转掩码,顾名思义,是将原子网的掩码0变成1,1变成0。原子网掩码为255.255.255.0,反转掩码就是0.0.0.255
ACL里的掩码也叫inverse mask(反掩码)或wildcard mask(通配符掩码),由32位长的2进制数字组成,4个八位位组.其中0代表必须精确匹配,1代表任意匹配(即不关心)
反掩码可以通过使用255.255.255.255减去正常的子网掩码得到,比如要决定子网掩码为255.255.255.0的IP地址10.10.10.0的反掩码:
255.255.255.255-255.255.255.0=0.0.0.255
即10.10.10.0的反掩码为0.0.0.255
注意:
反掩码为255.255.255.255的0.0.0.0代表any,即任意地址
反掩码为0.0.0.0的10.1.1.2代表主机地址10.1.1.2
反掩码可以通过使用255.255.255.255减去正常的子网掩码得到,比如要决定子网掩码为255.255.255.0的IP地址10.10.10.0的反掩码:
255.255.255.255-255.255.255.0=0.0.0.255
即10.10.10.0的反掩码为0.0.0.255
注意:
反掩码为255.255.255.255的0.0.0.0代表any,即任意地址
反掩码为0.0.0.0的10.1.1.2代表主机地址10.1.1.2
下面描述的是如何汇总(summarization)一组网络地址,来达到优化ACL的目的:
192.168.32.0/24
192.168.33.0/24
192.168.34.0/24
192.168.35.0/24
192.168.36.0/24
192.168.37.0/24
192.168.38.0/24
192.168.39.0/24
这组IP地址的前2个和最后1个八位位组是一样的,再看第3个八位位组,把它们写成2进制的形式:
32:00 10 00 00
33:00 10 00 01
34:00 10 00 10
35:00 10 00 11
36:00 10 01 00
37:00 10 01 01
38:00 10 01 10
39:00 10 01 11
注意这组范围里的前5位都是一样的,所以这组IP地址范围可以汇总为192.168.32.0/21 255.255.248.0,那么这组IP地址范围的反掩码为255.255.255.255-255.255.248.0=0.0.7.255
比如在做IP standard ACL的时候,就可以:
access-list 10 permit 192.168.32.0 0.0.7.255
192.168.32.0/24
192.168.33.0/24
192.168.34.0/24
192.168.35.0/24
192.168.36.0/24
192.168.37.0/24
192.168.38.0/24
192.168.39.0/24
这组IP地址的前2个和最后1个八位位组是一样的,再看第3个八位位组,把它们写成2进制的形式:
32:00 10 00 00
33:00 10 00 01
34:00 10 00 10
35:00 10 00 11
36:00 10 01 00
37:00 10 01 01
38:00 10 01 10
39:00 10 01 11
注意这组范围里的前5位都是一样的,所以这组IP地址范围可以汇总为192.168.32.0/21 255.255.248.0,那么这组IP地址范围的反掩码为255.255.255.255-255.255.248.0=0.0.7.255
比如在做IP standard ACL的时候,就可以:
access-list 10 permit 192.168.32.0 0.0.7.255
个人笔记:
ACL反转掩码写成0.0.0.254表示过滤网络中奇数地址。写成0.0.0.255则表示过滤这个子网的所有地址。例如:
全局模式下:
access-list 1 permit 192.168.14.1 0.0.0.254(这个也可以写成192.168.14.0 0.0.0.254)
在接口模式下:
ip access-list 1 in
达到的结果是192.168.0.2能ping 通网关(192.168.14.1),192.168.14.3不能ping 通网关。
ACLs的一小段中文文档
一、导言
本篇文档介绍了访问控制列表(ACLs)是如何过滤网络流量的。它也大致介绍了IP访问控制列表的类型,用途和它应用到网络上的具体实例。
二、前提
阅读和使用本文档并没有什么特别的前提。只是要求你的Cisco IOS版本至少要是8.3或者更高。并请注意不同版本中IP访问控制列表的不同特点。
三、硬件和软件版本
这篇文档中所讨论的访问控制列表的类型,是从Cisco IOS版本8.3至今的,请注意不同版本之间的差别。
四、了解访问控制列表(ACL)的概念
这一部分讲述访问控制列表的概念
(一)使用掩码
在访问控制列表中,掩码和IP地址配合使用来指定什么样的流量可以通过(permitted)或者禁止(denied)。要在接口上才能配置访问控制列表。它与子网掩码不同的是,子网掩码是由左端的255开始的(比如,IP地址:209.165.202.129,掩码:255.255.255.224)而访问控制列表的掩码与子网掩码是相反的(比如,访问控制列表的掩码:0.0.0.255)这种掩码通常被叫做反转掩码(inverse mask)或通配符掩码(wildcard mask)。当这些十进制的掩码被转换为二进制的时候(表现为一些0或1),就可以被用来决定什么样的流量应该被禁止,什么样的流量应该被通过。一个0表示它说对应的IP地址位一定要被精确匹配;一个1表示所对应的IP地址位应该被忽略,下面的表格用来说明访问控制列表的概念。
掩码示例:
网络地址:10.1.1.0(流量)
掩码:0.0.0.255
网络地址(二进制):00001010.00000001.00000001.00000000
掩码(二进制):00000000.00000000.00000000.11111111
根据二进制的掩码,你可以看到,前三个八位数组必须被精确的匹配给网络地址(00001010.00000001.00000001)。最后的一个八位数组是“应该被忽略”的(.11111111)所以,所有的流量以10.1.1开始,直到最后八个“应该被忽略”的。所以,根据这个掩码,网络地址10.1.1.1直到10.1.1.255(10.1.1.x)都会被处理。
访问控制列表的反转掩码同样也可以通过与默认掩码(normal mask)255.255.255.255做减法来得出。例如:求一个网络地址为172.16.1.0,标准掩码255.255.255.0的反转掩码方法为:255.255.255.255-255.255.255.0(默认掩码)=0.0.0.255(反转掩码)
请注意访问控制列表一些等价的表示:
1、源地址/源通配符0.0.0.0/255.255.255.255意义等于“any”
2、源地址/通配符10.1.1.2/0.0.0.0意义等于“host 10.1.1.2”
小结访问控制列表
注意:子网掩码同样可以表示成一个固定长度的符号。比如,192.168.10.0/24也可以被表示成192.168.10.0 255.255.255.0
(二)下面来讲述如何才能够将不同的网络地址进行总结。想一想如果有下面一些网络地址:192.168.32.0/24;
192.168.33.0/24;
192.168.34.0/24;
192.168.35.0/24;
192.168.36.0/24;
一、导言
本篇文档介绍了访问控制列表(ACLs)是如何过滤网络流量的。它也大致介绍了IP访问控制列表的类型,用途和它应用到网络上的具体实例。
二、前提
阅读和使用本文档并没有什么特别的前提。只是要求你的Cisco IOS版本至少要是8.3或者更高。并请注意不同版本中IP访问控制列表的不同特点。
三、硬件和软件版本
这篇文档中所讨论的访问控制列表的类型,是从Cisco IOS版本8.3至今的,请注意不同版本之间的差别。
四、了解访问控制列表(ACL)的概念
这一部分讲述访问控制列表的概念
(一)使用掩码
在访问控制列表中,掩码和IP地址配合使用来指定什么样的流量可以通过(permitted)或者禁止(denied)。要在接口上才能配置访问控制列表。它与子网掩码不同的是,子网掩码是由左端的255开始的(比如,IP地址:209.165.202.129,掩码:255.255.255.224)而访问控制列表的掩码与子网掩码是相反的(比如,访问控制列表的掩码:0.0.0.255)这种掩码通常被叫做反转掩码(inverse mask)或通配符掩码(wildcard mask)。当这些十进制的掩码被转换为二进制的时候(表现为一些0或1),就可以被用来决定什么样的流量应该被禁止,什么样的流量应该被通过。一个0表示它说对应的IP地址位一定要被精确匹配;一个1表示所对应的IP地址位应该被忽略,下面的表格用来说明访问控制列表的概念。
掩码示例:
网络地址:10.1.1.0(流量)
掩码:0.0.0.255
网络地址(二进制):00001010.00000001.00000001.00000000
掩码(二进制):00000000.00000000.00000000.11111111
根据二进制的掩码,你可以看到,前三个八位数组必须被精确的匹配给网络地址(00001010.00000001.00000001)。最后的一个八位数组是“应该被忽略”的(.11111111)所以,所有的流量以10.1.1开始,直到最后八个“应该被忽略”的。所以,根据这个掩码,网络地址10.1.1.1直到10.1.1.255(10.1.1.x)都会被处理。
访问控制列表的反转掩码同样也可以通过与默认掩码(normal mask)255.255.255.255做减法来得出。例如:求一个网络地址为172.16.1.0,标准掩码255.255.255.0的反转掩码方法为:255.255.255.255-255.255.255.0(默认掩码)=0.0.0.255(反转掩码)
请注意访问控制列表一些等价的表示:
1、源地址/源通配符0.0.0.0/255.255.255.255意义等于“any”
2、源地址/通配符10.1.1.2/0.0.0.0意义等于“host 10.1.1.2”
小结访问控制列表
注意:子网掩码同样可以表示成一个固定长度的符号。比如,192.168.10.0/24也可以被表示成192.168.10.0 255.255.255.0
(二)下面来讲述如何才能够将不同的网络地址进行总结。想一想如果有下面一些网络地址:192.168.32.0/24;
192.168.33.0/24;
192.168.34.0/24;
192.168.35.0/24;
192.168.36.0/24;
192.168.37.0/24;
192.168.38.0/24;
192.168.39.0/24
前两个八位数组和最后一个八位数组对于以上的每个网络地址都是相同的。下面是对如何将它们写成一个单独网络地址的解释。
上面几个网络地址中的第三个八位数组可以根据这个八位数组的位置和数值写成如下的形式:
十进制 128 64 32 16 8 4 2 1
32 0 0 1 0 0 0 0 0
33 0 0 1 0 0 0 0 1
34 0 0 1 0 0 0 1 0
35 0 0 1 0 0 0 1 1
36 0 0 1 0 0 1 0 0
37 0 0 1 0 0 1 0 1
38 0 0 1 0 0 1 1 0
39 0 0 1 0 0 1 1 1
M M M M M D D D
当前五比特被路由器察看的时候,以上的八个网络地址就可以被总结成一个网络地址(192.168.32/21或者192.168.32.0 255.255.248.0),后三比特所有可能的排列形式也都被与这一个网络地址联系起来。(因为这个被总结好的网络地址后三彼特的全排列就分别是这八个网络地址)下面的命令用来定义一个访问控制列表来允许这个网络流量。从255.255.255.255减去255.255.248.0(标准掩码)得0.0.7.255
access-list acl_permit permit ip 192.168.32.0 0.0.7.255
进一步的解释如何对网络地址进行总结,看一看下面的网络地址。
192.168.146.0/24
192.168.147.0/24
192.168.148.0/24
192.168.149.0/24
前两个八位数组和最后一个八位数组对于以上四个网络地址都是一样的。以下是解释如何将它们进行总结。以上四个网络地址的第三个八位数组根据八位数组的位置和数值可以被写成如下的形式:
Decimal 128 64 32 16 8 4 2 1
146 1 0 0 1 0 0 1 0
147 1 0 0 1 0 0 1 1
148 1 0 0 1 0 1 0 0
149 1 0 0 1 0 1 0 1
M M M M M ? ? ?
不像第一个例子一样,你不可能将这组网络地址总结成为一个单一的网络地址——你至少(也应该)将它们总结成为两个网络地址。上面的例子可以被总结成为如下两个网络地址。
1.对于网络地址192.168.146.x和192.168.147.x,除了最后一个以外的所有比特都是应该不被察看的。这样就可以写成:192.168.146.0/23(或者192.168.146.0 255.255.254.0)
2.对于网络192.168.148.x和192.168.149.x,除去最后一个比特以外的所有比特都应该是不被察看的。这样就可以写成:192.168.148.
192.168.38.0/24;
192.168.39.0/24
前两个八位数组和最后一个八位数组对于以上的每个网络地址都是相同的。下面是对如何将它们写成一个单独网络地址的解释。
上面几个网络地址中的第三个八位数组可以根据这个八位数组的位置和数值写成如下的形式:
十进制 128 64 32 16 8 4 2 1
32 0 0 1 0 0 0 0 0
33 0 0 1 0 0 0 0 1
34 0 0 1 0 0 0 1 0
35 0 0 1 0 0 0 1 1
36 0 0 1 0 0 1 0 0
37 0 0 1 0 0 1 0 1
38 0 0 1 0 0 1 1 0
39 0 0 1 0 0 1 1 1
M M M M M D D D
当前五比特被路由器察看的时候,以上的八个网络地址就可以被总结成一个网络地址(192.168.32/21或者192.168.32.0 255.255.248.0),后三比特所有可能的排列形式也都被与这一个网络地址联系起来。(因为这个被总结好的网络地址后三彼特的全排列就分别是这八个网络地址)下面的命令用来定义一个访问控制列表来允许这个网络流量。从255.255.255.255减去255.255.248.0(标准掩码)得0.0.7.255
access-list acl_permit permit ip 192.168.32.0 0.0.7.255
进一步的解释如何对网络地址进行总结,看一看下面的网络地址。
192.168.146.0/24
192.168.147.0/24
192.168.148.0/24
192.168.149.0/24
前两个八位数组和最后一个八位数组对于以上四个网络地址都是一样的。以下是解释如何将它们进行总结。以上四个网络地址的第三个八位数组根据八位数组的位置和数值可以被写成如下的形式:
Decimal 128 64 32 16 8 4 2 1
146 1 0 0 1 0 0 1 0
147 1 0 0 1 0 0 1 1
148 1 0 0 1 0 1 0 0
149 1 0 0 1 0 1 0 1
M M M M M ? ? ?
不像第一个例子一样,你不可能将这组网络地址总结成为一个单一的网络地址——你至少(也应该)将它们总结成为两个网络地址。上面的例子可以被总结成为如下两个网络地址。
1.对于网络地址192.168.146.x和192.168.147.x,除了最后一个以外的所有比特都是应该不被察看的。这样就可以写成:192.168.146.0/23(或者192.168.146.0 255.255.254.0)
2.对于网络192.168.148.x和192.168.149.x,除去最后一个比特以外的所有比特都应该是不被察看的。这样就可以写成:192.168.148.