遠程訪問管家婆軟件:三種內(nèi)網(wǎng)穿透方案實戰(zhàn)對比)
1. 從一次緊急的遠程對賬需求說起上個月財務(wù)部的同事小王火急火燎地找到我說老板在外地出差急需查看上個月的銷售報表但公司的管家婆軟件服務(wù)器架設(shè)在內(nèi)網(wǎng)辦公室老板在外面根本連不上。這已經(jīng)不是第一次了每次遇到這種需要遠程訪問內(nèi)部業(yè)務(wù)系統(tǒng)的情況要么讓同事在辦公室電腦上操作截圖要么就只能干等。對于一家業(yè)務(wù)正在擴張、人員流動性增大的公司來說這種“信息孤島”的狀態(tài)顯然已經(jīng)成了效率的絆腳石。我相信很多中小企業(yè)的網(wǎng)管或IT負責(zé)人都有過類似的困擾。我們花了不少錢部署了像管家婆這樣的ERP、財務(wù)或進銷存軟件它們穩(wěn)定地運行在公司內(nèi)部局域網(wǎng)里數(shù)據(jù)安全訪問速度快。但一旦涉及到移動辦公、居家辦公、或者像我們老板這樣需要隨時掌握經(jīng)營數(shù)據(jù)的情況內(nèi)網(wǎng)環(huán)境就成了最大的障礙。難道為了遠程訪問就得把服務(wù)器直接放到公網(wǎng)上暴露在風(fēng)險之中嗎當(dāng)然不是。今天我就結(jié)合自己實際折騰和測試過的幾種方案來詳細聊聊如何安全、穩(wěn)定地實現(xiàn)管家婆軟件的外網(wǎng)訪問。核心思路就是“內(nèi)網(wǎng)穿透”顧名思義就是在不改變現(xiàn)有內(nèi)網(wǎng)結(jié)構(gòu)的前提下打通一條從外網(wǎng)訪問內(nèi)網(wǎng)服務(wù)的“隧道”。下面我會逐一拆解幾種主流方案的原理、實操步驟以及我踩過的坑希望能幫你找到最適合自己公司的那一條路。2. 方案一傳統(tǒng)路由器端口映射DDNS的實戰(zhàn)與局限這可能是很多人首先想到的方案也是最“古典”的內(nèi)網(wǎng)穿透方式。它的原理很簡單你公司的網(wǎng)絡(luò)出口通常有一個公網(wǎng)IP可能是運營商分配的路由器是這個公網(wǎng)的入口。端口映射就是在路由器上設(shè)置一條規(guī)則“當(dāng)外網(wǎng)用戶訪問我路由器公網(wǎng)IP的某個特定端口比如8080時請把這條訪問請求轉(zhuǎn)發(fā)給內(nèi)網(wǎng)里那臺IP是192.168.1.100的電腦的管家婆服務(wù)端口比如211”。2.1 實施前的關(guān)鍵前提檢查在動手之前有三個必須確認的前提缺一不可這也是這個方案最大的變數(shù)所在公網(wǎng)IP你需要向?qū)拵н\營商電信、聯(lián)通、移動等確認你公司所用的企業(yè)寬帶或家庭寬帶是否分配了真實的公網(wǎng)IP地址?,F(xiàn)在很多運營商為了節(jié)省IPv4地址給用戶分配的是“大局域網(wǎng)”IP如100.64.x.x這種IP是無法從外網(wǎng)直接訪問的。你可以登錄路由器管理界面查看WAN口獲取的IP然后去百度搜索“IP”對比兩者是否一致。不一致基本就是內(nèi)網(wǎng)IP。路由器權(quán)限你必須擁有公司路由器的管理員賬號密碼并且路由器支持端口映射也叫虛擬服務(wù)器功能。絕大多數(shù)企業(yè)級路由器都支持但有些運營商定制的光貓可能閹割或隱藏了此功能。管家婆服務(wù)器IP固定運行管家婆服務(wù)端的那臺電腦在內(nèi)網(wǎng)中的IP地址必須是固定的靜態(tài)IP或者至少在路由器里為其綁定MAC地址與IP防止DHCP重新分配后IP變化導(dǎo)致映射失效。2.2 詳細配置步驟與避坑指南假設(shè)你已經(jīng)滿足了以上條件并且管家婆服務(wù)器內(nèi)網(wǎng)IP為192.168.1.100使用默認端口211。步驟一設(shè)置服務(wù)器靜態(tài)IP在服務(wù)器電腦的網(wǎng)絡(luò)設(shè)置中將IPv4地址從“自動獲取”改為手動設(shè)置填入192.168.1.100子網(wǎng)掩碼255.255.255.0網(wǎng)關(guān)和DNS填寫公司路由器的內(nèi)網(wǎng)IP通常是192.168.1.1。注意務(wù)必記下修改前的自動獲取到的IP、網(wǎng)關(guān)等信息以防配置錯誤導(dǎo)致斷網(wǎng)??梢韵仍诿钚杏胕pconfig /all查看當(dāng)前正確配置。步驟二登錄路由器配置端口映射以常見的TP-LINK企業(yè)路由器為例流程如下瀏覽器輸入路由器管理IP如192.168.1.1登錄。找到“轉(zhuǎn)發(fā)規(guī)則”-“虛擬服務(wù)器”或“NAT”-“端口映射”。添加新條目服務(wù)端口211這是外網(wǎng)訪問的端口可以自定義如80211但建議避開80、8080等常見端口以減少掃描內(nèi)部端口211管家婆服務(wù)端實際監(jiān)聽的端口IP地址192.168.1.100協(xié)議選擇TCP或ALL保存并重啟路由器生效。步驟三處理動態(tài)公網(wǎng)IP與域名訪問大多數(shù)寬帶分配的公網(wǎng)IP是動態(tài)的過一段時間可能會變化。這就需要用到**DDNS動態(tài)域名解析**服務(wù)。路由器一般內(nèi)置了花生殼Oray等DDNS服務(wù)商的支持。去花生殼官網(wǎng)注冊一個賬號申請一個免費域名如yourcompany.xicp.net。在路由器的“DDNS”設(shè)置頁面選擇服務(wù)商“花生殼”填入賬號、密碼和域名。啟用DDNS。此后無論你的公網(wǎng)IP怎么變路由器都會自動將新IP同步到你的域名yourcompany.xicp.net上。最終訪問方式外網(wǎng)用戶在任何地方打開管家婆客戶端在服務(wù)器地址欄輸入yourcompany.xicp.net:211如果你映射的外網(wǎng)端口是211或yourcompany.xicp.net:80211如果你映射的是80211端口即可連接。2.3 該方案的優(yōu)缺點與我的使用體會優(yōu)點成本極低幾乎零成本利用現(xiàn)有設(shè)備。速度最快數(shù)據(jù)直連不經(jīng)過第三方服務(wù)器中轉(zhuǎn)帶寬取決于你的上行帶寬??刂茩?quán)高所有配置在自己路由器上心理上感覺更安全。缺點與坑點對網(wǎng)絡(luò)環(huán)境要求苛刻沒有公網(wǎng)IP一切免談。目前一線城市家庭寬帶獲取公網(wǎng)IP非常困難企業(yè)寬帶一般可以申請。安全性依賴自身將內(nèi)部端口暴露在公網(wǎng)相當(dāng)于在防火墻上開了個洞。如果服務(wù)器系統(tǒng)、管家婆軟件本身存在未修補的高危漏洞或有弱密碼極易被攻擊者掃描并入侵。務(wù)必確保服務(wù)器操作系統(tǒng)更新、安裝殺毒軟件、管家婆密碼強度足夠。配置復(fù)雜維護麻煩需要懂一定的網(wǎng)絡(luò)知識且一旦網(wǎng)絡(luò)拓撲變化如更換路由器需要重新配置??赡苓`反運營商協(xié)議部分家庭寬帶協(xié)議禁止用于商業(yè)服務(wù)或開設(shè)服務(wù)器。我的體會在早期公網(wǎng)IP好申請的時候這是我們的首選方案。但隨著安全意識的提升和公網(wǎng)IP的稀缺我們逐漸放棄了這種方案尤其是對于存儲著核心財務(wù)數(shù)據(jù)的管家婆服務(wù)器將其端口直接映射到公網(wǎng)就像把保險柜鑰匙放在家門口的地墊下讓我始終睡不踏實。3. 方案二第三方內(nèi)網(wǎng)穿透工具的靈活應(yīng)用由于方案一的種種限制第三方內(nèi)網(wǎng)穿透工具成為了當(dāng)前最主流、最便捷的選擇。這類工具的原理是在你內(nèi)網(wǎng)的管家婆服務(wù)器上運行一個客戶端軟件Agent這個客戶端會主動連接到工具服務(wù)商在公網(wǎng)的服務(wù)器建立一個加密的隧道。當(dāng)外網(wǎng)用戶想訪問時先連接到公網(wǎng)服務(wù)器公網(wǎng)服務(wù)器通過已建立的隧道將請求轉(zhuǎn)發(fā)給你的內(nèi)網(wǎng)客戶端再由客戶端交給管家婆服務(wù)端處理。數(shù)據(jù)流可以簡單理解為外網(wǎng)用戶 - 穿透工具公網(wǎng)服務(wù)器 - 你內(nèi)網(wǎng)的客戶端 - 管家婆服務(wù)端。3.1 主流工具選型與核心考量市面上這類工具很多如花生殼內(nèi)網(wǎng)版、神卓互聯(lián)、NATAPP、frp開源等。選型時我主要考慮以下幾點穩(wěn)定性與速度這是商業(yè)服務(wù)的核心。免費版通常有帶寬、流量或連接數(shù)限制且穩(wěn)定性一般僅適合測試或極低頻使用。生產(chǎn)環(huán)境務(wù)必考慮付費版關(guān)注服務(wù)商的線路質(zhì)量。安全性數(shù)據(jù)傳輸是否加密TLS/SSL控制臺管理是否有二次驗證這些是基礎(chǔ)。配置復(fù)雜度是否提供一鍵安裝包或圖形化配置界面這對于非專業(yè)運維的同事很重要。功能適配是否支持TCP/UDP協(xié)議管家婆用的是TCP能否自定義域名是否提供訪問日志等。以神卓互聯(lián)為例僅作流程演示非推薦其配置過程非常典型3.2 以神卓互聯(lián)為例的詳細配置流程步驟一注冊與創(chuàng)建隧道在神卓互聯(lián)官網(wǎng)注冊賬號登錄管理控制臺。點擊“創(chuàng)建隧道”選擇“TCP隧道”。填寫隧道信息隧道名稱GraspServer自定義前置域名選擇服務(wù)商提供的免費域名或綁定自己的域名。本地地址192.168.1.100:211你的管家婆服務(wù)器內(nèi)網(wǎng)IP和端口遠程端口服務(wù)商會自動分配一個端口號如55012外網(wǎng)就用這個端口訪問。步驟二在內(nèi)網(wǎng)服務(wù)器安裝并運行客戶端在控制臺下載對應(yīng)操作系統(tǒng)Windows/Linux的客戶端軟件。在管家婆服務(wù)器上解壓并運行客戶端。通常是一個可執(zhí)行文件可能需要以管理員身份運行??蛻舳藛雍髸竽爿斎朐诳刂婆_獲取的“隧道ID”或“Authtoken”進行認證。輸入后客戶端顯示“連接成功”或“在線”。步驟三外網(wǎng)訪問測試此時外網(wǎng)用戶打開管家婆客戶端在服務(wù)器地址欄輸入神卓互聯(lián)提供的外網(wǎng)訪問地址例如graspserver.szdataplus.com:55012。如果一切正常就能成功連接到內(nèi)網(wǎng)的管家婆服務(wù)器了。3.3 進階配置與穩(wěn)定性優(yōu)化心得開機自啟與服務(wù)化絕不能每次重啟服務(wù)器都手動去點一下客戶端。在Windows上可以將客戶端配置為系統(tǒng)服務(wù)有些工具安裝包自帶此選項在Linux上可以使用systemd或supervisor來托管進程確保異常退出后能自動重啟。# 示例Linux下使用systemd的簡單服務(wù)文件 (/etc/systemd/system/shenzhuo.service) [Unit] DescriptionShenzhuo Client Afternetwork.target [Service] Typesimple Usernobody ExecStart/path/to/shenzhuo-client -config /path/to/config.ini Restarton-failure RestartSec5s [Install] WantedBymulti-user.target然后使用sudo systemctl enable shenzhuo和sudo systemctl start shenzhuo來啟用和啟動服務(wù)。帶寬監(jiān)控與升級管家婆的數(shù)據(jù)傳輸量不大但多人同時操作或執(zhí)行報表查詢時會有瞬時流量。在工具的管理后臺密切關(guān)注流量使用情況。如果經(jīng)常遇到卡頓可能是免費帶寬不足需要考慮升級套餐。備用隧道與故障轉(zhuǎn)移對于非常重要的生產(chǎn)環(huán)境可以考慮配置兩條不同服務(wù)商或同一服務(wù)商不同區(qū)域的隧道在主隧道故障時手動或自動切換訪問地址。雖然配置麻煩但能極大提升可用性。該方案的優(yōu)缺點優(yōu)點無視網(wǎng)絡(luò)環(huán)境無論有沒有公網(wǎng)IP無論是否在多層NAT后如公司網(wǎng)絡(luò)下還有路由器都能使用。配置簡單圖形化界面幾步點擊即可完成對使用者技術(shù)要求低。安全性相對較好數(shù)據(jù)經(jīng)過服務(wù)商中轉(zhuǎn)且通常加密內(nèi)網(wǎng)服務(wù)器IP和端口不直接暴露在公網(wǎng)。自帶DDNS通常提供免費二級域名解決了動態(tài)IP問題。缺點依賴第三方服務(wù)服務(wù)商的穩(wěn)定性決定了你的可用性。一旦服務(wù)商服務(wù)器宕機或停止運營服務(wù)即刻中斷。速度可能受限數(shù)據(jù)需要經(jīng)過中轉(zhuǎn)服務(wù)器延遲和速度取決于服務(wù)商的線路質(zhì)量和你購買的帶寬套餐。免費版通常速度很慢。長期成本穩(wěn)定好用的服務(wù)需要付費是持續(xù)性的支出。數(shù)據(jù)經(jīng)過第三方雖然加密但從心理層面和合規(guī)層面對于一些極度敏感的數(shù)據(jù)仍需評估風(fēng)險。4. 方案三自建FRP服務(wù)器的終極控制方案如果你像我一樣不滿足于受制于人公司又有一定的技術(shù)能力并且恰好有一臺具有公網(wǎng)IP的云服務(wù)器阿里云、騰訊云等那么自建內(nèi)網(wǎng)穿透服務(wù)是最具掌控感的方案。這里我們使用開源項目FRP (Fast Reverse Proxy)。它的架構(gòu)非常清晰在公網(wǎng)云服務(wù)器上運行frps(server)在內(nèi)網(wǎng)管家婆服務(wù)器上運行frpc(client)。frpc主動連接frps告知“我要把本地的211端口映射出去”。frps監(jiān)聽一個公網(wǎng)端口如7000當(dāng)外網(wǎng)用戶連接這個端口時frps就將流量通過已建立的隧道轉(zhuǎn)發(fā)給frpc最終到達管家婆。4.1 環(huán)境準備與核心組件部署你需要一臺有公網(wǎng)IP的云服務(wù)器CentOS 7 或 Ubuntu 18.04作為服務(wù)端frps。內(nèi)網(wǎng)的管家婆服務(wù)器Windows或Linux作為客戶端frpc。一個域名可選但推薦用于通過域名訪問而非IP端口。步驟一在云服務(wù)器部署FRP服務(wù)端frps通過SSH登錄云服務(wù)器。去FRP的GitHub Release頁面下載對應(yīng)系統(tǒng)架構(gòu)的最新版壓縮包例如frp_0.52.3_linux_amd64.tar.gz。解壓并進入目錄tar -zxvf frp_0.52.3_linux_amd64.tar.gz cd frp_0.52.3_linux_amd64編輯服務(wù)端配置文件frps.toml(FRP v0.52.0 使用TOML格式)bindPort 7000 # frps監(jiān)聽的端口用于與frpc建立控制連接 auth.method token # 認證方式 auth.token your_strong_token_here # 定義一個強令牌用于frpc連接時驗證 # Web管理面板可選方便查看狀態(tài) webServer.addr 0.0.0.0 webServer.port 7500 webServer.user admin webServer.password admin_password啟動frps。建議使用systemd管理創(chuàng)建服務(wù)文件/etc/systemd/system/frps.service[Unit] DescriptionFrp Server Service Afternetwork.target [Service] Typesimple Usernobody Restarton-failure RestartSec5s ExecStart/path/to/frps -c /path/to/frps.toml [Install] WantedBymulti-user.target然后sudo systemctl enable frps和sudo systemctl start frps。4.2 客戶端配置與隧道建立步驟二在內(nèi)網(wǎng)管家婆服務(wù)器部署FRP客戶端frpc在FRP的GitHub Release頁面下載Windows版本如frp_0.52.3_windows_amd64.zip。解壓到管家婆服務(wù)器上編輯客戶端配置文件frpc.tomlserverAddr 你的云服務(wù)器公網(wǎng)IP serverPort 7000 auth.method token auth.token your_strong_token_here # 必須和frps.toml中的一致 [[proxies]] name grasp-tcp type tcp localIP 127.0.0.1 # 如果frpc和管家婆在同一臺機器就是127.0.0.1 localPort 211 remotePort 6000 # 在云服務(wù)器上開放的遠程端口外網(wǎng)通過這個端口訪問注意如果管家婆服務(wù)端和frpc不在同一臺機器localIP要改為管家婆服務(wù)器的內(nèi)網(wǎng)IP如192.168.1.100。在Windows上可以創(chuàng)建一個批處理文件start_frpc.bat內(nèi)容為frpc -c frpc.toml并將其放入開機啟動文件夾或同樣配置為Windows服務(wù)使用NSSM工具可以方便地將任何exe封裝為服務(wù)。4.3 通過域名訪問的優(yōu)化配置直接使用云服務(wù)器IP:6000訪問不夠友好且IP可能變化。我們可以用域名。在你的域名DNS管理后臺添加一條A記錄例如grasp.yourcompany.com指向你的云服務(wù)器公網(wǎng)IP。修改云服務(wù)器上的Web服務(wù)器如Nginx配置進行反向代理。這樣外網(wǎng)用戶只需要訪問grasp.yourcompany.comNginx會將請求轉(zhuǎn)發(fā)給本機127.0.0.1:6000的frps服務(wù)。# 在Nginx配置文件中添加一個server塊 server { listen 80; server_name grasp.yourcompany.com; location / { # 這不是Web服務(wù)是TCP代理但Nginx的stream模塊更適合純TCP。 # 對于管家婆的TCP協(xié)議更推薦直接在frps上使用remotePort。 # 這里僅作HTTP代理示例實際管家婆是TCP此方法不適用。 # 正確做法外網(wǎng)直接連接 grasp.yourcompany.com:6000 # 或者使用FRP的customDomains功能HTTP類型代理但管家婆是TCP所以此步可省略。 # 我們僅用域名解析到IP訪問時仍是 域名:端口。 return 404; } }實際上對于TCP服務(wù)我們只需要域名解析到云服務(wù)器IP即可。訪問地址為grasp.yourcompany.com:6000。4.4 安全加固與性能調(diào)優(yōu)要點防火墻配置云服務(wù)器安全組/防火墻必須放行7000(frps控制端口)、6000(遠程訪問端口) 以及7500(Web管理面板端口如果開了的話)。同時強烈建議將auth.token設(shè)置為非常復(fù)雜的字符串。使用TLS加密隧道在frps.toml和frpc.toml中配置transport.tls.enable true可以加密frps和frpc之間的控制通道和數(shù)據(jù)通道防止中間人攻擊。限制訪問IP在frpc.toml的代理配置中可以添加remotePort 6000和bandwidthLimit 10MB來限制單個代理的帶寬。更細粒度的IP限制需要在云服務(wù)器防火墻或frps層面通過插件實現(xiàn)。監(jiān)控與日志定期查看frps和frpc的日志 (frps.log,frpc.log)關(guān)注異常連接。啟用Web管理面板端口7500可以直觀看到連接狀態(tài)和流量。該方案的優(yōu)缺點優(yōu)點完全自主可控從服務(wù)器到配置全部掌握在自己手里無需擔(dān)心服務(wù)商跑路或限速。成本靈活主要成本是云服務(wù)器費用可以根據(jù)需要選擇配置和帶寬長期可能比商業(yè)服務(wù)劃算。安全性高可以自行配置加密、認證、IP白名單等安全性設(shè)計上限高。功能強大FRP支持TCP、UDP、HTTP、HTTPS等多種代理一臺服務(wù)器可為公司內(nèi)多種服務(wù)OA、網(wǎng)站測試環(huán)境等提供穿透。缺點技術(shù)門檻最高需要具備Linux服務(wù)器運維、網(wǎng)絡(luò)基礎(chǔ)、故障排查能力。需要公網(wǎng)服務(wù)器初始需要一臺帶公網(wǎng)IP的云服務(wù)器有硬件成本。維護責(zé)任自負服務(wù)器的安全、穩(wěn)定、備份都需要自己負責(zé)包括FRP服務(wù)本身的升級和Bug修復(fù)。5. 方案對比與最終選擇建議為了更直觀我將三種方案的核心差異總結(jié)如下表特性維度方案一路由器DDNS映射方案二第三方穿透工具方案三自建FRP服務(wù)器核心原理路由器NAT轉(zhuǎn)發(fā)通過第三方服務(wù)器中轉(zhuǎn)通過自有公網(wǎng)服務(wù)器中轉(zhuǎn)公網(wǎng)IP要求必須要有無需需要用于FRP服務(wù)端技術(shù)難度中等需網(wǎng)絡(luò)基礎(chǔ)低圖形化配置高需服務(wù)器運維知識配置復(fù)雜度較高涉及路由器、DDNS低高需部署服務(wù)端與客戶端速度與延遲最優(yōu)點對點直連取決于服務(wù)商線路與套餐取決于云服務(wù)器帶寬與線路安全性較低端口直接暴露中等服務(wù)商提供加密中轉(zhuǎn)高可完全自主控制加密、認證穩(wěn)定性依賴自身網(wǎng)絡(luò)與路由器第三方服務(wù)商自身運維能力與云服務(wù)商長期成本近乎為零持續(xù)付費訂閱云服務(wù)器租金可控性中等低完全自主適合場景確認有公網(wǎng)IP對速度要求極高具備安全加固能力的小型環(huán)境無公網(wǎng)IP追求快速部署、免運維對成本不敏感的中小企業(yè)有公網(wǎng)服務(wù)器資源技術(shù)能力強追求高可控性、高安全性的環(huán)境給不同情況下的選擇建議如果你是技術(shù)小白或公司無專職IT直接選擇方案二第三方工具。找一個口碑不錯的服務(wù)商購買其入門級或企業(yè)級套餐。省心省力快速解決問題把精力放在業(yè)務(wù)上。前期可以用免費版測試。如果你有公網(wǎng)IP且網(wǎng)絡(luò)結(jié)構(gòu)簡單可以嘗試方案一DDNS映射。但務(wù)必做好安全加固修改管家婆默認端口、設(shè)置強密碼、關(guān)閉服務(wù)器不必要的端口和服務(wù)、定期更新系統(tǒng)。如果對安全沒把握不建議用于核心財務(wù)系統(tǒng)。如果你或團隊有Linux運維能力且已有或愿意購買云服務(wù)器強烈推薦方案三自建FRP。這是一次投入長期受益的方案。不僅能解決管家婆的訪問問題還能順帶解決公司內(nèi)部其他系統(tǒng)如測試環(huán)境、監(jiān)控系統(tǒng)、文件共享的遠程訪問需求實現(xiàn)統(tǒng)一的內(nèi)網(wǎng)穿透入口安全性和靈活性都是最高的。在我們公司經(jīng)過綜合評估最終選擇了方案三。雖然初期投入了大約兩天時間研究、部署和測試但換來的是完全的控制權(quán)和一勞永逸的解決方案。我們在一臺低配的云服務(wù)器上部署了frps同時將內(nèi)部的GitLab、測試環(huán)境后臺也都通過它映射出去管理起來非常方便。最重要的是數(shù)據(jù)流經(jīng)自己的服務(wù)器心里踏實。無論選擇哪種方案在實施后都一定要進行完整的測試包括不同網(wǎng)絡(luò)環(huán)境4G/5G、家庭寬帶、酒店Wi-Fi下的連接測試、長時間連接的穩(wěn)定性測試、多用戶同時訪問的壓力測試。并且做好應(yīng)急預(yù)案比如告知用戶備用的訪問方式如方案二作為方案三的備份確保業(yè)務(wù)不會因為單點故障而中斷。