萬用字元及反掩碼的詳解 (網路中ACL )

2021-10-01 11:49:10 字數 4605 閱讀 2926

在我們學習acl中,在搞懂acl的同時也要搞定萬用字元掩碼(wildcard mask)。說簡單點,萬用字元掩碼就是0為絕對匹配,必須嚴格匹配才行,而1為任意,從某種意義上講,如果乙個8位上有乙個1字元,那也只有兩種方式,0或者1,但是如果進行組合,那麼方式就多了。
舉例說明吧。

一般我們在應用上都是進行位址塊的匹配,怎麼講呢?就是說:

(1)對某個a b c類網進行匹配或者教萬用字元遮蔽

(2)對某個子網應用acl。

(3)對特定主機應用acl

(4)對任意主機或者網路應用acl

(5)特殊情況的匹配

差不多就是以上五種情況,下面一一說明。

這種情況很好解釋。

例如:a類:10.0.0.0 0.255.255.255

先寫成二進位制形式: 00001010.00000000.00000000.00000000

00000000.11111111.111111111.11111111

可以看出,第乙個位元組需要嚴格匹配,也就是說必須為10.,後面的任意匹配。

得到的網路為10...*

如果我把這個改一下呢?10.0.0.0 0.0.3.255

同樣寫成二進位制形式:00001010.00000000.00000000.00000000

00000000.00000000.00000011.111111111

前兩個位元組嚴格匹配為10.0,後面的同上題乙個思路,0就嚴格匹配,1就任意。

在這裡,後10個位元可以任意匹配,我們通過計算可以得到合適的結果:

10.0.0.*

10.0.1.*

10.0.2.*

10.0.3.*

這四個子網

在例如這道題(華為認證中的某到題)

寫成二進位制

0000 1010 . 0000 0001 . 0000 0001 .0000 0000

0000 0000 . 0000 0000 . 1111 1110 . 1111 1111

根據0就嚴格匹配,1就任意,可得到結果 (注意:這裡x代表任意填充 )

10.1.***x ***1.***x ***x

即匹配到了 10.1.1.1(10.1.0000 0001.0000 0000) 10.1.3.1(10.1.0000 0011.0000 0000)

所以選ac

還是舉例說明,以c類網路192…168.1.0/24為例進行子網劃分。

我們引入位址塊的思想進行解釋會好理解一些。因為子網一般都是以位址塊形式存在的。

位址塊為128,192.168.1.128 0.0.0.127

位址塊為64,192.168.1.0 0.0.0.63

位址塊為32,192.168.1.0 0.0.0.31

位址塊為16,192.168.1.0 0.0.0.15

位址塊為8,192.168.1.0 0.0.0.7

位址塊為4,192.168.1.0 0.0.0.3

位址塊為2,192.168.1.0 0.0.0.1

萬用字元需要全匹配,例如:192.168.13.3 0.0.0.0

還有一種表示方法:host 192.168.13.3

host在這裡是關鍵字,用來代替0.0.0.0 ,用於源位址和目的位址字段。

這是任意匹配的情況,主機任意,萬用字元任意匹配:0.0.0.0 255.255.255.255,同時這裡也有簡寫——any

用我的話說這種情況是不按規則出牌的情況,也是比較有趣的。

我不想讓某個子網或者是某個有類網被萬用字元遮蔽,我僅僅是想讓部分主機被遮蔽,不過這部分主機也應該是有規律的,要不管理人員肯定得折騰瘋。哈哈。

僅舉兩例以供說明:

隨便寫乙個,計算出遮蔽了哪些網路。

隨便寫乙個 192.168.1.23 0.0.0.5

怎麼?傻眼了?哈哈哈哈哈哈哈哈,這就是不按規則出牌的情況,ccna自學指南裡面肯定說了,不能從11.0或者12.0等網路開始,非得是2的次冪才行。對此規矩我們不予理睬,下面我慢慢講解,大家細細品味,還是使用最為原始的辦法進行乙個乙個匹配。

寫成二進位制形式:11000000.10101000.00000001.00010111

00000000.00000000.00000000.00000101

接下來就是匹配計算了。前三個位元組毫無疑問,嚴格匹配。最後乙個位元組逢0匹配,逢1任意。

0001 0010

0000 0011

0000 0110

0000 0111

000101

如上的公式,我們看到有星號的位置是可以任意匹配的,這樣我們就可以算出:

①00010010——18

②00010011——19

③00010110——21

④00010111——23

這樣就很明顯了,得到的結果就是

192.168.1.18

192.68.1.19

192.168.1.21

192.168.1.23 都被0.0.0.5這個萬用字元掩碼給遮蔽了。

