關於標準ACL的反掩碼使用方法

2021-06-21 10:13:17 字數 1229 閱讀 6033

近來通過學習cisco的標準acl發現該acl有兩個方面的用途,乙個是用在dv協議傳遞的路由條目進行控制,另外就是對於資料層面過濾流量,而這兩種對於標註acl的寫法是不同的,具體的不同就是體現的反掩碼的寫法上

我們知道dv協議在傳遞路由條目的時候是攜帶路有字首和掩碼的(ripv1除外),我們想要過濾某乙個路由條目的時候,到底該怎樣寫呢?

假設我們想過濾掉3.3.3.0/24這個路由條目,怎樣抓取這個路由條目?大多數初學者一定會寫成:

access-list 10 permit 3.3.3.0  0.0.0.255

首先這種寫法是肯定可以抓取路由條目,但是我們應該知道我們這個時候抓取的是路由字首。我們說反掩碼0代表必須匹配,而1表示任意,也就是說上面acl的後8位任意變的字首,這樣抓取到字首也肯定可以抓取到一些其他的路由字首,例如3.3.3.128/25,和3.3.3.192/26等等這個樣的字首,這和我們的字首列表一下語句是匹配的:

ip prefix-list 10 permit 3.3.3.0/24  le 32,如果你理解這條語句,那麼也就很好理解標準acl反掩碼在用來抓取控制層面路由條目的方法了,那麼我們到底該怎樣抓取這個3.3.3.0/24這個路由條目呢,很簡單:

access-list 10 permit 3.3.3.0  0.0.0.0

這樣只會抓取在路由傳遞中字首為3.3.3.0的路由了,等等,注意到我沒有寫掩碼麼?是的,儘管這樣的acl已經很精確了,但是他還會抓取到一下路由3.3.3.0/(24-32),共9個路由條目,不過這比上面抓取到256個路由條目要好的多了,大家也許會說能不能更精確點,只抓取3.3.3.0/24這個路由條目呢?可以的哦,就是使用字首列表,但是如果你非要想使用標準acl可不可以呢?不行的,但是這麼做也是沒有意義的,因為你的網路中不可能存在3.3.3.0/24和3.3.3.0/128這連個路由條目,也許你會說我可以部署這樣的兩個路由條目,是的,可以,但是這不符合乙個專業的位址規劃,至少你應該這樣部署這兩個路由條目即:3.3.3.0/25和3.3.3.128/25。

而在資料層面我們抓取資料報時,我們抓取的是資料報的源ip位址,假設你想抓取3.3.3.0/24網段中乙個主機位址為3.3.3.1的資料報,你會怎麼樣寫呢?

你應該寫成

access-list 10 permit 3.3.3.0  0.0.0.0,表示完全匹配3.3.3.1這個主機位址,那麼又假設你想放行所有3.3.3.0/24中所有的流行通訊呢?

你應該寫成

access-list 10 permit 3.3.3.0  0.0.0.255

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

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

系統呼叫的標準使用方法

系統呼叫,一般是指 glibc 中的包裝函式。這些函式會在執行系統呼叫前設定暫存器的狀態,並仔細檢查輸入引數的有效性。系統呼叫執行完成後,會從 eax 暫存器中獲取核心 執行結果。核心執行系統呼叫時,一旦發生錯誤,便將 eax 設定為乙個負整數,包裝函式隨之將這個負數去掉符號後,放置到乙個全域性的 ...

關於CASE WHEN的 使用方法

case具有兩種格式。簡單case函式和case搜尋函式。簡單case函式 case when 1 then 男 when 2 then 女 else 其他 end case搜尋函式 case when 1 then 男 when 2 then 女 else 其他 end 這兩種方式,可以實現相同的...