來源:互聯網
上載者:User
關鍵字
Linux
流量控制
高級路由
內核網路參數
內核有很多可以在不同環境下調整的參數。 通常,預設的缺省值可以滿足99%的環境要求,we don't call this the HTTP://www.aliyun.com/zixun/aggregation/3415.html">Advanced HOWTO for the fun of it!
有個很有趣的地方:/proc/sys/net,你應該看看。 這裡一開始並沒有把所有的內容歸檔,但我們正在盡力如此。
有時候你需要看看Linux的內核原始程式碼、讀讀Documentation/filesystems/proc.txt。 絕大多數特性那裡都有解釋。
1. 反向路徑過濾
缺省情況下,路由器路由一切包,即使某些資料包「明顯地」不屬於你的網路。 一個簡單的例子就是私有IP空間溢出到了Internet上。 如果你有一個網卡帶有去往195.96.96.0/24的路由,你不會期望從這裡收到來自212.64.94.1的資料包。
很多人都希望關掉這個功能,所以內核作者們按照這種要求做了。 你可以利用/proc下的一些檔來配置內核是否使用這個功能。 這種方法就叫「反向路徑過濾」。 基本上說,就是如果一個資料包的回應包不是從它來的網卡發出去,就認為這是一個偽造包,應該丟棄。
下面的片段將在所有的(包括將來的)網卡上啟用這個功能:
# for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do
> echo 2 > $i
> done
依照上面的例子,如果一個源位址是來自office+isp子網的資料包,卻從Linux路由器的eth1口到達,那麼它將被丟棄。 同理,如果一個來自office子網的資料包卻聲明它來自防火牆外面的某個地方,也會被丟棄。
上面說的是完整的反向路徑過濾。 卻省情況是只基於直接與網卡相接的子網位址進行過濾。 這是因為完整的反向路徑過濾會破壞非對稱路由(就是說資料包從一條路來而從另一條路離開——比如你在網路中使用了動態路由(bgp、ospf、rip)或者比如衛星通訊,資料從衛星下行到路由器,上行資料則經過地面線路傳輸。 )。
如果你有這些情況,就可以簡單地關掉衛星下行資料要進入那塊網卡的rp_filter。 如果你想看一看丟棄了哪些包,可以通過相同目錄下的log_martians檔通知內核向你的syslog中寫日誌。
# echo 1 >/proc/sys/net/ipv4/conf/<interfacename>/log_martians
2. 深層設置
有很多參數可以修改。 我們希望能夠全列出來。 在Documentation/ip-sysctl.txt中也有部分記載。
這些設置中的部分缺省值取決於你在內核配置時是否選擇了「Configure as router and not host」。
Oskar Andreasson也有一個網頁比我們討論得更詳細的網頁:HTTP://ipsysctl-tutorial.frozentux.net/