Chinaunix首页 | 论坛 | 博客
  • 博客访问: 381440
  • 博文数量: 114
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1219
  • 用 户 组: 普通用户
  • 注册时间: 2015-02-07 21:23
文章分类

全部博文(114)

文章存档

2018年(1)

2017年(5)

2016年(87)

2015年(21)

我的朋友

分类: 系统运维

2016-01-11 21:24:37


  1. ACL中通配符(wildcard mask、反掩码)
  2. (本人注:其实不只ACL里,OSPF、EIGRP等都会用到wildcard mask,都一样算法)
  3. 再注:本文转自 (转载网络伤寒),至于这个(转载网络伤寒)是哪,,,找不到链接,只好对不起原作者了。
  4. ----------------------------------------
  5. 学习ACL,搞懂ACL就不能不搞定wildcard mask,通配符掩码。说简单点,通配符掩码就是0为绝对匹配,必须严格匹配才行,而1为任意。从某种意义上讲,如果一个8位上有一个1字符,那也只有两种方式,0或者1,但是如果进行组合,那么方式就多了。
  6. 举例说明吧。
  7. 一般我们在应用上都是进行地址块的匹配,怎么讲呢?就是说:
  8. 1)对某个A B C类网进行匹配或者教通配符屏蔽
  9. 2)对某个子网应用ACL。
  10. 3)对特定主机应用ACL
  11. 4)对任意主机或者网络应用ACL
  12. 5)特殊情况的匹配(这一点正是我转载的原因)

  13. 差不多就是以上五种情况,下面一一说明。
  14. 1)对某个有类网络进行ACL的通配符屏蔽。
  15. 这种情况很好解释。
  16. 例如:A类:10.0.0.0 0.255.255.255
  17. 先写成二进制形式: 00001010.00000000.00000000.00000000

  18. 00000000.11111111.111111111.11111111
  19. 可以看出,第一个字节需要严格匹配,也就是说必须为10.,后面的任意匹配。
  20. 得到的网络为10.*.*.*
  21. 如果我把这个改一下呢?10.0.0.0 0.0.3.255
  22. 同样写成二进制形式:00001010.00000000.00000000.00000000

  23. 00000000.00000000.00000011.111111111
  24. 前两个字节严格匹配为10.0,后面的同上题一个思路,0就严格匹配,1就任意。
  25. 在这里,后10个比特可以任意匹配,我们通过计算可以得到合适的结果:
  26. 10.0.0.*
  27. 10.0.1.*
  28. 10.0.2.*
  29. 10.0.3.*
  30. 这四个子网

  31. 2)
  32. 对某个子网应用ACL
  33. 还是举例说明,以C类网络192..168.1.0/24为例进行子网划分。
  34. 我们引入地址块的思想进行解释会好理解一些。因为子网一般都是以地址块形式存在的。
  35. 地址块为128,192.168.1.128 0.0.0.127
  36. 地址块为64,192.168.1.0 0.0.0.63
  37. 地址块为32,192.168.1.0 0.0.0.31
  38. 地址块为16,192.168.1.0 0.0.0.15
  39. 地址块为8,192.168.1.0 0.0.0.7
  40. 地址块为4,192.168.1.0 0.0.0.3
  41. 地址块为2,192.168.1.0 0.0.0.1

  42. 3)对特定主机应用ACL
  43. 通配符需要全匹配,例如:182.168.12.4 0.0.0.0
  44. 还有一种表示方法:host 182.168.12.4
  45. Host在这里是关键字,用来代替0.0.0.0 ,用于源地址和目的地址字段。

  46. 4)对任意主机或者网络应用ACL
  47. 这是任意匹配的情况,主机任意,通配符任意匹配:0.0.0.0 255.255.255.255,同时这里也有简写——any

  48. 5)比较特殊的情况。
  49. 用我的话说这种情况是不按规则出牌的情况,也是比较有趣的。
  50. 我不想让某个子网或者是某个有类网被通配符屏蔽,我仅仅是想让部分主机被屏蔽,不过这部分主机也应该是有规律的,要不管理人员肯定得折腾疯。哈哈。
  51. 仅举两例以供说明:
  52. 随便写一个,计算出屏蔽了哪些网络。
  53. 随便写一个 192.168.1.23 0.0.0.5
  54. 怎么?傻眼了?这就是不按规则出牌的情况,CCNA自学指南里面肯定说了,不能从11.0或者12.0等网络开始,非得是2的次幂才行。对此规矩我们不予理睬,还是使用最为原始的办法进行一个一个匹配。
  55. 写成二进制形式:11000000.10101000.00000001.00010111

  56. 00000000.00000000.00000000.00000101
  57. 接下来就是匹配计算了。前三个字节毫无疑问,严格匹配。最后一个字节逢0匹配,逢1任意。
  58. 00010111

  59. 00000101
  60.                                                                              
  61. 00010*1*
  62.    如上的公式,我们看到有星号的位置是可以任意匹配的,这样我们就可以算出:
  63. 00010010——18

  64. 00010011——19

  65. 00010110——21

  66. 00010111——23

  67. 这样就很明显了,得到的结果就是192.168.1.18
  68. 192.68.1.19
  69. 192.168.1.21
  70. 192.168.1.23 都被0.0.0.5这个通配符掩码给屏蔽了。
  71.    怎样,这个不按规则出牌的通配符掩码是不是也愚弄了你一次?

  72. 备注:只要严格按照0——严格匹配,1——任意配置的原则不管什么反掩码都是纸老虎。

  73. 写第二个,我需要匹配一个网络里面奇数IP的主机或者偶数IP的主机(或者的路由过滤中需要奇数网络)
  74. 还是看例子:
  75. 192.168.1.1
  76. 192.168.1.2
  77. 192.168.1.3
  78. 192.168.1.4
  79. 192.168.1.5
  80. 192168.1.6
  81. 192.168.1.7
  82. 192.168.1.9
  83. ……………
  84. 192.168.1.254

  85. 思路都是一样的,条条道路通罗马,这里条条道路通配符
  86. 我还是要写成二进制形式
  87. 前面的三个字节就省略了,只写后面的一个字节的:
  88. 00000001
  89. 00000010
  90. 00000011
  91. 00000100
  92. 00000101
  93. 00000110
  94. 00000111
  95. …………
  96. 看出规律了么? 什么?没有啊,仔细瞧瞧么!奇数IP的最后一位都是1,而偶数IP的最后一位都是0。这就是规律啊。
  97. 那么怎么写呢?这个就比较简单了吧,奇数IP的:192.168.1.1 0.0.0.254 ;偶数IP的呢——192.168.1.2 0.0.0.254

  98. 如上就是我对ACL的理解,有说错的,做错的,还望大家指正,所谓三人行必有我师,你有什么更好的办法别忘记跟帖。

  99. ACL主要难点是在通配符的计算,如有这么一道题:
  100. 已知子网,求通配符掩码。
  101. 例:允许199.172.5.0/24
  102. 199.172.10.0/24
  103. 199.172.13.0/24
  104. 199.172.14.0/24网段访问路由器。要求写出ACL来,但只能用两条ACL代替。
  105. 1.
  106. 先将这四个数换成二进制:
  107. 5.0
  108. -------
  109. 0 1 0 1
  110. 10.0
  111. -----
  112. 1 0 1 0
  113. 13.0
  114. -----
  115. 1 1 0 1
  116. 14.0
  117. -----
  118. 1 1 1 0
  119. 观察可以看到5.0和13.0
  120. 10.0和14.0有共同点。
  121. 2.
  122. 将不相同的部分用Z表示
  123. 5.0和13.0
  124. ----------
  125. Z 1 0 1
  126. 10.0和14.0
  127. --------
  128. 1 Z 1 0
  129. 3.
  130. 将Z换成1,数字换成0。可以得出:
  131. 5.0和13.0
  132. ----------
  133. Z 1 0 1
  134. ------------ 1 0 0 0
  135. 10.0和14.0
  136. --------
  137. 1 Z 1 0
  138. ------------ 0 1 0 0
  139. 4.
  140. 最后将二进制换成十进制:
  141. 5.0和13.0
  142. ----------
  143. Z 1 0 1
  144. ------------ 1 0 0 0
  145. -------- 8
  146. 10.0和14.0
  147. --------
  148. 1 Z 1 0
  149. ------------ 0 1 0 0
  150. -------- 4

  151. 最后得出:
  152. access-list 10 permit 199.172.5.0 0.0.8.0
  153. access-list 11 permit 199.172.10.0 0.0.4.0
  154. --------------------
  155. 最后,留个偷懒的方法,有个反掩码计算器,直接输出IP、反掩码就能计算出对应IP范围。下载链接:
  156. http://down.51cto.com/data/313184
  157. 或者:http://download.csdn.net/detail/nightcats007/3975641
阅读(2360) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~