耿雨嵐
摘 要 路由器是網絡中的核心設備,路由協議是網絡的基礎支撐。應用linux系統的網絡協議棧,實現路由器的功能,對于學習和應用路由交換技術有很大的幫助。文章首先介紹linux操作系統、靜態路由和動態路由技術,然后分析linux內核的路由轉發,最后通過簡單網絡實例,說明路由配置實踐過程。
關鍵詞 linux系統;路由選擇;路由轉發;路由配置
中圖分類號 TN91 文獻標識碼 A 文章編號 1674-6708(2018)225-0090-02
1 概述
Linux與其他操作系統相比,具有開放源碼、沒有版權、技術社區用戶多等特點,開放源碼使得用戶可以自由裁剪,靈活性高,功能強大,成本低。尤其系統中內嵌網絡協議棧,經過適當的配置就可實現路由器的功能。這些特點使得Linux 成為開發路由交換設備的理想開發平臺。
路由器工作在OSI參考模型中的網絡層,主要工作就是數據報文轉發和路由處理。數據報文轉發用來在子網間傳送數據報文,路由處理創建和維護路由表,實現路由選路。路由選路就是選擇到達目的地的最佳路徑,實現路由處理就需要利用路由協議和路由選擇算法。路由轉發負責在最佳路徑上傳遞IP分組。不同的路由協議,用于不同的應用場合,路由選擇方式分為靜態路由和動態路由。
1.1 靜態路由
由網絡管理員采用手工配置路由數據的方式稱為靜態路由,路由器獲取非直連網段的路由信息,不需要自己選路。靜態路由減少控制的流量和開銷,提高安全保密性,不易產生環路,工作比較穩定;配置簡單,對路由器性能要求不高;利用靜態路由可實現冗余備份和路由的精確控制。靜態路由適用于規模小、拓撲結構固定的網絡。當網絡拓撲產生變化時,需要再次手工進行配置和調整路由信息,不能自動生成路由表。
1.2 動態路由
動態路由是指由路由器通過動態路由協議,路由器之間相互通信,自動傳遞和配置路由信息。當網絡拓撲發生變化時,重新計算路由,并擴散新的路由信息。通過路由協議擴散后,其他路由器自動更新和維護路由信息。常用的動態路由協議包括路由信息協議(RIP)、開放最短路徑優先協議(OSPF)和邊界網關協議(BGP)等。
通過動態路由協議,引發各路由器更新各自的路由表,自動地反映網絡拓撲變化,不需要網絡管理員手工干預,適用于規模大、拓撲復雜的網絡。同時帶來一些缺點,因為計算量大占用了CPU資源,動態交互增加了網絡負擔。
1.3 試驗路由選擇分析
通過建立真實的試驗網絡的方式對網絡行為進行研究,是比較全面準確的方法。但由于成本和空間的限制,采用模擬網絡的方法也比較常用。模擬網絡中的路由包括動態路由和靜態路由,動態路由需要加載運行路由協議軟件(比如RIP、OSPF等),對于現有的試驗環境有困難。同時由于靜態路由模擬效率高,對于學習提高對于路由的理解有很大的幫助。綜合考慮,本試驗采用linux系統計算機模擬真實路由設備的方法進行試驗,主要集中在靜態路由的應用。
2 linux系統內核的路由轉發
Linux操作系統嵌入了TCP/IP協議棧,協議軟件具有路由轉發功能。路由轉發依賴作為路由器的主機中安裝多塊網卡,當某一塊網卡接收到數據包后,系統內核會根據數據包的目的IP地址,查詢路由表,然后根據查詢結果將數據包發送到另外一塊網卡,最后通過此網卡把數據包發送出去。此主機的處理過程就是路由器完成的核心功能。
通過修改Linux系統內核參數ip_forward的方式實現路由功能,系統使用sysctl命令配置與顯示在/proc/sys 目錄中的內核參數。首先在命令行輸入:cat /proc/sys/net/ipv4/ip_forwad,檢查Linux內核是不是開啟IP轉發功能。如果結果為1,表明路由轉發功能已經開啟;如果結果為0,表明沒有開啟。出于安全考慮,Linux內核默認是禁止數據包路由轉發的。在linux系統中,有臨時和永久兩種方法啟用轉發功能。
臨時啟用:此種方法只對當前會話起作用,系統重啟后不再啟用。臨時開啟的命令格式:sysctl–w net.ipv4.ip_forward=1。
永久啟用:此種永久性的啟用IP轉發功能,通過更改配置文件/etc/sysctl.conf中的語句行“net.ipv4.ip_forward=0”,修改為“net.ipv4.ip_ forward=1”,保存配置文件后執行命令sysctl–p/etc/sysctl.conf,配置便立即啟用。
3 路由配置應用
Linux系統主機必須同時安裝兩塊以上的網卡才能實現路由器功能。網絡由多個主機和路由器組成,主機之間通信通過多個路由器,經過的每個路由器需知道所有網絡的信息。當接收到數據包時,查詢路由表項將數據包轉發給下一跳路由器,最后發送到目的主機。以靜態路由方式配置如圖1所示的網絡為例,說明配置的過程。
Linux系統配置靜態路由功能方法有兩種:臨時和永久起效。臨時起效方法使用命令:route add[-net|-host] 目的地[netmask子網掩碼][gw網關][metric N][[dev]接口]。如圖1所示的網絡連接中,在作為路由器的routerA的 Linux 主機中,添加網絡3的路由表項,執行命令:route add –net 193.168.1.0/24 gw 192.168.0.1。在路由器重啟時會重新初始化路由表,在Linux系統中用上述命令方式添加的路由數據丟失。臨時生效的方法,一般適用于臨時做個試驗,驗證一下添加的路由是否起作用。
永久生效的方法是修改靜態路由配置文件。本文采用的試驗以RHEL 6.0系統為例,描述修改配置文件過程。RHEL 6.0系統的靜態路由配置,保存在文件/etc/sysconfig/ network-scripts/route-interface中(interface 指網絡適配器)。配置參數的命令格式:IP地址/掩碼長度 via 網關地址dev網絡接口。
配置步驟如下:
1)分別在路由器A和路由器B的兩個網絡接口上設置如圖所示的IP地址,不需要配置默認網關;
2)分別在路由器A和路由器B上使用systcl命令,啟用linux內核的IP包轉發功能;
3)在路由器A上網絡1連接eth0接口,在配置文件/etc/sysconfig/network-scripts/ route-eth0 中添加內容:193.168.1.0/24via 10.10.10.254 deveth1;
4)在路由器B上網絡3連接eth1接口,在配置文件/etc/sysconfig/network-scripts/routeeth1中添加內容:192.168.0.0/24via 10.10.10.1 deveth0;
5)執行命令:service network restart,使添加的靜態路由起作用;
6)將網絡1中的計算機 1的默認網關設置為連接路由器A接口的IP 地址192.168.0.1;將網絡3中的計算機2的默認網關設置為連接路由器B接口的IP 地址193.168.1.1。
通過以上步驟完成配置網絡。網絡配置完成后,通過ping 命令測試網絡的連通性和路由配置是否正確。
參考文獻
[1]陳博.Linux實用教程[M].北京:人民郵電出版社,2008.
[2]布萊克.IP路由協議[M].北京:電子工業出版社,2000.
[3]盛勤.基于Linux的路由器操作系統及E1接口軟件設計與實現[D].成都:電子科技大學,2015.