PortWay的背景

我相信做過客戶遠程支持的同學都有這麼痛苦的經歷:為了去查詢一個問題,你得讓客戶的IT開個QQ遠程控制給你,然後再通過他的QQ遠程連接到伺服器的遠程桌面,然後再在伺服器的遠程桌面上打開各種管理工具,然後就痛苦看著糊成一團的畫面,小心謹慎的敲下鍵盤上的每個字母並等著這些字母在客戶伺服器的屏幕上逐個顯示出來…………

我們也用過動態域名+路由器埠映射,但是這個風險太高,稍有常識的客戶網管直接會斃掉這種支持方案。後來也讓客戶網管在伺服器上裝TeamViewer,但是要麼運行得慢,要麼TeamViewer直接傲嬌的告訴你,「疑似商業使用」,給你來個使用5分鐘就斷線。最後用得最多的還是QQ遠程,但是效率極低。

最重要的是,當你需要開發定位BUG時,你會發現最有效率的方式還是帶上完整的開發環境去到客戶現場,接入客戶的網路,然後打開開發工具直接調試。而對於實施來講,如果你需要幫客戶調整一個配置,你可能需要遠程搞上大半天才能搞定,如果碰上客戶太忙的話,你會發現時間完全是被浪費掉的。


PortWay能做什麼

說了那麼多,PortWay到底能做什麼?

PortWay我寫的一款內網穿透工具,用GoLang開發,主要是就為了讓實施或是開發像在客戶現場一樣去完成自己的工作,PortWay支持以下兩種方式的內網穿透:

一. Http穿透

在區域網內(例如公司網路)運行一個Agent工具,就可以將你區域網內的http網站(例如oa/crm之類的)發布到公網,讓大家可以在互聯網上方便的訪問,不需要做路由器配置,更不需要做防火牆及動態域名配置。

二. TCP穿透

在區域網內(例如公司網路)運行一個Agent工具,然後帶到電腦在其他可訪問Internet的地方(比如我們裝逼常去的星巴克)運行一個Proxy,然後你就可以像在區域網裡面一樣,用各種客戶端工具隨意訪問你的資料庫/OA/ERP等等(只要是基於TCP網路埠的服務)。這個過程不需要vpn,更不需要遠程桌面。


PortWay如何使用

1. Windows版的PortWay下載

百度網盤鏈接:pan.baidu.com/s/17ZR7wQ

提取碼:z7kp

由於不想把文件弄得太大,所以只上傳了Windows版本,如果你需要Mac/Linux的版本,可以Q我: 9319795

2. 使用說明

PortWay是綠色軟體,不需要安裝,也沒有組件依賴,下載解壓後就可以運行。

2.1 Agent使用說明

agent 是在你需要訪問的區域網內部運行。對於實施或是開發人員來說,通常會把agent運行在客戶內網的機器上。agent 相當於在區域網內網安裝了一個轉發器,這個轉發器有自己的編號,我們稱之為 「tunnel」 或是 「信道標識」。我們可以看看 tunnel 的配置,我們打開agent目錄下的app.ini,這個就是agent的配置

在agent的app.ini中,有兩個配置節點

2.1.1 setting節點設置中央伺服器及tunnel

center_host=gw.isuf.cn

center_port=80

這個是我提供給大家的中央服務端,我安裝在朋友的伺服器的80端上,大家可以先免費使用,都不要告訴他:),也就是說這裡的配置大家沒有必要去修改。

tunnel=<you_tunnel_tag>

這個是用來設置 tunnel 標識,你也可以不設置,不設置的話,等於號右側留空就行,啟動時系統會自動分配標識,就像是TeamViewer的ID一樣

需要注意的是,由於我是免費提供中央服務端給大家使用,所以我沒有校驗tunnel,只認為是最後連接的有效。也就是說,如果你先打開了agent,如果別人的tunnel跟你的tunnel一樣,那麼你會被系統踢下線。

2.1.2 httpmap節點設置需要發布到公網的內網網站

[httpmap]

k3=127.0.0.1:80

我們來看看這個簡單的配置,這裡啟用了一個http發布,發布了前綴為k3的站點,指向區域網的127.0.0.1:80。

如果我們的tunnel標識為 rogertong,那麼,啟動agent後,你就可以通過 k3.rogertong.iotube.cn 來訪問你的區域網網站了,iotube.cn是固定的,這是我提供出來的域名。我們做個簡單的演示,比如我的區域網內有一台IIS伺服器 192.168.151.58,我想用rogertong做為我的信道標識,那麼我這可以樣發布:

[setting]

center_host=gw.isuf.cn

center_port=80tunnel=rogertong[httpmap]k3=192.168.151.58:80

我們可以看到映射已經生效了,已經可以順利的通過公網訪問內網的IIS服務

2.1 Proxy使用說明

我們在前面說過,如果你在區域網內啟動了Agent,那麼就可以Proxy訪問區域網絡內部的所有TCP服務,Proxy會通過中央服務端告訴Agent需要訪問哪些服務,所以Proxy的配置稍微複雜一些,我們看一個完整的proxy所對應的配置文件app.ini

[setting]

center_host=gw.isuf.cncenter_port=80tunnel=rogertong[tcpmap]radmin=truemssql=true[radmin]

server_ip=127.0.0.1

server_port=4899local_ip=0.0.0.0local_port=48990[mssql]server_ip=127.0.0.1server_port=1433local_ip=0.0.0.0local_port=1433

setting節點部份的配置跟agent一樣,這裡的tunnel用於指明當前的proxy使用哪個tunnel信道,服務端依據信道會將proxy與agent配對。

tcpmap節點,用於確認哪些埠映射配置生效,必須有對應的埠映射配置節點

上面示例中的 radmin / mssql 則是埠映射配置節點,表示需要在proxy所在的機器上,建立鏡像埠,這個鏡像埠收發的所有數據,都會經指定的信道,傳輸給agent所在局域對應的伺服器,看圖示:

例如: 我運行agent區域網內有台伺服器192.168.151.88開啟了windows遠程桌面服務(tcp3389),agent的tunnel標識為rogertong,我想連192.168.151.88的遠程桌面,那麼我的proxy可以這樣配置

[setting]

center_host=gw.isuf.cncenter_port=80tunnel=rogertong[tcpmap]

rdp=true

[rdp]server_ip=192.168.151.88server_port=3389local_ip=0.0.0.0local_port=33890

那麼,我在自己的機器上運行proxy後,我就可以在自己的機器上通過連 127.0.0.1:33890,就可以訪問到 192.168.151.88 的遠程桌面了

推薦閱讀:

相关文章