1. 程式人生 > >OPENVPN 實現外面遠端桌面控制

OPENVPN 實現外面遠端桌面控制

快要開學了,準大一的你是不是要為自己的大學生活準備一臺能戰四年甚至出來工作後還能再撐幾年的電腦呢?

"上大學後我可是要變大忙人!我肯定要一臺方便攜帶配置不需要太高的電腦就行了"

“大學不就是換個地方玩電腦嘛,而且臺式又比較便宜,同樣的價格,筆記本配置又不如桌上型電腦,同類的配置,筆記本效能頂多就桌上型電腦的百分之七八十,我要上滿血配置又買不起”(一般桌面級配置,macbookpro頂配了解一下,不貴嘛!前者普遍一兩萬,後者也就五萬多,學生還能優惠兩三千買多一個妙控鍵盤和妙控板。也就是說原價的macbookpro還送妙控外設套裝,賺翻了!買到就是賺到。)

那麼小夥伴你是屬於哪一種呢?

難道我就不能以適合的預算支出即能獲取桌上型電腦又能像筆記本一樣輕便攜帶麼?

當然可以!那就是一直你沒怎麼去了解的桌面遠端連線。

本篇文章我們將以外網來怎麼通過openvpn來實現非內網環境下的遠端連線著重來講。順便傳授一些額外知識。

首先

市面上公認認可的幾款遠端連線桌面軟體工具

AnyDesk 都說最流暢 teamviewer前員工做的 基於tcp協議做的,通過伺服器協商,最後資料連線通過伺服器中轉,連線速度由本地網路和遠端網路決定。

splashtop 商業版每年60刀:外網連線反饋速度還可以 但幀率不高 有明顯延遲感 並且需要購買付費 私人版ios軟體30RMB買斷制 但是XX助手你懂的 體驗要比商業版遭得不行

teamviewer 目前是免費,不管是內網還是外網連線體驗都不錯。對電腦和移動裝置配置有一定要求(筆者用iPhone 6P和ipadmini 1體驗下來,一句話:兩個世界)

top last:向日葵 體驗幾分鐘後就刪掉了

還有很多等等......

但這就這些軟體也有它存在的弊端

AnyDesk是國外軟體,伺服器在國外。因此外網體驗不能說太理想,基本連不上 沒有黑屏功能 即使內網體驗很棒 但完全沒意義了。

Splashtop 需要收費,而且延遲雖然不算高但是即便是兩三秒的延遲也是很難接受的

Teamviewer 確實強大,外網延遲很小,基本可以說是同步了

雖說遠端桌面連線的技術已經有很成熟的軟體公司在營運,並且都有黑屏功能和禁止被控端輸入可以一定程度保護自己的隱私。但也有一些電腦不知道為何不能使用黑屏功能,而這類軟體終究只是普通的畫面捕捉傳輸工具,並且還要容忍被軟體套死的約束,作為一個程式猿的角度來說這樣的實現方式我是拒絕的。

那麼接下來我們談談我們所用的方案

首先 電腦使用win10的遠端桌面連線功能

一般中等的配置已經可以完全滿足作為輸出端的效能要求了

系統:win10專業版、企業版(家庭版雖然沒有自帶這個功能,當然是可以通過修改策略組和建立登錄檔來補充這個功能,但這又是一個巨坑,作為經常摔坑的人來說,好好的有幹嘛非得去找坑踩呢。)

移動裝置使用window的Remote Desktop client的app 因為我們的電腦一般都是用window系統 那麼對於移動裝置來說我用微軟家的Remote Desktop clients是為了最大的相容支援,

並且當你移動裝置連線電腦的時候,電腦是會進入鎖定模式的。也就是你電腦操作桌面要麼是自己的電腦要麼是移動裝置上的連線。奔著這一點去,確實是是我的不二之選。

注意:只有給電腦登入賬號設定密碼,才可以成功遠端連線到電腦。這就是微軟自帶功能和自家軟體相比那些第三方軟體的優勢所在,至少安全性和隱私權是掌握在自己手裡而不是第三方來的承諾。

