反掩码详解Word文档格式.docx
《反掩码详解Word文档格式.docx》由会员分享,可在线阅读,更多相关《反掩码详解Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
掩码位设成0则表示IP地址中相对应的位必须精确匹配.
通配符掩码表
CIDR子网掩码反掩码
/30255.255.255。
2520.0.0。
3
/29255.255.255。
2480。
0.7
/28255.255。
255。
2400.0.0.15
/27255。
2240。
31
/26255。
1920。
63
/25255。
255.1280。
0.127
/24255.255.255.00。
0.255
/23255.255。
254。
0.1。
255
/22255.255.252.00.0.3.255
/21255.255.248.00.0。
7.255
/20255。
255.240。
15.255
/19255.255.224。
0.31.255
/18255.255.192.00。
0.63.255
/17255.255。
128.00.0。
127。
/16255.255.0.00。
255.255
/15255。
254.0.00.1.255。
/14255.252.0.00。
3。
/13255.248。
0.00.7。
/12255.240.0.00.15。
/11255。
224。
00.31。
/10255。
192.0。
00.63。
/9255.128。
0.00。
127.255。
/8255.0.0。
00.255.255.255
十进制通配符掩码计算方法
用二进制来表示子网掩码值,再用广播地址求其差值,然后再算回十进制。
即,推出公式:
通配符掩码=255-掩码.255-掩码.255—掩码。
255-掩码
举例一
求子网掩码255。
248通配符掩码(反掩码)
(1)、把子网掩码255.255。
248转换成二进制为:
11111111.11111111.11111111.11111000
通配符掩码值为:
广播全1(二进制)地址减去子网掩码二制制值,即:
11111111。
11111111.11111111。
11111111—11111111.11111111.11111111.11111000
得到结果为:
00000000。
00000000。
00000000.00000111
转换为十进制:
0。
(2)、通配符掩码=255-掩码。
255-掩码.255-掩码.255-掩码,即:
255—255。
255-255.255-255.255—248=0.0。
举例二
求子网掩码255.255。
128.0通配符掩码(反掩码)
(1)、把子网掩码255.255.128。
0转换成二进制为:
11111111.11111111.10000000。
0000000
广播全1(二进制)地址减去子网掩码二制制值,即:
11111111。
11111111-11111111。
10000000.0000000
得到结果为:
00000000.00000000.01111111.11111111
转换为十进制:
0.0。
(2)、通配符掩码=255—掩码.255—掩码.255-掩码。
255-掩码,即:
255—255.255—255.255-128。
255—0=0.0。
127.255
ConfiguringIPAccessList
IP访问控制列表(accesscontrollist,ACL)用于过滤IP流量,其中RFC1700定义了知名(well—known)端口号,RFC1918定义了私有IP地址空间
Pt。
2UnderstandingACLConcepts
UsingMasks
ACL里的掩码也叫inversemask(反掩码)或wildcardmask(通配符掩码),由32位长的2进制数字组成,4个八位位组.其中0代表必须精确匹配,1代表任意匹配(即不关心)
反掩码可以通过使用255。
255减去正常的子网掩码得到,比如要决定子网掩码为255。
0的IP地址172.16.1。
0的反掩码:
255—255.255.255。
0=0。
255
即172。
16.1。
0的反掩码为0。
注意:
反掩码为255。
255的0.0.0。
0代表any,即任意地址
反掩码为0.0.0.0的10。
2代表主机地址10.1。
1.2
SummarizingACLs
下面描述的是如何汇总(summarization)一组网络地址,来达到优化ACL的目的:
192.168。
32.0/24
192。
168.33。
0/24
34。
168.35.0/24
192.168.36.0/24
168。
37.0/24
38。
39。
这组IP地址的前2个和最后1个八位位组是一样的,再看第3个八位位组,把它们写成2进制的形式:
32:
00100000
33:
00100001
34:
00100010
35:
00100011
36:
00100100
37:
00100101
38:
00100110
39:
00100111
注意这组范围里的前5位都是一样的,所以这组IP地址范围可以汇总为192.168。
32.0/21255.255.248。
0,那么这组IP地址范围的反掩码为255。
255—255.255.248.0=0。
比如在做IPstandardACL的时候,就可以:
access-list10permit192.168.32.00。
0.7.255
再来看另一组IP地范围:
146。
147.0/24
192.168.148.0/24
192.168.149。
照之前的方法,把第3个八位位组写成2进制形式:
146:
10010010
147:
10010011
148:
10010100
149:
10010101
是不是可以写成192。
168.146。
0/21呢?
不是.因为采用/21的话将有8个子网将被考虑进去,如果在用ACL拒绝上述1组地址的时候,就有可能把另外4个地址给封杀掉。
一定要考虑到精确匹配,上述地址就只能汇总成下面这2条地址:
对于192.168。
146.x—192。
147.x为:
0/23(192。
146.0255.255。
0)
对于192。
168.146.8-192。
149.x为:
148。
168.148。
0255。
254.0)
所以反掩码分别为:
0.0.1.255和0.0。
比如在做IPstandardACL的时候,就可以:
access−list10permit192。
168.146.00。
148.00.0。
1.255
ProcessingACLs
当流量经过了配置的有ACL的路由器的时候,将和ACL里的条目从上往下的进行比较,直到找到匹配的语句为止,如果没有任何匹配的语句,流量将被拒绝(deny)掉.一般在设置ACL的时候,尽可能的把permit语句放在ACL的最上部。
并且要记住的是,ACL在结尾处默认隐含的有1条拒绝所有流量的deny语句,如下2个ACL,ACL101和ACL102是有相同的效果的:
access—list101permitip10。
1.00。
255172.16.1.00.0.0.255
access—list102permitip10.1。
0.255172。
16。
00.0。
access—list102denyipanyany
ACL例子如下:
access-list101permittcphost10。
2host172。
1eqtelnet
access—list101permittcphost10.1.1。
1
access—list101permitudphost10。
2host172.16。
0.255172.16.1.00。
最后1条语句就足够了,前3条语句可以不用配置。
因为TCP就包括了telnet,并且IP包括了TCP和UDP.所以只需要写最后1条语句即可
DefiningPortsandMessageTypes
在设置ACL的时候,可能不光要设置源地址和目标地址,还要设置端口号(参阅RFC1700)或ICMP信息类型(参阅RFC792)。
当然可以在设置的时候输入?
来查看提示,如下:
access—list102permittcphost10.1.1。
1host172。
1eq?
bgpBorderGatewayProtocol(179)
chargenCharactergenerator(19)
cmdRemotecommands(rcmd,514)
在配置的时候,路由器同样可以把数字转化为人性化的值,比如在设置下面的ICMP类型14的时候:
access—list102permiticmphost10。
1.1host172。
1.114
就成了:
access-list102permiticmphost10。
16.1.1timestamp-reply
ApplyingACLs
当你配置了ACL的时候,不在路由器上应用它,是将不会生效的.如下图:
当你要阻断从source到destination的流量的时候,尽可能的把ACL设置在离源地址近的地方,即在路由器A上的E0接口(inbound)
Defininginandout
in和out是相对于路由器来说的.离开路由器接口的流量即为out;
进入这个路由器的接口的流量即为in。
在配置ACL的时候,in和out并不是绝对的。
比如上面那个例子,在路由器A上设置ACL,方向就要用in,因为站在路由器A的角度上看,流量是进入路由器A的.但是同样可以把ACL设置在路由器C上的E1接口,方向为out,因为流量是离开路由器C
EditingACLs
在对ACL进行编辑的时候要特别的注意.如果你删除了ACL中某条语句,那么整个ACL也随之被删除掉了。
如下:
router#configt
router(config)#access—list101denyicmpanyany
router(config)#access—list101permitipanyany
router(config)#^Z
router#showaccess-list
ExtendedIPaccesslist101
denyicmpanyany
permitipanyany
router#
*Mar900:
43:
12.784:
%SYS—5-CONFIG_I:
Configuredfromconsolebyconsole
router(config)#noaccess—list101denyicmpanyany
router(config)#^Z
router#showaccess—list
router#
*Mar900:
43:
29。
832:
%SYS—5—CONFIG_I:
Configuredfromconsolebyconsole
所以如果你要修改ACL的语句的时候,可以把路由器的配置拷贝到TFTP服务器上,用文本编辑器比如notepad.exe进行编辑后,在拷贝回路由器上
当然也可以用命名访问列表的方式进行修改(稍后讲解),如下:
router(config)#ipaccess-listextendedtest
router(config-ext—nacl)#permitiphost2。
2.2.2host3。
router(config—ext—nacl)#permittcphost1。
1host5。
5。
5.5eqwww
router(config-ext-nacl)#permiticmpanyany
router(config—ext—nacl)#permitudphost6.6。
6.610。
10。
255eqdomain
验证下ACL的设置,如下:
ExtendedIPaccesslisttest
permitiphost2。
permittcphost1。
1.1.1host5。
5eqwww
permiticmpanyany
permitudphost6.6.6。
610。
10.00.0。
设置好ACL,进行删除和增加语句,如下:
router(config)#ipaccess—listextendedtest
router(config-ext-nacl)#nopermiticmpanyany/---—-—---—-————删除1条语句-—-—-——-—/
router(config—ext-nacl)#permitgrehost4。
4。
4host8。
8。
8.8/-—-—-—--——----—增加1条语句—-——-—-——/
修改后进行验证,如下:
router#showaccess-list
permitiphost2.2.2。
2host3。
3.3
permittcphost1.1。
1.1host5.5。
permitudphost6.6.6.610。
10.10.00.0.0。
permitgrehost4.4.4。
8.8。
8
可以看到新增的语句位于ACL的结尾
当要删除整个ACL的时候,使用如下命令:
interface〈interface〉
noipaccess-group<
aclnumber>
in|out
Troubleshooting
当要对流量进行debug的时候,首先要确认,当前设置的有ACL,但是没有应用它,并且路由器的fast-switching要关闭,步骤如下:
1。
使用access—list命令捕捉需要监测的数据,比如:
access-list101permitipanyhost10。
2.6.6
access—list101permitiphost10。
2。
6.6any
2.在卷入debug过程中的接口的fast-switching功能要关闭,如果不关闭的话,将只看的到第一个经过该接口的包。
在接口配置模式下使用如下命令:
noiproute—cache
3.在特权模式下使用terminalmonitor命令,这样debug输出的信息将被显示
4。
使用debugippacket101[detail]命令开始debug
5。
debug完成以后,在特权模式下使用nodebugall命令关闭debug。
并且进入接口配置模式使用iproute-cache命令打开fast—switching功能
3TypesofIPACLs
StandardACLs
标准ACL是比较古老的ACL,可以追溯到CiscoIOSRelease8.3.标准ACL(以IP访问列表为例)通过比较IP包的源地址和ACL中设置的地址来做转发或者丢弃的决定。
语法如下:
access—list<
access—list—number>
{permit|deny}{host|sourcewildcard—mask|any}
在一般的IOS版本中,access—list-number的范围是1到99.在CiscoIOSRelease12.0。
1中,还可以使用额外的一段1300到1999
当定义了标准ACL以后,进入接口配置模式使用如下命令进行应用:
ipaccess-group〈access-list-number〉{in|out}
ExtendedACLs
扩展ACL是在CiscoIOSRelease8.3中引入的。
顾名思义,它和之前那种古老的比较方式,增加了许多额外的比较。
命令如下:
对于IP:
[dynamicdynamic—name[timeoutminutes]]{deny|permit}protocolsourcewildcard—maskdestinationwildcard-mask[precedenceprecedence][tostos][log|log-input][time—rangetime-range-name]
对于ICMP:
access-list<
access—list—number〉[dynamicdynamic-name[timeoutminutes]]{deny|permit}icmpsourcewildcard—maskdestinationwildcard-mask[icmp—type|[[icmp-typeicmp-code]|[icmp—message]][precedenceprecedence][tostos][log|log—input][time—rangetime—range—name]
对于UDP:
access-list—number〉[dynamicdynamic—name[timeoutminutes]]{deny|permit}udpsourcewildcard-mask[operator[port]]destinationwildcard—mask[operator[port]][precedenceprecedence][tostos][log|log-input][time—rangetime-range—name]
对于TCP:
access-list〈access-list—number〉[dynamicdynamic—name[timeoutminutes]]{deny|permit}tcpsourcewildcard-mask[operator[port]]destinationwildcard—mask[operator[port]][precedenceprecedence][tostos][log|log—input][time—rangetime—range—name]
在一般的IOS版本里,access—list—number可以为101到199.在CiscoIOS