BGP過濾表示式

2021-05-24 02:33:22 字數 3362 閱讀 6440

1、字和元字元特殊字元

乙個典型的as_path過濾器如下所示:

ip as-path access-list 83 permit ^1_701_(_5646_|_1240).*

在關鍵字permit後面的字串是乙個正規表示式。正規表示式包含字和元字元特殊字元。

字是正規表示式試圖匹配的一些正文本元。在上述例子中,1,701,5646和1240都是描述自治系統號的字。

元字元特殊字元是用作運算子的特殊的正規表示式符號,告訴正規表示式如何匹配。表1顯示了cisco ios會用到的元字元特殊字元;本文的剩餘部分表述每乙個元字元特殊字元的用法。

表1 關於as_path訪問列表的正規表示式元字元特殊字元

元字元特殊字元

匹配內容.

任何單一字元,包括空格

[ ]在方括弧中羅列的任何字元

[^]除了在方括弧中羅列的字元外任何字元(^必須放置在字元列表之前)

-(連字元)在由連字元所分隔的兩個字元之間的任意字元

?字元或模式出現0次或1次

*字元或模式出現0次或多次

+字元或模式出現1次或多次

^一行的開始

$一行的結束

|由元字元特殊字元分隔的字之一

_(下劃線)乙個逗號,行的開始,行的結束或空格

2、描述:匹配行的起始和結束

考慮下面的ap_path過濾器:

ip as-path access-list 20 permit 850

該過濾器匹配任何包 含字串850的as_path。匹配的as_path例如:(850),(23,5,850,155)和(3568,5850,310)等。無論是所匹 配的串是屬性中唯一的串或者屬性中多個as號中的乙個甚至是屬性中乙個很大的as號中的一部分,該匹配都成功。

假設你只想匹配包含唯一as號850的as_path,你必須描述行的開始和結束。使用補字型大小(^)匹配行的開始,美元符($)匹配行的結束:

ip as-path access-list 20 permit ^850$

這樣表示表示式的開始緊接乙個字串850,然後緊接行的結束符。

你還可以使用兩個描述來匹配乙個空的as_path:

ip as-path access-list 21 permit ^$

在上述情況,正規表示式匹配行的開始緊接行的結束;如果行的開始與行的結束間存在任何字元則匹配不成功。

3、括弧:匹配字符集和

括弧是你能指定單字元的範圍。例如:

ip as-path access-list 22 permit ^85[0123459]$

上述過濾器匹配包含單一as號850,851,852,853,854,855或859的as_path。

如果字元的範圍連續,你可以只指定序列中開始和結束的字元:

ip as-path access-list 22 permit ^85[0-5]$

該過濾器匹配上乙個過濾器中除859以外的其他as號。

4、否定:匹配除字符集和外的其他字元

當在括弧中使用加字元時,將否定括弧中指定的範圍。如果是正規表示式將匹配範圍外的任何內容。例如:

ip as-path access-list 24 permit ^85[^0-5]$

該過濾器除了多乙個加字元以外與上乙個過濾器類似,指定了「不是0~5」。該正規表示式將匹配856~859範圍內的單個as號。

5、萬用字元:匹配任何單一字元

點(.)匹配任何單一字元。單一字元可能是乙個空的。考慮下面過濾器:

ip as-path access-list 24 permit ^85.

該過濾器匹配乙個由as號850-859開始的as-path。由於「.」可以匹配乙個空格,as號85也能匹配成功。

6、替代:匹配字串集合中的乙個

(|)用作表示乙個「或」操作。即(|)任何一邊的字都可以匹配。例如:

ip as-path access-list 25 permit ^(851|852)$

該過濾器匹配單個as號:851或852的as_path。你可以擴充套件「或」功能來作多於兩個可能性的選擇:

ip as-path access-list 26 permit ^(851|852|6341|53)$

7、選擇字元:匹配乙個可能存在也可能不存在的字元

問號(?)匹配字的0個或乙個例項。例如

ip as-path access-list 27 permit ^(850)?$

該過濾器匹配乙個單一as號850的as_path或者匹配乙個空的列表。注意這裡的圓括弧,表示元字元「?」應用在整個as號上。如果表示式使用850?,元字元特殊字元只應用在最後乙個字元上。該表示式匹配85或者850。

8、重複:匹配許多字元的重複

你可以使用兩個元字元特殊字元來匹配重複的詞:星號(*)匹配0次或多次重複,加號(+)匹配1次或多次重複。例如

ip as-path access-list 28 permit ^(850)*$

該過濾器as-path匹配空的as列表或包含1個或多個的as號850的列表。即as路徑可以是(850),(850,850),(850,850,850)等。

下面的過濾器功能類似,只是要求列表中至少包含1 個as號850。

ip as-path access-list 29 permit ^(850)+$

9、分界線:描述多個字

分界線(_)用作描述分隔分別指定的一串字。例如假設你想匹配指定的as_path(5610,148,284,13)。過濾器可以如下所示:

ip as-path access-list 30 permit ^5610_148_284_13$

下劃線匹配行的開始、行的結束、逗號或空格。注意下面過濾器與上述過濾器的區別:

ip as-path access-list 31 permit -5610_148_284_13_

由於第乙個過濾器指 定了行的開始與結束,只有as_path(5610,148,284,13)才能匹配。在第二個過濾器中,只要求指定的序列包含在as_path中,並不 要求是唯一的屬性。所以as_path(5610,148,284,13),as_path(23,15,5610,148,284,13)和 as_path(5610,148,284,13,3005)等都能匹配。

10、放到一起:乙個複雜的例子

將多個元字元特殊字元混合是用來匹配一些複雜的字串才能顯示正則表達的真正威力。考慮下面的過濾器:

ip as-path access-list 10 permit ^(550)+[880|2304]?_1805_.*

wireshark 過濾表示式

1 對源位址為192.168.0.1的包的過濾,即抓取源位址滿足要求的包。表示式為 ip.src 192.168.0.1 2 對目的位址為192.168.0.1的包的過濾,即抓取目的位址滿足要求的包。表示式為 ip.dst 192.168.0.1 3 對源或者目的位址為192.168.0.1的包的過...

wireshark過濾規則表示式

1.協議過濾 在表示式欄中直接填寫協議名 比如tcp 只顯示tcp協議報文 tcp udp arp http 等 2.ip 過濾 在顯示過濾器表示式欄中填寫 例如 ip.src 192.168.1.102 顯示源位址為192.168.1.102的報文 ip.dst 192.168.1.104 顯示目...

MySql萬用字元過濾,正規表示式過濾

百分號萬用字元 在搜尋串中,表示任意字元出現的任何次數。1 找出所有以jet開頭的產品 select prod name,prod price from products where prod name like jet 2 匹配任何位置包含文字anvil的值 select prod name,pr...