1 引言 隨著網絡的普及,小型企業的局域網在資金短缺的情況下如何花更少的錢去實現較為復雜的網絡功能、滿足人們對網絡功能更高的需求,是網絡技術人員關心的問題。在Linux系統中網絡技術人員可根據用戶需求實現豐富的路由功能,其中很多功能都可以和路由器產品相媲美。基于Linux系統強大的功能,這里提出通過架設Linux服務器解決該問題,經濟而安全。 本地一家工廠初步搭建了局域網,由于經濟條件有限,只購買較簡單的網絡連接設備,通過光纖接入本地ISP。隨著網絡應用的發展,現需要劃分幾個網段,規定機房用戶不允許訪問財務部門和辦公室,財務部門的計算機不允許訪問Internet。大多數解決這類問題的做法都是通過使用交換機結合路由器共同完成。這種做法雖然實現相對簡單,較易維護,但成本高。因此,本文根據實際條件和具體需求制定出一種技術方案:安裝一臺Linux服務器,通過劃分虛擬局域網 (VLAN)、設置策略路由解決問題。 2 VLAN的概念 2.1 VLAN的定義 VLAN(Virtual Local Area Network)又稱為虛擬局域網,該技術實現了與物理位置無關的邏輯工作組劃分。采用VLAN技術可將廣播數據報限制在同一VLAN內,提高了網絡整體的有效帶寬。同時,可根據實際情況分別對各VLAN定義不同級別的安全策略,有效地避免非法入侵,增強了網絡的安全性。下面介紹三種主要VLAN的定義方式。 (1)基于端口的VLAN定義通過交換機的端口劃分來定義虛擬子網,該方式和物理網段劃分較為類似,其主要缺點是無法實現與物理位置無關的虛擬網配置,如果工作站在端口間移動,則有必要對VLAN重新進行配置,這種方法運用在實際中比較普遍也最成熟。 (2)基于MAC地址的VLAN定義用節點網卡的MAC地址決定其所隸屬的虛擬子網。這種方式實現了與物理位置無關的虛擬網配置,不足之處在于初始化時,網絡管理人員必須手工配置節點的MAC地址,節點增加時,管理負擔也增大,在節點數目龐大的網絡中,顯然不適宜這種配置方式。 (3)基于IP策略的VLAN定義 通過網絡層協議或IP地址來確定虛擬網。這種VLAN定義方式比前面兩種方式更加靈活。交換機可根據各節點網絡地址或報文協議自動將其劃分成不同的VLAN。 2.2 在Linux系統中VLAN的實現 大多數情況下在Linux系統中主要使用基于端口的802.10 VLAN。每一個支持802.IQ協議的網絡設備,在發送數據包時,都在以太幀頭中增加一個4字節的Tag標記,以指明該數據包屬于哪一個VLAN。當數據包進入另一個支持802.1Q協議的網絡設備時,會根據802.1Q幀中的Tag標記交換到所屬VLAN。在應用中一般是把支持802.1Q協議的2層交換機和3層交換機相連,這樣2層交換機就可以利用3層交換機的路由功能進行不同VLAN之間的數據轉發。 3 在Linux系統中策略路由的實現 在Linux系統上實現策略路由也是基于上述原理。通過RPDB實現, RPDB主要由多路由表和規則組成,由規則選取表。路由表以及對其的操作和其對外的接口是整個RPDB的核心部分。路由表主要由table,zone, node這些主要的數據結構構成。對路由表的操作主要包含物理的操作以及語義的操作。 3.1 策略路由 策略路由就是不僅根據數據報的目的地址,而且還根據數據報的其他一些特性,如:源地址、IP協議、傳輸層端口,甚至是數據包的負載部分內容進行路由選擇。而傳統路由算法都是根據IP包目的地址進行路由選擇。 3.2 應用Linux策略路由的一般步驟 在Linux上應用策略路由,首先根據實際應用分析確定路由策略,然后一般采取以下步驟: (1)創建多路由表通過編輯/etc/iproute2/rt jables文件創建路由表: (2)向路由表添加路由 向路由表中增加路由使用iproute命令,例如:向user_table1路由表中增加路由: ip route add 202.201.100.0/24 via 192.168.100.1 tableuser_table 1 (3)建立相應的規則使用ip rule命令設置規則,例如:ip rule add from 192.168.100.0/24 table tlSer table1//來自192.168.100.0/24的IP包使用路由表user_table1(基于源地址選取路由表)ip rule add to 202.11 1.100.0/24 table user table1 //去往202.111.100.0/24的IP包使用路由表user_table1(基于目標地址選取路由表) 4 解決方案 建設一個工廠局域網,局域網中只有2層交換機.通過一臺具有NAT功能的路由器接人當地ISP,此局域網中有3種用戶類型上網:機房用戶,辦公室用戶,財務部門用戶。現準備架設一臺Linux服務器,劃分3個VLAN,分別為:VLAN10(用于開放機房)網段為192.168.1.0/24,VLAN 11(用于辦公室)網段為192.168.2.0/24,VLAN 12(用于財務部門)網段為192.168.3.0/24。規定機房用戶不允許訪問財務部門和辦公室計算機,財務部門用戶不允許訪問Internet,而辦公室用戶允許訪問Internet和財務部門的計算機。該實例中Linux系統所使用內核為2.4.20。網絡拓撲圖如圖1所示。要求Linux內核支持802.1Q VLAN,并支持策略路由。 (1)創建各個VLAN vconfig add eth0 10 vconfig add eth0 11 vconfig add eth0 12 這樣,在系統中就創建了3個基于802.IQ VLAN,由于在eth0接口配置3個VLAN系統會自動加載802.1Q模塊。另外,在本例中需把與eth0相連的交換機端口設置為Trunk模式。 (2)設置各虛擬VLAN接口IP地址 ip address add 192.168.1.253/24 dev eth0.10//給eth0.10設置IP地址,相當于設置VLAN10的地址,此地址就是VLAN 10用戶的默認網關,以下含義相同: ip address add 192.168.2.253/24 dev eth0.11 ip address add 192.168.3.253/24 dev eth0.12 ip link set dev eth0.10 up//啟用接口。以下含義相同 ip link set dev eth0.11 up ip link set dev eth0.12 up 設置各接口 IP地址也可以用ifconfig命令。 (3)編輯/ete/iproute2/rt_tables文件以創建相應路由表: 100 ji_fang 101 ban_gong 102 cai_wu (4)向各路由表中添加路由信息 ①向ji_fang表中添加路由ip route add 0.0.0.0/0 via192.168.100.2 table ji_fang//設置缺省路由訪問Internet(由于在機房不允許訪問辦公室和財務部門,所以只需要設置默認路由訪問Internet) ②向ban_gong表中添加路由ip route add 192.168.3.0/24 dev eth0.12 table ban_gong//設置訪問財務部門路由ip route add 0.0.0.0/0 via 192.168.100.2 table ban_gong//設置缺省路由訪問Internet ③向cai_wu表中添加路由ip route add 192.168.2.0,24dev eth0.11 table cai_wu//設置訪問辦公室路由 (5)設置策略路由規則 ip rule add from 192.168.1.0/24 table ji_fang//來自192.168.1.0/24的包使用路由表ji_fangip rule add from 192.168.2.0/24 table ban_gong//來自192.168.2.0/24的包使用路由表ban_gongip rule add from 192.168.3.0/24 table eai_wu |