隨著實驗室規(guī)模不斷擴大,對外IP漸漸不夠用。于是在原有網(wǎng)絡(luò)的基礎(chǔ)上,重新劃出一塊區(qū)域作為實驗室“內(nèi)網(wǎng)”,這面臨著兩個需求:內(nèi)網(wǎng)機器必須訪問互聯(lián)網(wǎng);實驗室其他外網(wǎng)IP的機器能夠訪問內(nèi)網(wǎng)機器。以下是規(guī)劃中的網(wǎng)絡(luò)拓撲圖:
概念
路由
路由(routing)就是通過互聯(lián)的網(wǎng)絡(luò)把信息從源地址傳輸?shù)侥康牡刂返幕顒印_@里需要明確兩點:
路由不等于路由器,很多人一提起路由,就想到路由器,實際上這是不對的。路由器僅僅作為路由的一個硬件實現(xiàn),同樣,我們還可以借助一些軟件實現(xiàn)“軟路由”。
既然路由是通過互聯(lián)的網(wǎng)絡(luò)把信息從源地址傳輸?shù)侥康牡刂返幕顒樱敲创嬖谥鴱脑吹刂返侥繕?biāo)地址的“路徑”,至于這個“路徑”是如何找到的,可以通過一系列算法得到動態(tài)路由,或者直接手動設(shè)置靜態(tài)路由。
我們平常設(shè)定的“網(wǎng)關(guān)”,實際上就相當(dāng)于手動設(shè)置的靜態(tài)路由。
路由器
路由器(router)是路由的實現(xiàn)者,它工作在OSI第三層(網(wǎng)絡(luò)層)上、具有連接不同類型網(wǎng)絡(luò)的能力并能夠選擇數(shù)據(jù)傳送路徑的網(wǎng)絡(luò)設(shè)備。路由器有三個特征:工作在網(wǎng)絡(luò)層上、能夠連接不同類型的網(wǎng)絡(luò)、能夠選擇數(shù)據(jù)傳遞路徑。它能理解數(shù)據(jù)中的IP地址,如果它接收到一個數(shù)據(jù)包,就檢查其中的IP地址,如果目標(biāo)地址是本地網(wǎng)絡(luò)的就不理會,如果是其他網(wǎng)絡(luò)的,就將數(shù)據(jù)包轉(zhuǎn)發(fā)出本地網(wǎng)絡(luò)。
TTL
TTL(Time To Live)是IP協(xié)議包中的一個值,它告訴網(wǎng)絡(luò)路由器包在網(wǎng)絡(luò)中的時間是否太長而應(yīng)被丟棄。有很多原因使包在一定時間內(nèi)不能被傳遞到目的地。例如,不正確的路由表可能導(dǎo)致包的無限循環(huán)。一個解決方法就是在一段時間后丟棄這個包,然后給發(fā)送者一個報文,由發(fā)送者決定是否要重發(fā)。TTL的初值通常是系統(tǒng)缺省值,是包頭中的8位的域。TTL的最初設(shè)想是確定一個時間范圍,超過此時間就把包丟棄。由于每個路由器都至少要把TTL域減一,TTL通常表示包在被丟棄前最多能經(jīng)過的路由器個數(shù)。當(dāng)記數(shù)到0時,路由器決定丟棄該包,并發(fā)送一個ICMP報文給最初的發(fā)送者。
NAT
NAT,網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation),是通過將專用網(wǎng)絡(luò)地址(如企業(yè)內(nèi)部網(wǎng)Intranet)轉(zhuǎn)換為公用地址(如互聯(lián)網(wǎng)Internet),從而對外隱藏了內(nèi)部管理的 IP 地址。這樣,通過在內(nèi)部使用非注冊的 IP 地址,并將它們轉(zhuǎn)換為一小部分外部注冊的 IP 地址,從而減少了IP 地址注冊的費用以及節(jié)省了目前越來越缺乏的地址空間(即IPV4)。同時,這也隱藏了內(nèi)部網(wǎng)絡(luò)結(jié)構(gòu),從而降低了內(nèi)部網(wǎng)絡(luò)受到攻擊的風(fēng)險。
在一個典型的配置中,一個本地網(wǎng)絡(luò)使用一個專有網(wǎng)絡(luò)的指定子網(wǎng)(比如192.168.x.x或10.x.x.x)和連在這個網(wǎng)絡(luò)上的一個路由器。這個路由器占有這個網(wǎng)絡(luò)地址空間的一個專有地址(比如 192.168.0.1),同時它還通過一個或多個因特網(wǎng)服務(wù)提供商提供的公有的IP地址(叫做“過載” NAT)連接到因特網(wǎng)上。當(dāng)信息由本地網(wǎng)絡(luò)向因特網(wǎng)傳遞時,源地址被立即從專有地址轉(zhuǎn)換為公用地址。由路由器跟蹤每個連接上的基本數(shù)據(jù),主要是目的地址和端口。 當(dāng)有回復(fù)返回路由器時,它通過輸出階段記錄的連接跟蹤數(shù)據(jù)來決定該轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)的哪個主機;如果有多個公用地址可用,當(dāng)數(shù)據(jù)包返回時,TCP或UDP客戶機的端口號可以用來分解數(shù)據(jù)包。對于因特網(wǎng)上的一個系統(tǒng),路由器本身充當(dāng)通信的源和目的地址。
我們通常使用的路由器一般都自動集成了NAT。
LAN路由
Windows Server 系列,可以在路由和遠程訪問中設(shè)置LAN 路由,這僅僅是路由的一個實現(xiàn),不存在NAT功能。
最初規(guī)劃
最初,我采用最簡單的路由器組網(wǎng)方式,來組建實驗室網(wǎng)絡(luò):在網(wǎng)絡(luò)中接入路由器,設(shè)置路由器WAN端IP地址為222.200.176.144,對內(nèi)網(wǎng)段為10.96.32.*。這時,內(nèi)網(wǎng)地址能輕松訪問外網(wǎng)機器,但是,外網(wǎng)機器卻不能訪問內(nèi)網(wǎng)機器:
執(zhí)行tracert命令,結(jié)果如下:
這說明,tracert試圖通過默認路由(222.200.176.254)來查找路徑,這顯然到達不了目標(biāo)。
既然我們的內(nèi)網(wǎng)是通過222.200.176.144這個IP連接互聯(lián)網(wǎng)的,因此我需要在我的機器里手動添加一條靜態(tài)路由,告訴網(wǎng)絡(luò),如果訪問10.96.32.*段的東西,直接從222.200.176.144這個地址尋找就好了,不要麻煩222.200.176.254。
route add -p 10.96.32.0 mask 255.255.255.0 222.200.176.144
在執(zhí)行tracert,結(jié)果……
#@¥#@!¥@
這是為什么呢?
請教某網(wǎng)絡(luò)牛人,得到答案如下:
路由器上是做了NAT的,當(dāng)信息由本地網(wǎng)絡(luò)向因特網(wǎng)傳遞時,源地址被立即從專有地址轉(zhuǎn)換為公用地址。由路由器跟蹤每個連接上的基本數(shù)據(jù),主要是目的地址和端口。當(dāng)有回復(fù)返回路由器時,它通過輸出階段記錄的連接跟蹤數(shù)據(jù)來決定該轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)的哪個主機。這就意味著,NAT和路由沖突!或者說,路由器下的網(wǎng)絡(luò),只允許內(nèi)網(wǎng)主動連接外網(wǎng),不允許外網(wǎng)直接訪問內(nèi)網(wǎng)。
解決辦法一
既然知道原因,就尋求解決方案,牛人給出的方案有兩個:
- 取消路由器的NAT功能,改用CCProxy之類的代理提供內(nèi)網(wǎng)機器連接互聯(lián)網(wǎng)。
- 在路由器上開設(shè)端口映射。
不過,以上兩個方案都是無法接受的:CCProxy共享版只支持有限的客戶端,而且,對于某些不支持代理服務(wù)器的軟件,使用該方案無疑斷送了這些軟件上網(wǎng)的可能!至于第二種方案,很多服務(wù)所使用的端口是不確定的(例如FTP的被動模式),根本無法一一設(shè)定這些端口。
添加雙網(wǎng)卡服務(wù)器
既然上述的兩個解決方案都出局了,還有其他的途徑嗎?這個問題如鯁在喉,不吐不行。為此我在網(wǎng)上查了些資料,終于想到了一個可行的解決方案:既然外網(wǎng)機器無法通過路由器(222.200.176.144)訪問內(nèi)網(wǎng),那么是不是可以開辟另一條路呢?于是我在內(nèi)外網(wǎng)間增加一臺Server 2008服務(wù)器,該服務(wù)器有兩塊網(wǎng)卡,一塊接入外網(wǎng)(222.200.176.148),另一塊則接入內(nèi)網(wǎng)(10.96.32.148)。同時,在路由和遠程連接中添加“LAN路由”:
在本機的靜態(tài)路由修改為:
route add -p 10.96.32.0 mask 255.255.255.0 222.200.176.148
再執(zhí)行tracert,結(jié)果:
再度 #@¥#@!¥@
這是為什么呢?
牛人聯(lián)系不上,只好自己解決。從上圖tracert的記錄,數(shù)據(jù)包到了222.200.176.148,就不知道該如何發(fā)送到目標(biāo)了。按理說,在222.200.176.148的機器上,開啟了LAN路由服務(wù),應(yīng)該沒什么問題啊?百思不得其解。
不是辦法的辦法
最后,只能采用以下方案,暫時解決了問題:
在內(nèi)網(wǎng)的機器上添加一條靜態(tài)路由,指明:通過IP10.96.32.148訪問222.200.176.*網(wǎng)段:
route add -p 222.200.176.0 mask 255.255.255.0 10.96.32.148
嘗試一下在本機tracert 10.96.32.144,奇跡般的可以了!
最后的網(wǎng)絡(luò)拓撲圖如下:

小節(jié)
我在內(nèi)網(wǎng)和實驗室外網(wǎng)間,設(shè)置了兩個節(jié)點——路由器和部署了LAN路由的雙網(wǎng)卡服務(wù)器——如果內(nèi)網(wǎng)的機器想訪問Internat(非實驗室外網(wǎng)),則以路由器為網(wǎng)關(guān),進行網(wǎng)絡(luò)地址轉(zhuǎn)換。如果內(nèi)網(wǎng)機器想和實驗室外網(wǎng)互聯(lián),則通過雙網(wǎng)卡服務(wù)器進行地址交換。在一定程度上解決了NAT和LAN路由不能共存的問題。