連回家裡可以做什麼?
看下面五個場景。
1 連線路由管理介面,進行遠端管理,通常如喚醒家庭區域網中的電腦,或者啟動BT/PT進行遠端下載。
2 向路由器中傳輸檔案(將某些檔案儲存到家裡,或者從家裡獲取一些檔案)
3 訪問部署在家庭區域網中的服務,如NAS,或者搭建好的Web應用程式(比如給別人建站,用於Demo站點搭建在家裡)
4 使用遠端桌面連線家裡電腦(給客戶展示你設計好的PS圖樣,存取文件,下載,執行程式編譯軟路由韌體,打遊戲...)
5 利用家中的網際網路連線(典型如你在公司,有上網有限制,但從家裡上網沒有限制)
這幾個啊,不是都有現成方案了嗎?為什麼還要說?
1 連回家裡路由器圖形介面?ISP封閉了80、443,改下路由圖形介面埠,比如7001,公網上直接IP:埠訪問就好了。
方法可以。不過路由器這圖形介面安全性是在差了點,開到公網上被破解分分鐘的事。不安全。
2 向路由器中傳輸檔案?
- 路由上空間那麼小,有必要嗎?
別激動,路由那點空間確實不是給你臨時儲存檔案的,但是,路由上可以掛載其他硬碟,可以掛載NAS,你可以直接傳到硬碟或者NAS裡。
- 好吧,如果空間沒問題,那麼為了傳檔案,在路由上開個網盤,比如可道雲,防火牆開個埠,公網上直接IP:埠訪問就好了。
方法可以。搭建個網盤,不麻煩嗎?另外這類內網級別的東西開到公網上,安全嗎?不安全也不優雅。
3 訪問部署在家庭區域網中的服務。老辦法,防火牆開一堆埠對映,公網上直接IP:埠訪問就好了。
方法可以。設定一堆對映,麻煩,不優雅。內網東西開到公網,不安全。
4 使用遠端桌面連線家裡電腦。老辦法,直接把Windows遠端桌面埠轉發到公網。
方法可以。家庭電腦上公網,我不怎麼放心。不安全。
5 利用家中的網際網路連線?開HomeLede的IPSec,可以做到。
方法可以。你可能要設定一個IPSec了。不優雅。
你把上面方法都懟了,你拿個既優雅又安全的出來!
沒錯,我還真有一個方案。利用SSH,即可設定一次搞定上面五個場景。安全性沒有一點問題,還不需要設定一堆東西,既優雅又安全。
不錯啊,怎麼做?
三個要求:
1 首先,你要有個公網IP,讓你在網際網路上可以連回路由器。(沒有怎麼辦?別急,計劃下一篇給出一個方案)
2 有DDNS動態域名。這一步可選,有了動態域名你就可以避免記憶家裡路由公網IP,當然,有Server醬等方案或者記憶力超群也沒問題,不過記得大多數ISP的公網IP會變,記得要連線最新的。
3 有個電腦。臺式,筆記本都可以。有的朋友問了,手機,Pad不行嗎?理論說,不是不行,不過移動裝置螢幕太小,上面五件事可以算是要求相對較高的遠端操作了,你想想用手機操作方便嗎?所以我推薦用電腦。
怎麼做?
HomeLede已經內建了SSH伺服器,我們需要做的是準備一個SSH客戶端。Windows推薦使用Bitvise SSH Client。下載地址:https://www.bitvise.com/ssh-client-download
完全免費,功能強大。
如何連線到HomeLede(家庭路由器)?
SSH預設可以使用路由器的命令列使用者連線,路由預設的root/password就可以。但這樣太不安全了,我們採用祕鑰對方式來連線。
開啟Bitvise SSH Client,先儲存一下連線設定。選擇一個合適的位置儲存連線資訊。
我們來生成祕鑰對。
首頁上點選“Client key manager”,彈出視窗中,點選“Generate New”生成一個新的祕鑰對。祕鑰對彈窗中,“Algorithm”祕鑰演算法下拉框中,選擇“Ed25519”。(Ed25519是目前最安全、速度最快的祕鑰對生成演算法,傳統的一般用RSA),其他參考下圖設定。
最後點選“Generate”生成。
接下來,我們把祕鑰對中的公鑰,儲存至路由器。
在“Client Key Management”視窗中,點選選中剛才生成的祕鑰對,點選下方“Export”按鈕,彈出視窗中,選擇格式“OpenSSH format”,點選下方“Export”按鈕。選擇一個公鑰儲存位置並命名。本例中使用“HomeLedePubKey”副檔名預設為pub。
開啟“HomeLedePubKey.pub”,其中以“ssh-ed25519 ”字樣開頭的這一行,就是祕鑰對的公鑰。全選本行後,按Ctrl+C複製。
開啟HomeLede管理介面,找到“系統”,“管理權”,拉到最下面,在“SSH祕鑰”處,按Ctrl+V將上一步複製的公鑰貼上進來。點選“儲存並應用”。
至此,路由器已經接受我們剛才生成的祕鑰了。
接下來,設定路由器的SSH服務端。預設路由器SSH服務端會接收來自本地(LAN,也就是家庭網路內部),22埠的請求,且允許使用使用者名稱密碼認證。如下。
我們新增(點選“SSH祕鑰”上面左側“新增”按鈕)一條WAN的設定,接收來自網際網路的,某個埠(注意避開ISP遮蔽的80、443),比如7001,最後別忘記點選最下面的“儲存並應用”。
注意,我們去掉了“密碼驗證”及“允許 root 使用者憑密碼登入”,這樣從網際網路的連線,只能使用祕鑰方式連線。通過窮舉密碼的破解方式就無效了。如下圖。
至此,通過SSH客戶端,我們已經可以從網際網路安全的連回家庭網路了。
可以測試一下,在Bitvise SSH Client中輸入外網IP或者動態DNS域名,埠按照剛才設定填寫,使用root使用者,認證方式選擇publickey。
點選“Login”後,下方日誌中出現“Authentication completed.”字樣,就是連線成功了。
如果是第一次連線,會彈出視窗,詢問是否接受伺服器的Host Key,點選“Accept”就好。
接下來,點選“Save Profile”將測試完畢的連線資訊儲存起來。
這個tlp檔案就是連線回家庭區域網的鑰匙,務必儲存好(存到郵箱,或者網盤都可以),如果在公共計算機上使用,使用後記得刪除。
好了,接下來我們開始解鎖上面的五種場景。
先來 解鎖1 訪問路由器圖形介面、 3 訪問部署在家庭區域網中的服務 和 5 利用家中的網際網路連線。
SSH支援動態Socks轉發,利用這個功能,可以在執行SSH客戶端(Bitvise SSH Client,也就是你手裡的這個電腦)的主機上開一個本地Socks5代理,所有流量通過SSH轉發到服務端(HomeLede軟路由上)。一次完成場景1、3、5。
確認連線到SSH服務端後(HomeLede軟路由),在Bitvise SSH Client中,點選“Services”,在“SOCKS/HTTP Proxy Forwarding”處,勾選“Enabled”啟動,最後點選下面“Apply”應用設定。
按照預設設定,會在本地127.0.0.1的1080埠開啟一個SOCK5代理。如果你本地埠已經被佔用,請自行調整上面埠後,再啟用。
隨後,我們讓瀏覽器通過這個SOCKS5代理來訪問網路。
以Chrome為例。雖然Chrome可以使用Windows系統預設設定的代理,但操作起來非常不靈活,不推薦這樣用。建議為Chrome安裝一個外掛,https://proxy-switchyomega.com/。
SwitchyOmega安裝後,會自動在“情景模式”中建立一個叫做proxy的情景,我們把其中的“代理伺服器”的“代理協議”設定為“SOCKS5”,代理伺服器設定為“127.0.0.1”,埠“1080”(指向SSH客戶端開啟的本地Socks5代理)。最後,點選“應用選項”。
現在就可以開啟新瀏覽視窗,瀏覽網頁了。在位址列右側,可以通過點選“SwitchyOmega”圖示,設定Chrome聯網模式,比如我們希望連回家裡的HomeLede,選擇剛才配置的“Proxy”模式。
現在試試訪問以下家裡的路由器介面,比如192.168.1.1。是不是和在家裡訪問一樣了?
你可以試試訪問NAS管理介面,比如群暉的,192.168.1.220:5000,或者任何家中的Web服務。是不是都可以訪問了?
輸入百度,騰訊等等任何網站,現在所有流量都相當於在家中HomeLede軟路由發出,訪問受限的網站都可以訪問了?
所有家庭內網服務都不需要暴露在公網上(無需埠轉發),無需擔心安全問題,使用完畢後,關閉SSH客戶端(Bitvise SSH Client)一切連線就中斷了。
我們再來看看2 向路由器中傳輸檔案。
我們不會利用路由器自有空間儲存檔案,路由就是個中轉,通常在路由上掛載額外的硬碟,或者NAS。如下圖,路由上掛在了額外的硬碟及NAS。
提示:路由掛載NAS可以使用HomeLede的“網路儲存”->“掛載SMB網路共享”。
SSH客戶端支援檔案傳輸,點選左側的“New SFTP window”,彈出一個檔案傳輸的視窗,左側“Local files”是你當前電腦,右側“Remote files”是HomeLede路由器。在右側選擇你想儲存檔案的路徑,比如你NAS掛載位置,左側選擇路徑,檔案,右鍵檔案“Upload”即可上傳。在右側選擇檔案,右鍵“Download”即可下載。
最後一個場景,4 使用遠端桌面連線家裡電腦
(給客戶展示你設計好的PS圖樣,存取文件,下載,執行程式編譯軟路由韌體,打遊戲...)
通常用遠端桌面連線搞定。一般家裡電腦不會總開著,所以用之前,需要先開機。現在幾乎100%有線網路卡都支援遠端喚醒,一根網線連線HomeLede軟路由與電腦,電腦BIOS中設定允許喚醒,作業系統中也在網路卡處啟用喚醒,另外作業系統要允許遠端桌面連線,為了連線方便,建議在路由上給你電腦配置靜態IP。(還可以考慮智慧開關,將電腦設為來電自動開機,通過手機遙控開關,使電腦上電後自動啟動。)
SSH連線HomeLede,進入路由介面,“管控”->“網路喚醒”,右側選擇你要喚醒裝置的MAC地址,點選“喚醒主機”之後,大概10幾秒,電腦就會進入作業系統了。
這時就可以遠端連線了,如何來做呢?
SSH客戶端支援雙向埠轉發,我們需要的是從手邊的電腦連線到家裡的電腦,所以使用Bitvise SSH Client的C2S(Client To Server)功能,我們做的是將本機的一個埠,轉發到家庭區域網裡電腦的遠端桌面連線埠上。切換到C2S標籤,點選下方“Add”新增一個轉發。“Listene Interface”和“List. Port”是你本機監聽埠,我們通常用127.0.0.1,埠隨意一個空閒的,比如13389。
“Destination Host”和“Dest. Port”是家庭網路中對應的位置。比如家裡電腦是192.168.1.3,Windows預設遠端連線埠是3389。這裡就填入192.168.1.3和3389。
這樣,一條規則就建好了,這條規則的意思是,將本機(SSH客戶端)127.0.0.1的13389埠流量轉發到HomeLede(SSH服務端),由HomeLede轉發到家庭區域網的192.168.1.3的3389埠。
建好規則後,規則配置欄右下角會出現“Apply”字樣的超連結,點選即可生效。
接下來,我們啟動手頭電腦的遠端桌面連線,連線127.0.0.1:13389,怎麼樣,是不是出現了家裡電腦的遠端登入介面?輸入使用者名稱密碼登入吧。隨後,你是想展示設計圖,編譯韌體,甚至打遊戲,就隨你了。
以上對於Bitvise SSH Client的各種設定,如“Services”,“C2S”標籤的設定,都可以點選左側“Save Profile”儲存下來,下次SSH一建立,所有設定會自動生效。當然SSH客戶端還可以遠端在HomeLede上執行命令,也就是左側“New terminal console”按鈕,點選即可開啟一個命令列視窗。其實還有好多功能,大家可以自行探索。
總結
本文介紹了使用SSH連回家庭區域網的方法,特別適合於在外工作的人士,經常需要訪問回家庭網路資源的人士使用。
本方法適合於在電腦上操作,安全高效,一次設定,長期可用。
本文的方案在HomeLede軟路由韌體上(https://github.com/xiaoqingfengATGH/HomeLede)測試通過。
涉及到的軟體下載:
- HomeLede韌體:https://github.com/xiaoqingfengATGH/HomeLede/wiki/HomeLede%E7%89%88%E6%9C%AC%E5%8F%91%E5%B8%83
- SSH客戶端:Bitvise SSH Client https://www.bitvise.com/ssh-client-download
- Chrome瀏覽器外掛:SwitchyOmega https://proxy-switchyomega.com/