那麼最基本的軟體(Remote Desktop client)我們有了,電腦和移動裝置我們也有了。那麼我們就可以通過內網環境體驗一下我們在最順暢的網路環境下裝置硬體配置是否達到符合我們流暢操作的要求。事實證明流暢度是要比top前三還要絲滑的,並且當你移動裝置登陸的時候,電腦就會進入鎖屏狀態,這樣在操作隱私上就得到了保護。

萬事俱備只欠東風,接下來我們重中之重就是要解決外網的問題了,而這也是最難最令人頭痛的事情。因為我們知道在複雜的網路世界中層層疊疊,根據tcp/ip的網路結構你永遠不知道有多少個上層路由伺服器在駕馭著你。稍微細想就如你兩臺電腦放在一起,連著不一樣的內網。假如它們的網路節點在上面七層、八層、十層的路由伺服器中,那它們直接交換資料是不是就要A電腦往上走,走到節點路由伺服器然後又往下傳到B電腦?看似近在眼前,實則遠在天邊。

那麼要實現這個遠端連線我們就要根據上述情況在電腦上設定走一遍這條路?

相信我,瞭解一下區域網、廣域網、都會網路、因特網。你就不會這麼幹了,並且也十分不科學。

那麼有人說了不就是一個內網穿透技術嘛。是的,目前市面上有花生殼、nat123(主流軟體)提供內網穿透服務。但別忘了這些軟體也是要需要收費,就如花生殼開通服務貴就算了,頻寬還少,如果要實現teamviewe 的順暢千兆的頻寬都不為過,何況人家teamviewe還不是靠這來盈利,而你在花生殼提頻寬就要加錢,還不是一般的貴,一般人明顯消費不起。

所謂羊毛出自羊身上,不管是上述的直接提供遠端連線軟體還是內網穿透服務軟體,最終的成本費用還不是讓消費者自己付麼?雖然有便有貴,但長期來講對個人來說是一筆不划算的費用。這也是遠端桌面連線技術明明是一個這麼好的技術但也無法普及大眾更無法一絲動搖膝上型電腦市場的無奈。

既然這些軟體的實現原理,內網穿透原理都知道了,那麼我們只要有一個自己的伺服器在搭建ngrok伺服器進行埠對映實現內網穿透不就可以了嘛。且不說ngrok伺服器容不容易搭建還需要懂得一點GO語言的開發以便將來出現問題的時候進行維護。對於沒有學過程式設計的人來說十分的不友好。http://img.it610.com/image/info3/cff0cad46aa84070a4341363541905f7.png

當然講到伺服器當然離不開現成的NATAPP隧道,NATAPP可以註冊使用者購買免費的穿透域名來使用實現遠端控制。但是由於是免費的隧道頻寬必然是很小的。因此遠端操作體驗必然也是糟糕的。其實還有sunny-Ngrok這家隧道公司哦,相比NATAPP,sunny的頻寬比較良心10塊錢就能租用200兆頻寬的Ngrok伺服器。

其實講了這麼多,不管我們是用現成的軟體,還是去找提供內網穿透服務的運作商。整套原理的實現方案是不變的,無非就是你實現的過程逐層簡化,中間流經伺服器交換的次數減少而已。

那麼最後就來講一下為什麼我們會採用OPENVPN的實現方案吧。

VPN相信大家也不陌生,最常用的就是翻牆去看外面的世界。除此之外就沒有人著重其他用途了。使用VPN不僅將中間伺服器交換次數降到最低,還相比繁瑣的搭建設定配置更加的簡化。

其實treamviewer之所以能將外網延遲實現得跟內網相似其實也是大致用了VPN的原理。

只需要一臺有一臺伺服器作為VPN服務端,再將電腦和手機作為客戶端。就能直接構成一個區域網。而且伺服器我們選擇一些國外的VPS一般都擁有千兆的網路帶,不過考慮到畢竟是國外伺服器由於距離遠的問題會有延遲這種的東西(一般國內電信延遲1~30MS),所以在挑選VPS的時候儘量選擇近的地區例如香港、新加坡、日本是比較理想的,最重要的是可以順便翻牆啊!像一些美國洛杉磯的伺服器對亞洲地區有優化也是不錯的。筆者現在所用的就是洛杉磯的VPS延遲在170ms左右。

