365

frp是什麼

frp 是一個可用於內網穿透的高性能的反向代理應用,支持 tcp, udp 協議,為 http 和 https 應用協議提供了額外的能力,且嘗試性支持了點對點穿透。關於frp的詳細介紹詳見github。

為什麼要內網穿透

為自由。原諒我一生放蕩不羈愛自由(其實我是想早點回家 hhhh)

講真的,為了遠程訪問實驗室的計算集群,在宿舍,家裡,隨時隨地,都能使用到實驗室的高性能機器做模擬和計算。實現的方法很多,如果都是校園網的內部話,直接遠程桌面就好了,但是不在同一區域網內,ip地址之間相互ping不通的話,最簡單的是使用teamviewer和向日葵,但是這倆個要麼花錢要麼有商業嫌疑限制,用起來不方便。我們實驗室都有用過,teamviewer的用戶體驗感比向日葵要好,但是用久了就提示有商業行為,雖然我啥也沒幹,我感覺他在一直監視我在幹嘛,細思恐極。。我覺得部署自己的可靠安全的內網穿透方案是必要的。趁著放假在實驗室做實驗等測試數據的間隙,google了一波方案,說干就干。。。

部署步驟

從frp的架構可以看出frp的工作流程,在服務端部署frps,在要訪問的機器上部署frpc,實現服務端對該機器的反向代理。通過訪問服務端來實現對該機器的遠程訪問。

部署環境

  • 公網機器:阿里雲的學生機(公網IP)。系統:window server 2012 R2
  • 本地機器:高性能電磁模擬工作站集群。系統:window10 pro

在github frp的releases下載最新的代碼

修改相關的部署文件即可 好簡單的說。。。

服務端

修改服務端的部署文件 frps.ini

[common]
bind_addr = 0.0.0.0
bind_port = 7000

dashboard_user = xxxxx #監控的用戶名
dashboard_pwd = xxxxxx #監控的密碼
dashboard_port = 7500

將frps.ini 及frps.exe 上傳到公網機器上,以管理員的身份cmd到其目錄下,運行如下的命令

frps -c frps.ini

看到下圖就運行成功了

不用忘記在防火牆將相關的埠打開,不然會報錯,或者是訪問不了。。。orz

這樣服務端就部署成功了,可以訪問 dashboard查看監控信息。

ps: 服務端的這個命令行窗口不要關,關了服務就掛了。。。。

客戶端

修改客戶端的部署文件 frpc.ini

[common]
server_addr = xx.xx.xx.xx #你的公網機器的ip地址
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 6000

將frpc.ini 及frpc.exe 放到本地機器上,以管理員的身份cmd到其目錄下,運行如下的命令

frpc -c frpc.ini

ps: 伺服器端對應的埠也要打開,然後這個cmd窗口不能關,不然服務就終止了,這個是下面開機自啟動要解決的問題。為了支持遠程訪問,window下的允許遠程訪問要打開。

最後就可以愉快的用原生的遠程桌面訪問機器了。。開森(公網ip:埠)

開機自啟動

服務端我沒做的開機自啟動,是因為的我機器就沒有關過,我的任務欄一直保留由很多窗口。但是客戶端有做開機自啟動的必要了,因為實驗室的計算集群是公用的,誰進去手殘把這個cmd窗口給關了,我在家哭給他看也沒用啊,關鍵是,雖然我們的集群是24x7x365工作的,但是學校偶爾會停電啊,關機重啟是常有的事,每次都運行這些命令不符合window圖形界面的用戶操作習慣,為了一勞永逸的解決這個問題,我找到了一個開源的開機自啟動方案。

duang,duang,duang,就是WINSW。WINSW是什麼我就不BB了,自己看github的readme吧。我要用他實現window下開機自啟動。(ps:linux下開機自啟動挺簡單的,樹莓派上用過很多,用過這個你會發現也挺簡單的,強烈推薦)

使用方法

  • 下載到客戶端電腦。下載地址
  • 放到和frp相同的文件夾下面,改個短小的名字 winsw.exe. 因為我懶得在命令行裡面敲東西
  • 新建一個winsw.xml。內容如下 詳細的配置參見

<service>
<id>frp</id>
<name>frp</name>
<description>frp remote control</description>
<executable>frpc</executable>
<arguments>-c frpc.ini</arguments>
<logmode>reset</logmode>
</service

  • 然後以管理員的身份cmd到該文件夾下,執行如下命令

winsw install

winsw start

開機自啟動就大功告成了。我用自己的老電腦親測可用。

最後

我把這個推廣到了整個天線與射頻組。告訴師兄們如何有序的使用集群資源,就是不要同時連接機器,因為window10 pro不支持多用戶同時登陸,要是win server或者是linux就好了。就是使用機器前看下bashboard,當前有連接的情況下不要使用,稍等片刻。當然大家也不要霸佔資源。不要在集群上建模和寫代碼,只能模擬和跑演算法,偶爾登陸查了下結果就好了。


先感謝下馬爸爸的阿里雲,學生機真香,雖然40G的硬碟捉襟見肘,10Mpbs的網路帶寬很捉急,就一個月1000G的流量我很滿足。我開始擔心網路延遲很嚴重,部署了用不了,但是結果真的出乎我的意料的好。筆芯阿里雲。

然後是感謝github,全球最大的男性交友網站。我在這學到了很多,找到了很多的礦,站在巨人的肩膀上摘蘋果,不造重複的輪子。我也會努力貢獻我的code,做社區的一員。

最後感謝我的老闆,學識淵博的Buris。不遠萬里來到中國,60歲的人了,再可以退休享樂的年紀還在折騰,我有什麼理由在最該奮鬥的年紀選擇安逸呢。這半年學到了很多東西,給了我很多學習,工作,科研上的指導,挺崇拜他的,祝願身體健康,在中國工作愉快。

最近趁著放假,呆在實驗室裡面寫總結和反思,看過的paper和實驗的數據,我擔心我過完年回來忘記了。開始寫的第一篇知乎文章,就當我胡言亂語,不知所云好了。


推薦閱讀:
相关文章