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