怎樣,這個不按規則出牌的萬用字元掩碼是不是也愚弄了你一次?

備註:只要嚴格按照0——嚴格匹配,1——任意配置的原則不管什麼反掩碼都是紙老虎。

寫第二個,我需要匹配乙個網路裡面奇數ip的主機或者偶數ip的主機(或者的路由過濾中需要奇數網路)

還是看例子:

192.168.1.1

192.168.1.2

192.168.1.3

192.168.1.4

192.168.1.5

192168.1.6

192.168.1.7

192.168.1.9

192.168.1.254

思路都是一樣的,條條道路通羅馬,這裡條條道路萬用字元

我還是要寫成二進位制形式

前面的三個位元組就省略了,只寫後面的乙個位元組的:

看出規律了麼? 什麼?沒有啊,仔細瞧瞧麼!奇數ip的最後一位都是1,而偶數ip的最後一位都是0。這就是規律啊。

那麼怎麼寫呢?這個就比較簡單了吧,奇數ip的:192.168.1.1 0.0.0.254 ;偶數ip的呢——192.168.1.2 0.0.0.254

再例如 192.168.1.0 0.0.0.254 (抓到了192.168.1.2 192.168.1.4 192.168.1.6 192.168.1.8 ………等等)

如上就是我對acl的理解,有說錯的,做錯的,還望大家指正,所謂三人行必有我師,你有什麼更好的辦法別忘記跟帖。

acl主要難點是在萬用字元的計算,如有這麼一道題:

已知子網,求萬用字元掩碼。

例:允許199.172.5.0/24

199.172.10.0/24

199.172.13.0/24

199.172.14.0/24網段訪問路由器。要求寫出acl來,但只能用兩條acl代替。

先將這四個數換成二進位制:

5.0 0 1 0 1

10.0 1 0 1 0

13.0 1 1 0 1

14.0 1 1 1 0

觀察可以看到5.0和13.0

10.0和14.0有共同點。

2.將不相同的部分(變換的數字)用z表示

5.0和13.0

z 1 0 1

10.0和14.0

1 z 1 0

3.將z換成1,不變換(相同部分)換成0。可以得出:

5.0和13.0

z 1 0 1 ------------ 1 0 0 0

10.0和14.0

1 z 1 0 ------------ 0 1 0 0

4.最後將二進位制換成十進位制:

5.0和13.0

z 1 0 1 ------------ 1 0 0 0 -------- 8

10.0和14.0

1 z 1 0 ------------ 0 1 0 0 -------- 4

最後得出:

access-list 10 permit 199.172.5.0 0.0.8.0

access-list 11 permit 199.172.10.0 0.0.4.0

只能分段完成,這裡我分四段。(也可以分五段,自己想)

192.168.1.40—47 192.168.1.40 0.0.0.7

192.168.1.48—63 192.168.1.48 0.0.0.15

192.168.1.64—71 192.168.1.64 0.0.0.7

外加一條deny 192.168.1.71 0.0.0.0

也可以五段:

00101000 192.168.1.40 0.0.0.7(192.168.1.40-47)

00110000 192.168.1.48 0.0.0.15(192.168.1.48-63)

01000000 192.168.1.64 0.0.0.3 (192.168.1.64-67)

01000100 192.168.1.68 0.0.0.1 (192.168.1.68-69)

01000110 192.168.1.70 0.0.0.0 (192.168.1.70)

MaskEdit中掩碼的含義及使用

去掉輸入資料開頭的空格符 讓輸入資料的字母都變成大寫,直到遇上掩碼字元 讓輸入資料的字母都變成小寫,直到遇上掩碼字元 不限制輸入資料字母是大寫或小寫 若在輸入格式內加入某個特殊字元,只要在特殊字元 的前面加上此掩碼就可以了。說明了就和c語言中的用在printf中的那個轉意字元一樣,哈哈她們的模樣原來...

java泛型中萬用字元的使用詳解

public static void main string args public static void f list list 在上面 中,程式能正常執行。但是當你要在方法f 中進行add操作時就會發現,該list新增除了null之外任何值,編譯都會出錯。萬用字元也像一般的泛型引數一樣,可以使...

詳解 IP的分類 定址規則及子網掩碼

詳解 ip的分類 定址規則及子網掩碼 隨著電腦技術的普及和網際網路技術的迅猛發展,網際網路已作為二十一世紀人類的一種新的生活方式而深入到尋常百姓家。談到網際網路,ip位址就不能不提,因為無論是從學習還是使用網際網路的角度來看,ip位址都是乙個十分重要的概念,internet的許多服務和特點都是通過i...