OK!伺服器既然選好了就開始進行我們的重頭戲OPENVPN伺服器的搭建吧!

由於幾天折騰下來裡裡外外試過各種vps伺服器,最終確定了遠端桌面的反饋速度因素是以延遲為主要因素,次要是電腦硬體配置和網路頻寬。

因此筆者這裡以學生為群體,可以使用騰訊、阿里的學生雲伺服器,不僅可以作為個人專屬雲盤還可以良好體驗遠端操作的便捷。

第一步:購買伺服器,公眾號先前已經有相關web伺服器搭建教程,同樣有介紹怎麼購買學生雲伺服器。目前學生優惠的伺服器有很多,像阿里、騰訊、華為這些國內伺服器延遲基本都在10ms內,大家可以自由選擇。

1.系統我就儘量選擇Centos,因為這在實現過程中筆者遇到坑最少的。

2.先提前在伺服器控制檯的安全策略(防火牆)開啟相應的埠,在這裡我們只需要使用VPN的預設的UDP協議埠1194即可。

第二步:購買伺服器成功後等待開通就可以在控制檯裡找到公網IP。服務搭建寶塔,寶塔不僅可以作為一個web環境的管理後臺,還可以作為普通的使用介面,後面在用到配置檔案上傳下載我們用得上。那麼用SSH連線工具putty來進行連線

當你成功進入就可以開始負責貼上程式碼去安裝了。

選擇y,等待。

安裝成功,登入地址輸入賬號密碼,記憶力不好的同學一定要在設定改賬號密碼。

在寶塔安全選項再一次開放埠1194。因為當你安裝寶塔後又相當於給伺服器的埠拉了一道閘,因此你需要再一次開閘。

之後開始安裝OPENVPN

複製命令列wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh

這是國外大神做的一鍵指令碼,在IT行業要懂得用輪子,雖然我們可以一步一步安裝環境依賴,服務端檔案配置。但明顯是不明智的。

這一步要將IP地址重新改為外網。因為國內伺服器還有一個大一點的區域網,

協議選擇UDP,一定要UDP!因為遠端桌面連線流暢度的祕訣就是要UDP協議。

埠預設1194,可以改,但新手的話其實也沒有必要。

NDS選擇預設第一個,如果選擇其他也不是不可以,但多多少少會有坑。筆者就試過用谷歌DNS要麼就使用客戶端連不上VPN要麼連上也打不開其他網站,所以最哈預設選擇根據伺服器自己的DNS來設定。

最後一步就是輸入命名生成客戶端配置檔案,

在這裡改不改也沒關係,因為後面我們還會再執行指令碼建立新的配置檔案來使用,任意鍵開始執行一鍵操作,接下來只要等待就可以了。

接下來我們就要在自己的手機和電腦安裝OPENVPN客戶端。由於客戶端下載需要翻牆到官網,我們已經為你準備好下載地址。

然後右鍵客戶端使用管理員許可權執行,如果不使用管理員許可權也會有連線不上VPN的坑。

再次執行指令碼就可以建立新使用者。一個使用者生成一個配置檔案,一個配置檔案只能一個客戶端使用。因此我們根據我們的裝置至少生成兩個檔案。

電腦連線大功告成獲得分配內網IP10.8.0.2。

接下來就是手機,筆者手機為ios,由於手機軟體OPENVPN在中國大陸商店下架,因此需要讀者自己準備一個國外APPLE ID,其實只要網上搜一下也有一些網站、公眾號分享。

當下載好後怎麼將配置檔案匯入手機?

我們可以通過發email的方式。比如筆者就是通過QQ郵箱附件傳送 將檔案發給自己就好,然後手機微信進入郵箱開啟郵件下載檔案。

開啟

新增

連線 獲取IP10.8.0.3。

這時候就成功搭建成一個區域網了。接下來手機測試一下吧!

放動圖

由於學生雲伺服器分配的頻寬只有一兆,即便是在延遲十秒左右的環境也難免會有將近0.1~0.25秒直接的延遲,但是作為在校遠端“工作”來說,確實不錯的哦!