VLAN間路由的必要性
根據(jù)目前為止學(xué)習(xí)的知識,我們已經(jīng)知道兩臺計(jì)算機(jī)即使連接在同一臺交換機(jī)上,只要所屬的VLAN不同就無法直接通信。接下來我們將要學(xué)習(xí)的就是如何在不同的VLAN間進(jìn)行路由,使分屬不同VLAN的主機(jī)能夠互相通信。
首先,先來復(fù)習(xí)一下為什么不同VLAN間不通過路由就無法通信。在LAN內(nèi)的通信,必須在數(shù)據(jù)幀頭中指定通信目標(biāo)的MAC地址。而為了獲取MAC地址,TCP/IP協(xié)議下使用的是ARP。ARP解析MAC地址的方法,則是通過廣播。也就是說,如果廣播報(bào)文無法到達(dá),那么就無從解析MAC地址,亦即無法直接通信。
計(jì)算機(jī)分屬不同的VLAN,也就意味著分屬不同的廣播域,自然收不到彼此的廣播報(bào)文。因此,屬于不同VLAN的計(jì)算機(jī)之間無法直接互相通信。為了能夠在VLAN間通信,需要利用OSI參照模型中更高一層——網(wǎng)絡(luò)層的信息(IP地址)來進(jìn)行路由。關(guān)于路由的具體內(nèi)容,以后有機(jī)會再詳細(xì)解說吧。
使用路由器進(jìn)行VLAN間路由
在使用路由器進(jìn)行VLAN間路由時(shí),與構(gòu)建橫跨多臺交換機(jī)的VLAN時(shí)的情況類似,我們還是會遇到“該如何連接路由器與交換機(jī)”這個(gè)問題。路由器和交換機(jī)的接線方式,大致有以下兩種:
l 將路由器與交換機(jī)上的每個(gè)VLAN分別連接
l 不論VLAN有多少個(gè),路由器與交換機(jī)都只用一條網(wǎng)線連接
最容易想到的,當(dāng)然還是“把路由器和交換機(jī)以VLAN為單位分別用網(wǎng)線連接”了。將交換機(jī)上用于和路由器互聯(lián)的每個(gè)端口設(shè)為訪問鏈接,然后分別用網(wǎng)線與路由器上的獨(dú)立端口互聯(lián)。如下圖所示,交換機(jī)上有2個(gè)VLAN,那么就需要在交換機(jī)上預(yù)留2個(gè)端口用于與路由器互聯(lián);路由器上同樣需要有2個(gè)端口;兩者之間用2條網(wǎng)線分別連接。
如果采用這個(gè)辦法,大家應(yīng)該不難想象它的擴(kuò)展性很成問題。每增加一個(gè)新的VLAN,都需要消耗路由器的端口和交換機(jī)上的訪問鏈接,而且還需要重新布設(shè)一條網(wǎng)線。而路由器,通常不會帶有太多LAN接口的。新建VLAN時(shí),為了對應(yīng)增加的VLAN所需的端口,就必須將路由器升級成帶有多個(gè)LAN接口的高端產(chǎn)品,這部分成本、還有重新布線所帶來的開銷,都使得這種接線法成為一種不受歡迎的辦法。
那么,第二種辦法“不論VLAN數(shù)目多少,都只用一條網(wǎng)線連接路由器與交換機(jī)”呢?當(dāng)使用一條網(wǎng)線連接路由器與交換機(jī)、進(jìn)行VLAN間路由時(shí),需要用到匯聚鏈接。
具體實(shí)現(xiàn)過程為:首先將用于連接路由器的交換機(jī)端口設(shè)為匯聚鏈接,而路由器上的端口也必須支持匯聚鏈路。雙方用于匯聚鏈路的協(xié)議自然也必須相同。接著在路由器上定義對應(yīng)各個(gè)VLAN的“子接口(Sub Interface)”。盡管實(shí)際與交換機(jī)連接的物理端口只有一個(gè),但在理論上我們可以把它分割為多個(gè)虛擬端口。
VLAN將交換機(jī)從邏輯上分割成了多臺,因而用于VLAN間路由的路由器,也必須擁有分別對應(yīng)各個(gè)VLAN的虛擬接口。
采用這種方法的話,即使之后在交換機(jī)上新建VLAN,仍只需要一條網(wǎng)線連接交換機(jī)和路由器。用戶只需要在路由器上新設(shè)一個(gè)對應(yīng)新VLAN的子接口就可以了。與前面的方法相比,擴(kuò)展性要強(qiáng)得多,也不用擔(dān)心需要升級LAN接口數(shù)不足的路由器或是重新布線。
由于需要一個(gè)個(gè)端口地指定,因此當(dāng)網(wǎng)絡(luò)中的計(jì)算機(jī)數(shù)目超過一定數(shù)字(比如數(shù)百臺)后,設(shè)定操作就會變得煩雜無比。并且,客戶機(jī)每次變更所連端口,都必須同時(shí)更改該端口所屬VLAN的設(shè)定——這顯然不適合那些需要頻繁改變拓補(bǔ)結(jié)構(gòu)的網(wǎng)絡(luò)。
動(dòng)態(tài)VLAN
另一方面,動(dòng)態(tài)VLAN則是根據(jù)每個(gè)端口所連的計(jì)算機(jī),隨時(shí)改變端口所屬的VLAN。這就可以避免上述的更改設(shè)定之類的操作。動(dòng)態(tài)VLAN可以大致分為3類:
l 基于MAC地址的VLAN(MAC Based VLAN)
l 基于子網(wǎng)的VLAN(Subnet Based VLAN)
l 基于用戶的VLAN(User Based VLAN)
其間的差異,主要在于根據(jù)OSI參照模型哪一層的信息決定端口所屬的VLAN。
基于MAC地址的VLAN,就是通過查詢并記錄端口所連計(jì)算機(jī)上網(wǎng)卡的MAC地址來決定端口的所屬。假定有一個(gè)MAC地址“A”被交換機(jī)設(shè)定為屬于VLAN“10”,那么不論MAC地址為“A”的這臺計(jì)算機(jī)連在交換機(jī)哪個(gè)端口,該端口都會被劃分到VLAN10中去。計(jì)算機(jī)連在端口1時(shí),端口1屬于VLAN10;而計(jì)算機(jī)連在端口2時(shí),則是端口2屬于VLAN10。
由于是基于MAC地址決定所屬VLAN的,因此可以理解為這是一種在OSI的第二層設(shè)定訪問鏈接的辦法。
但是,基于MAC地址的VLAN,在設(shè)定時(shí)必須調(diào)查所連接的所有計(jì)算機(jī)的MAC地址并加以登錄。而且如果計(jì)算機(jī)交換了網(wǎng)卡,還是需要更改設(shè)定。
基于子網(wǎng)的VLAN,則是通過所連計(jì)算機(jī)的IP地址,來決定端口所屬VLAN的。不像基于MAC地址的VLAN,即使計(jì)算機(jī)因?yàn)榻粨Q了網(wǎng)卡或是其他原因?qū)е翸AC地址改變,只要它的IP地址不變,就仍可以加入原先設(shè)定的VLAN。
因此,與基于MAC地址的VLAN相比,能夠更為簡便地改變網(wǎng)絡(luò)結(jié)構(gòu)。IP地址是OSI參照模型中第三層的信息,所以我們可以理解為基于子網(wǎng)的VLAN是一種在OSI的第三層設(shè)定訪問鏈接的方法。
基于用戶的VLAN,則是根據(jù)交換機(jī)各端口所連的計(jì)算機(jī)上當(dāng)前登錄的用戶,來決定該端口屬于哪個(gè)VLAN。這里的用戶識別信息,一般是計(jì)算機(jī)操作系統(tǒng)登錄的用戶,比如可以是Windows域中使用的用戶名。這些用戶名信息,屬于OSI第四層以上的信息。
總的來說,決定端口所屬VLAN時(shí)利用的信息在OSI中的層面越高,就越適于構(gòu)建靈活多變的網(wǎng)絡(luò)。
訪問鏈接的總結(jié)
綜上所述,設(shè)定訪問鏈接的手法有靜態(tài)VLAN和動(dòng)態(tài)VLAN兩種,其中動(dòng)態(tài)VLAN又可以繼續(xù)細(xì)分成幾個(gè)小類。
其中基于子網(wǎng)的VLAN和基于用戶的VLAN有可能是網(wǎng)絡(luò)設(shè)備廠商使用獨(dú)有的協(xié)議實(shí)現(xiàn)的,不同廠商的設(shè)備之間互聯(lián)有可能出現(xiàn)兼容性問題;因此在選擇交換機(jī)時(shí),一定要注意事先確認(rèn)。
下表總結(jié)了靜態(tài)VLAN和動(dòng)態(tài)VLAN的相關(guān)信息。