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