看到很多朋友很關(guān)心端口映射(port mapping),來跟大家討論一下portmapping,講講我自己試出來的心得
先看一下圖:
在win2k server的routing and ras服務(wù)里面可以設(shè)置port mapping(端口映射)
在我這個例子里面,win2k server這臺機(jī)器是192.168.0.1,用DSL上網(wǎng);
192.168.0.2是XP PRO
192.168.0.222是一臺LINUX
除了WIN2K SERVER是直接上網(wǎng)外,其它兩臺是用共享的方式(就是把網(wǎng)關(guān)設(shè)成192.168.0.1,可以手動,也可以用DHCP服務(wù)器配置參數(shù))
現(xiàn)在,希望不在家時,可以連上xp pro的remote desktop,以及l(fā)inux上的smtp, pop3郵件服務(wù),還有ssh。簡單說,我想透過網(wǎng)關(guān)這臺機(jī)器,連接到內(nèi)部的xp pro以及l(fā)inux的指定端口。
設(shè)置就象圖里面這樣。舉幾個例子:
網(wǎng)關(guān)的4000號被映射到xp pro的3389。3389是xp的remote desktop以及2k server的terminal service用的端口。用4000的原因是不想和網(wǎng)關(guān)自己的terminal service沖突。這樣,如果直接用terminal service
client連接網(wǎng)關(guān),將進(jìn)入2k server 的TS,連接網(wǎng)關(guān)的4000將可直接從外面操縱xp pro的遠(yuǎn)程桌面。至于如何在ts客戶端指定端口,請看下一貼的圖。
25252是在XP上的某個軟件使用的端口(是我在XP上運行的一個DB SERVER)。我把網(wǎng)關(guān)的同一端口映射過去,這樣就好象這個服務(wù)是長在網(wǎng)關(guān)上一樣,對客戶端來說無法確切分辨出服務(wù)到底在哪臺,直接使用就行。
110是POP3, 25是SMTP, 22是sshd。同樣,把網(wǎng)關(guān)的同一端口映射(因為和網(wǎng)關(guān)本身的服務(wù)不沖突)到LINUX上,這樣,就好象你的網(wǎng)關(guān)直接安裝了pop3, smtp, sshd一樣。可以用ssh連接回家,操作那臺linux。相當(dāng)方便。
這樣映射有些限制和注意事項:
1、你自己必須對網(wǎng)關(guān)有操縱權(quán),比如,自己家里上網(wǎng)至少有一個真正的IP來當(dāng)網(wǎng)關(guān)。如果ISP分配給你的就是內(nèi)網(wǎng)IP,那理論上就要和ISP商量,讓他們把GATEWAY的PORT映射過來。實際上應(yīng)該是不可能的。
2、我舉的例子是用win2k server里面的ROUTING/RAS帶的NAT來做internet共享。如果你用pro的ics(internet連接共享,實際
上是ROUTING服務(wù)簡化版),沒有直接設(shè)置這些的地方,但聽說可以改注冊表讓ICS實現(xiàn)如上的映射。具體情況,請在GOOGLE或DEJA.COM上用ics port mapping registry等字樣搜索。我記得有不少。
3、內(nèi)部那些要被映射的機(jī)器(象我例子的192.168.0.2, 0.222),IP地址要固定,否則要每次改port mapping設(shè)置。默認(rèn)情況下routing/ras有一個DHCP子服務(wù)器,實現(xiàn)類似DHCP的功能,并自動配置客戶機(jī)的網(wǎng)關(guān)。這樣不太方便。方法一是直接在客戶端上手工設(shè)置,方法二是安裝真正的DHCP SERVER,用MAC地址(網(wǎng)卡硬件地址)來“預(yù)約”IP地址。比如,我192.168.0.2這臺機(jī)器網(wǎng)卡MAC是11:22:33:44:55:AA,我就在DHCPSERVER 上設(shè)置,讓這個MAC永遠(yuǎn)得到192.168.0.2這個地址。客戶端可以保留自動設(shè)置的簡單性。具體請看dhcp 的reservation。真正的DHCP服務(wù)是有很多功能的,不光是分配IP,還可以配置客戶機(jī)的TCPIP參數(shù),比如DNS,網(wǎng)關(guān)等等。
4、簡單服務(wù)可以很方便的找出所用端口并映射,但有很多服務(wù)使用動態(tài)端口,就很麻煩。比如netmeeting 是用動態(tài)的端口。如果要用內(nèi)部機(jī)器來接受netmeeting請求的話,要把網(wǎng)關(guān)的“所有”未用端口映射過去。
理論上是可能的,但WIN2K的這個ROUTING服務(wù)好象沒有映射端口范圍的方法……也許其它ROUTING服務(wù)軟件有。
另外就是FTP,現(xiàn)在很多用PASV模式,這個模式的特點,是用21端口連接后,另外隨機(jī)分配一個端口來進(jìn)行數(shù)據(jù)傳輸。因此只映射21是無法用PASV的FTP的。如果要映射FTP服務(wù),需要要求客戶端使用PORT而不是PASV 模式。
這張圖是用terminal service/remote desktop連接非默認(rèn)端口的方法。很簡單,在IP后加上冒號端口就行。文檔沒看到有,試試就知道了。
另外2k terminal service client和xp remote desktop基本上是一回事,因此客戶端也通用。現(xiàn)在不要再安裝2K生成出來的那個客戶端了,太老。最方便的方法,是把XP的system32下
mstsc.exe
mstscax.dll
兩個文件復(fù)制到任何機(jī)器上(95,98,NT,2K,XP),運行mstsc就可以連接了。這個程序不需要安裝。
XP帶的客戶端有些好處,比如,如果服務(wù)器也是XP的話,可以達(dá)到16位/24位顏色,而2K帶的那個最老的客戶端只有256色。不過2K的TS服務(wù)只支持到256色,所以不管用哪個客戶端都是完全一樣的。
我用raspppoe 0.96。用Routing/RAS做共享一切正常。
用Routing/RAS來做有個地方要注意,設(shè)置時有一步是一個對話框有五六個選項,有一個是“允許使用明文/未加密的密碼”,一定要勾上。否則無法連接。大部分的DSL服務(wù)器是使用明文密碼的。我當(dāng)時也試了很久才發(fā)現(xiàn)這個選項
如果設(shè)置時沒選 上,現(xiàn)在改也來得及。看圖: