vIDC2.0 端口映射工具,最近在公司閑來無事,想自己整個tfs來管理自己的研究代碼. 本來是想用微軟Visual Studio提供的免費tfs,但是無奈速度太慢.他們的服務器在美國,中國也沒有代理.簽入簽出一個東西要老命了 .那怎么辦呢. 后來想想自己家里有台牛B的機器,我為什么不自己搭一個呢.
但是沒有外網IP.然后就有了后面研究端口轉發的東西.得益於幾年前的對黑客知識狂熱痴迷.想當年買各種黑客X檔案,一起黑別人服務器的日子很有意思 :-) 不過那些都是往事了.現在不干那些了.
有兩個方案:
- LCX 這個工具以前一般用來解決遠程3389端口開了但是被防火牆給擋了的情況,也可以用來做端口轉發.但是這個東西不太穩定,老是掛.不靠譜
- vIDC 這個工具我以前是用來給內雞上線的,現在出2.0了,更加穩定,相關的靠譜.我測試三天左右一次都沒有掛過.而且轉300多MB的代碼也沒有出現用微軟tfs的那種蛋疼事情. 推薦
怎么想到這兩個小東西的呢,以前在抓肉雞的時候,肉雞是抓着了,但怎么讓他們上線呢.由於大部分時候我們的機器上並沒有外網ip或者沒有路由控制權限,我們處於內網的環境下.比如在網吧的時候. 於是我就需要一個有外網IP的機器來充當我的服務器,"借用"一個端口給我.讓我的小肉雞們上線.這個就叫作端口映射.關系圖大概是這樣:
[肉雞]------------>[外網服務器]<-------------[我的機器]
8010 8010/8000 8000
[肉雞]------------>[外網服務器]------------->[我的機器]
8010端口熟悉吧,上興的默認端口.當年的牛B遠程控制軟件.還有PCShare我還是比較喜歡這個. :-)
這個圖的意思就是肉雞訪問外網服務器的8010端口,然后服務器將8010端口的通訊轉發到我本地的8000端口,這樣我只用監聽本地8000端口就好了.
上面說的是遠控內網上線的版本.這個和我搭建tfs服務器也是一個道理.這樣我平時使用tfs服務的這個角色就相關於上面的[肉雞].我的tfs服務器就相當於上面的[我的機器].
下面這個是在網上找的一個vDIC的介紹文章,他寫得比較粗放,我給修了修. 附上Word版
程序介紹
vIDC2.0是一個端口映射工具,本程序包含vIDC服務和客戶端兩部分功能,既可以作為vIDC服務又可作為vIDC客戶端工具。較vIDC2.0以前的版本而言新版的vIDC20增加支持UDP服務的映射,采用線程緩沖/復用以及通訊管道緩沖和復用占用cpu資源少,轉發速度更快穩定性更好。主要包含如下功能:
1、 代理服務功能,支持http/socks4/socks5代理,支持代理驗證,支持udp代理,支持二級代理
2、 本地端口映射,類似porttunnel功能,即將本地網絡的任何應用服務端口映射到本程序運行的機器上,應用服務客戶端可通過映射端口訪問應用服務,主要用在將內網服務端口,映射到網關上以便其他用戶可以訪問,當然前提是vIDC20必須運行在網關機器上。
3、 端口映射vIDC功能,假如你無法在網關上運行vIDC20那么你如何讓其他人訪問你的內網服務呢?你可以通過vIDC20將本地的任何應用服務映射到任意一個vIDCs服務器上(即另外一個vIDC20所運行的機器),這樣假如用戶無法訪問你網絡里的某個應用服務,但他可以訪問另外一個你能控制的機器,那么你就可以在他可以訪問的機器上運行vIDC20,啟動vIDCs服務。然后在你的應用服務所在的網絡中再運行一個vIDC20,通過此工具將你的應用服務映射到vIDCs上,這樣用戶就可以訪問內網應用服務了。
4、 SSL加密解密功能,用戶映射端口時可以指定+ssl或-ssl,將普通應用服務轉化為SSL加密的應用服務,或將SSL加密的應用服務轉化為無需SSL加密驗證的服務。
程序運行
運行方式
vIDC20是一個控制台應用程序,它可以作為系統服務運行。支持的命令行參數如下:
//-i [serverName] [服務描述] --- 安裝vIDC20作為一個系統服務,用戶可以指定服務名稱和描述。
//-u ---卸載服務。
//-s --- 啟動服務
//-e --- 停止服務
//-d --- 控制台方式,-d0 ~ -d4指定不同的debug調試信息級別,關閉控制台窗口將結束程序運行。如果僅僅指定-d則以無控制台方式運行,關閉窗口程序不會結束.
//-f filename 讀取指定的配置文件,僅指定了-d運行參數時才有效
//-p svrport 指定服務的運行端口,如果端口等於0則不啟動服務端口。僅指定了-d運行參數時才有效
配置介紹
vIDC20默認的服務端口是8080。
vIDC20支持參數配置文件,用戶可以以-f參數指定配置文件名稱,如果不指定程序默認讀取和程序同名但擴展名為ini的參數配置文件.比如程序名為vIDC20.exe,則默認讀取的配置文件為vIDC20.ini
遠程管理
vIDC支持用戶遠程配置管理,用戶可以通過telnet連接vIDC的服務端口,連接上服務后用戶必須先輸入一個'v',如果無需認證則直接出現歡迎提示,否則將用求用戶輸入用戶名和密碼,驗證成功后出現歡迎提示信息vIDC20>.這時用戶可以輸入配置管理命令,配置文件也是由vIDC20支持的配置命令組成,每一行是一跳配置命令,vIDC20支持的配置命令如下:
注意:下面的命令解釋中 <>代表用戶輸入內容,[]代表可選項 | 代表可輸入其中一項每一條命令的各個參數項之間以1個空格分割!!!!
命令介紹
此介紹中分為三部分來講,這些命令的運行環境是指的在Telnet連接到遠程vIDC端后來執行的.
本地映射
mtcpl –本地TCP端口映射
映射TCP應用服務到本程序運行所在機器
用法: mtcpl <應用服務地址:應用服務端口> <映射端口[+ssl|-ssl]> [<應用服務說明>]
<映射端口>如果指定為<=0,則端口隨機分配.
例如: mtcpl 192.168.0.12:80 0 映射web服務
映射端口后可跟+ssl或-ssl關鍵字,如果指定+ssl,意味着將某個非SSL加密的應用服務轉換為SSL加密的服務。
例如你有一個普通的web服務,假如你映射此服務時指定了+ssl那么用戶通過映射端口訪問應用服務時必須通過https://映射ip:映射端口。不能用普通的http://訪問。
如果映射時指定了-ssl,則將某個SSL的應用服務映射后轉化為普通的應用服務。
你如你有一個需要SSL訪問的應用服務,但某個用戶的客戶端不支持SSL,則你可以通過-ssl將此服務映射出來,用戶就用普通的方式訪問應用服務而無需SSL。
你可以指定多個相同服務的<應用服務地址:應用服務端口>,各個地址端口之間以,號分割。例如mtcpl 192.168.0.12:80,192.168.0.13:80,192.168.0.14:80 0 映射test服務
vIDC2.0支持傳輸控制層上的集群服務的負載均衡,如果指定多個應用服務地址:端口,則用戶訪問映射端口時,vIDC20會自動在你指定的多個服務地址端口間均衡分配用戶
達到達到集群服務的負載均衡的目的。當然此負載均衡是建立在傳輸控制層(TCP/UDP)上的,沒有對服務的應用層做任何解析,因此,如果用戶映射的服務是具有會話性質的服務
用此功能將導致會話可能失效,例如使用了session的web應用服務。
同樣mudpl ,mtcpr,mudpr命令都支持指定多個<應用服務地址:應用服務端口>,用法同此命令
utcpl –取消本地TCP服務映射
即取消由mtcpl映射的應用服務。參數為應用服務映射成功后的映射端口
用法: utcpl <映射端口>
mudpl–本地UDP服務映射
映射UDP應用服務到本地
用法: mudpl <應用服務地址:應用服務端口> <映射端口> [<應用服務說明>]
<映射端口>如果指定為<=0,則端口隨機分配.
uudpl –取消本地UDP服務映射
即取消由mudpl映射的應用服務。參數為應用服務映射成功后的映射端口
用法: uudpl <映射端口>
遠程映射
mtcpr - 映射TCP應用服務到指定的vIDCs
用法: mtcpr <應用服務地址:應用服務端口> <映射端口[+ssl|-ssl]>
[<應用服務說明>]<映射端口>如果指定為<=0,則端口隨機分配.
如果vIDCs沒有訪問密碼,則處填null
例如: mtcpr 192.168.0.12:80 0 211.100.1.10 8080 null test測試
utcpr - 取消TCP映射
用法: utcpr <映射端口>
mudpr - 映射UDP應用服務到指定的vIDCs
用法: mudpr <應用服務地址:應用服務端口> <映射端口>
[<應用服務說明>]<映射端口>如果指定為<=0,則端口隨機分配.
如果vIDCs沒有訪問密碼,則處填null
uudpr - 取消UDP映射
用法: uudpr <映射端口>
服務配置
vidcs - 本vIDCs服務的參數設置
用法: vidcs <[pwd=<密碼>] [enable=]>
參數:
pwd=<密碼> - 設置vIDCc連接vIDCs的密碼,設置為null,則不要密碼驗證.
例如:vidcs pwd=null
enable= - 是否允許vIDCs服務.設為假,則本程序將不關閉 vIDCs服務功能。
例如: vidcs pwd=null enable=true
dconn - 強制斷開某個vIDCc客戶端和本vIDCs服務的連接
用法: dconn vidccID
參數:
vIDCc客戶端在本vIDCs上的ID標識,可通過status vidcs查看.
例如:你可通過status vidcs查看本vIDCs服務的狀態以及各個vIDCc的映射信息,顯示類似下面,其中()中內容就是vidccID。
- [vidcs] - port=8080,auth=false enabled=true
- [vidcs] - total 1 vidcc connected -
- --vidcc(80B595)-- - 2005-03-23 12:01:30 xxxx vidc測試客戶 -
- -- tcp -- - 1432 192.168.0.12:80 test測試
- [vidcs] - ------------------------------ -
proxy - 代理服務的參數設置
用法: proxy <[pwd=<帳號>] [enable=] [type=<支持的代理類型>] [cas=<二級代理信息> >
參數:
pwd=<用戶名:密碼> - 設置代理服務的用戶名/密碼,設置為null,則不要密碼驗證.
enable= - 是否允許代理服務.
type=<代理類型>
- 設置代理服務支持的類型 PROXY_HTTP|PROXY_SOCKS4|PROXY_SOCKS5.
cas=<二級代理>
- 設置二級代理,二級代理信息格式如下:
- cas=null 或者 cas=,,,[,]
!!!除非用戶顯示的通過proxy命令設置了代理信息,否則默認代理服務是啟動的,並且支持所有的代理協議且無需密碼控制,無二級代理
status - 顯示本程序的狀態信息
用法: status
vidcs - 顯示vIDCs服務的信息以及連接到vIDCs上的所有vIDCc的信息.
vidcc - 顯示本程序作為vIDCc客戶端連接的vIDCs的信息和映射信息.
proxy - 顯示本代理服務的信息.
mport - 顯示本地端口映射信息.
all - 顯示所有信息.
sets - 設置本程序的運行參數
用法: sets
log=[filename] - 設置記錄程序日志的文件名=null,則不記錄日志.
loglevel=[LEVEL] - 設置輸出日志的級別[DEBUG WARN INFO ERROR].DEBUG為最低級別,將記錄所有的日志輸出,ERROR為最高級別,僅僅記錄錯誤狀態的日志。
port=[端口] - 設置服務的運行端口,運行時設置無效如果設置為0則不啟動偵聽端口,則vIDCs以及代理服務不可用,並且無法啟用telnet進行遠程配置管理.
pwd=[用戶名:密碼]- 設置telnet遠程配置管理的帳號.設置為空null則不需要密碼驗證.
例如: sets log=log.txt loglevel=WARN pwd=aa:bb
配置文件
程序運行的配置文件可由上述命令組成,每個命令一行。如果行開頭為!,說明此行為注釋,不作解釋。
假如用戶想在程序啟動后自動映射服務端口到本地以及vIDCs上,則可以寫一個如下內容的配置文件:
!vIDC20程序配置文件
mtcpl 192.168.0.12:80 0 test測試
mtcpr 192.168.0.12:80 0 211.100.1.10 8080 null test測試