ACL中通配符(wildcard) mask的使用


在路由器里我們經常使用access-list來做些地址過濾,達到某些安全策略的目的,一般常用的方法是對某個地址段進行permit或者deny,例如:

access-list permit 1 192.168.1.0 0.0.0.3

access-list permit 1 192.168.1.16 0.0.0.15

初學者對於wildcard mask的定義可能不是非常清晰,都會認為在ACL中的wildcard mask只能使用網絡中已使用的地址段的子網掩碼的反掩碼來作為ACLwildcard mask,看以下例子:

例一:某網絡上存在一IP地址段192.168.1.0/29,如果是要允許這個網段所有的機子上網就可以用access-list permit 1 192.168.1.0 0.0.0.7來做策略,但是如果要求只允許網絡內192.168.1.1192.168.1.5這兩個地址上網的話,我們通常會這樣寫ACL

Access-list permit 1 192.168.1.1 0.0.0.0

Access-list permit 1 192.168.1.5 0.0.0.0

Access-list deny any any

如果對wildcard maskACL中的使用定義很清晰的話,我們可以用另外一種寫法,在此之前,我們先來回顧下ACL中使用wildcard mask的匹配規則:

ACL中的wildcard mask3201組成,如果該位為0那么被匹配的地址的對應位就必需與ACL中的地址對應位匹配,如:

被匹配地址:   192.168.1.1   1100 0000.1010 1000.0000 0001.0000 0001

Wildcard mask 0.0.0.7       0000 0000.0000 0000.0000 0000.0000 0111

ACL中的地址:  192.168.1.0   1100 0000.1010 1000.0000 0001.0000 0000

紅色粗體部分就是被匹配地址與ACL中的地址需要完全匹配的部分,因為wildcard mask的前29位為0,而后三位為1,所以被匹配地址的后三位被忽略,也就是所謂的don’t care,因此后三位可以是01的任意組合。

我們再看下以下這個ACL 

Access-list permit 1 192.168.1.1 0.0.0.4192.168.1.1ACL的匹配條件地址)

假設網絡內被匹配地址段為192.168.1.0/29

被匹配地址:

192.168.1.1

1100 0000.

1010 1000.

0000 0001.

0000 0

0

01

 

192.168.1.2

1100 0000.

1010 1000.

0000 0001.

0000 0

0

10

 

192.168.1.3

1100 0000.

1010 1000.

0000 0001.

0000 0

0

11

 

192.168.1.4

1100 0000.

1010 1000.

0000 0001.

0000 0

1

00

 

192.168.1.5

1100 0000.

1010 1000.

0000 0001.

0000 0

1

01

 

192.168.1.6

1100 0000.

1010 1000.

0000 0001.

0000 0

1

10

Wildcard mask:

0.0.0.4  

0000 0000.

0000 0000.

0000 0000.

0000 0

1

00

ACL條件地址:

192.168.1.1

1100 0000.

1010 1000.

0000 0001.

0000 0

0

01

    

根據ACLwildcard mask定義,0.0.0.4中只有第30位為1,所以與該位的匹配可以忽略(藍色部分);而其它位必需與ACL中的條件匹配地址192.168.1.1的對應位相同,因此我們看上面紅色字體,條件地址的末兩位是01,和條件地址末兩位相同的只有地址192.168.1.1192.168.1.5,也就是說在地址段192.168.1.0/29中,只有15這兩個地址能夠通過ACL匹配。

我們上面例1中的ACL

Access-list permit 1 192.168.1.1 0.0.0.0

Access-list permit 1 192.168.1.5 0.0.0.0

Access-list deny any any

可以寫為:

Access-list permit 1 192.168.1.1 0.0.0.4

通過以上例子,我們看出ACL中的wildcard mask和在動態路由協議里的反碼是不同定義的。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM