歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

linux路由表,策略路由,路由查找

路由表

內核中路由表有2種:

l一個是緩存路由(fib),是自動學習生成自動管理的,用戶沒必要去干預,但是內核還是提供了方法讓用戶可以去清空它。但是用戶不能設置它的項,但是可以根據這個緩存更新的原理從外部影響他。

l路由表:一共有256個,在內核中是一個數組,可以配置讓內核使用其中的一個或者多個。默認的是使用0,254,255這三個。一般大家關系都是254號的main路由,route 命令看到的和操作的都是這個路由表。255是local路由,還包含了廣播地址等,0是全路由,還包括了ipv6的,是最全面的。但是254的主路由是最容易看,也是用戶最關心的,所以route命令只操作這個路由表。選擇使用哪個路由表叫做留有策略,這個也是可以通過ip rule命令配置的。

路由表裡面的路由類型有6種,我們平時見的最多的是單播和網段類型的:

l單播。目的地址是某一個ip,一般是手動添加的。

l網段。這個是最常見的,到達某個網段需要從哪裡發送出去

lNat。是的,nat也是路由的一種,他會修改掉ip的地址域為要到達的地址。之所以nat也是路由的一種是因為,nat也是一種形式的路由。這個nat和iptable的nat是同時存在的兩種不同的機制。

lUnreachable:不可達類型的路由。我們經常看到不可達,通常是因為沒有配置到目的地址的路由,或者是配置的不對。但是還可以單獨的配置一個不可達類型的路由,即使他是可達的。

lProhibit:禁止類型的路由。到某個地址的路由默認都是添加的如何到達,但是也可以添加如何禁止。同樣是到某個網段或地址的路由,可以在某個網口上設置其禁止,這個與實際的到不了不再一個層次。這個是查路由的時候路由表告訴你的這個網段是被禁止的。

lBlackhole:到達目標網段的所有數據包都可以查到,但是都會直接被丟棄。也就是這是一個欺騙的路由條目。你以為你查到了,你以為你發出去了,其實都被悄悄地丟掉了。

 

這些種類的路由由於功能和路由策略重合,同時使用比較混亂,所以如果要實現復雜的路由,就應該使用路由策略規則,而不是這裡的路由類型。

路由表查詢匹配算法

路由表的查詢匹配算法一般是lpm(longest prefix match),這種算法適合於不同精細度的網段,允許匹配最精細的網段設置,如果沒有更精細的則匹配當前的。最不精細的等級就是0.0.0.0網段,可以匹配全部的網段。

 

路由策略

每一個路由表都對應一個路由策略,默認的路由策略最簡單,就是查詢表即可。默認也有3個路由策略:

\

 

所以,我們自己添加了一個0,254,255之外的路由表之後,這個路由表也是不會正常的工作的,路由表只是數據庫,查不查詢,怎麼查詢是由路由策略決定的。自己添加了路由表之後要想讓這個路由表被查詢,需要添加一個對應的路由策略。默認的路由策略都是lookup,就是我們通常意義的查詢行為,還有其他的路由策略行為:

lNat:查詢到的路由是用來做nat的。對應的路由表中一般是有很多nat類型的路由表

lUnreachable:所有在對應的路由表中查到的路由條目都給出unreachable的答案

lProhibit:所有在對應的路由表中查到的路由條目都給出prohibit的答案

lBlackhole:所有在對應的路由表中查到的路由條目都直接丟棄

 

路由策略從第一個開始向後查詢,進入查詢每個策略對應的路由表,如果查到了,就采取對應的路由策略規定的行為。

路由查找流程

路由會現在緩存(fib)中查找,找不到則到路由表中查找。但是這個在路由表中查找並不但單純的去查表,網上很多資料都是描述的仿佛是直接去查路由表,匹配目的地址,但這已經是2.2版本內核之前的事情了。現在的流程復雜的多。

以前的路由查找,只是單純的根據目的ip地址來進行lpm匹配查詢,而現在的策略路由支持根據其他的域,比如源地址,tos,來的端口等來決定匹配的策略(這些叫做selector)。當然,路由表還是單純的目的地址匹配,支持多種匹配的是路由策略(rule)。

Copyright © Linux教程網 All Rights Reserved