什么是內網(今天說點大家都能聽得懂的?。。。?/h2>通常情況下,內網 可以簡單的理解為路由器創(chuàng)建的網絡,連接到這個網絡的電腦之間可以相互訪問。 舉個例子,假設我們的網絡架構是這樣的: 直接通過網線連接到小明的路由器上的電腦A、電腦B 、電腦C 之間互相訪問沒有問題,例如:
同理,連接到 李華的路由器上的幾臺電腦間相互訪問也沒有問題。 我們就可以認為小明的路由器下的幾臺電腦就位于同一個 內網 中,而李華的路由器下的幾臺電腦位于 另外一個內網 中。 小明和李華相互通信當小明想和李華通信時,問題就出現(xiàn)了。因為 小明的路由器 和 李華的路由器 之間沒有直接連接,也沒有連接到同一個上級路由,它們并不知道如何連接到對方。 如果有公網 IP...假如運營商給 小明的路由器 或 李華的路由器 分配了公網 IP,這個問題就迎刃而解。 舉個例子,假如小明有一個公網 IP ,1.1.1.1,那么李華就可以發(fā)起對 1.1.1.1的連接:
如果沒有公網 IP 呢?由于 IPv4 地址的稀缺,國內三大運營商(電信、移動、聯(lián)通)基本都不給家寬用戶分配公網 IP,更不用說一些二線小運營商了。 這就導致上面的連接無法成功建立,因為李華的路由器想連接到 小明的路由器就必須告訴互聯(lián)網對方的公網 IP,但是現(xiàn)在他們都沒有分配到公網 IP。這時,二者想建立連接就需要使用內網穿透或 UDP 打洞等技術了。 什么是內網穿透簡單的說,內網穿透就是使用一臺有公網 IP 的電腦 (frp服務器,下文稱為節(jié)點) 作為 “中間人” 來與沒有公網 IP 的電腦建立連接并轉發(fā)數(shù)據(jù)。
由于電腦D并沒有直接連接到游戲服務器,而是由 frpc 代為連接,因此游戲服務器看到的 IP 實際上是 frpc 的 IP,也就是127.0.0.1。因此,如果小明想知道電腦D的真實 IP,還需要進行額外配置。 為什么要內網穿透結合場景來理解內網穿透技術的適用范圍。 先了解一下,內網有哪些限制? 1.IP不固定,一段時間會自動切換。 2.不能直接訪問,只能在同一個網絡中訪問。 3.敏感端口被封,不能用。例如80 443端口。 4.網速不穩(wěn)定,下載不滿速,上載低速。 公網的優(yōu)缺點: 1.貴,服務器貴,帶寬貴,IP貴。 2.IP固定,端口全開放。 3.帶寬穩(wěn)定,BGP多線路融合,響應速度快。 另外還要補充: 域名的注冊和解析 大陸地區(qū)的域名需要ICP備案 服務器80端口的HTTP協(xié)議,web需要 服務器443端口的HTTPS協(xié)議,需要SSL證書 現(xiàn)在結合場景來介紹內網穿透的適用范圍: 場景1:開發(fā)人員本地調試接口 描述:程序員給項目添加服務,例如短信服務,支付服務,需要在本地寫代碼、調試和測試。 特點:本地調試、網速要求低、需要HTTP或者HTTPS協(xié)議。 需求:必須本地,必須HTTP[S]網址。 場景2:遠程辦公,在家訪問公司內部系統(tǒng)和存儲服務 描述:疫情原因需要在家工作,又需要訪問公司內部的系統(tǒng)。 特點:遠程訪問、具體協(xié)議不固定、遠程時間不固定,可長可短。 特殊:出差的時候,手機上看家里電腦上的資料和視頻。 場景3:公網訪問局域網的私人存儲 描述:家有私人存儲,映射到公網,隨時隨地可以存取文件。 特點:網址或者IP地址都行,需要穩(wěn)定的通道和傳輸帶寬。 場景4:搭建私人游戲服務器,和伙伴開黑 描述:用自己的電腦做服務器,和小伙伴玩魔獸爭霸、我的世界 特定:帶寬要求不高,響應速度要求高,只需要IP 3. 內網穿透原理和常用方法既然內網主機不能直接訪問,那就在公網弄個服務器。 因為內網主機可以訪問公網主機,然后將內網主機和公網主機進行連接,并且保持連接。 如果公網主機接收到的請求,通過鏈接轉發(fā)給內網主機即可。 將內網服務進行公網映射,服務通常從端口提供服務,例如: ssh服務,端口好似22 web服務,端口是80和443 遠程桌面服務,端口是3389,win專業(yè)版支持遠程桌面 redis服務,端口是6379 馳網科技服務器租用端口是80 --艾西 我的世界Minecraft游戲服務端口是25565 CS:GO游戲服務端口是27015 方舟生存進化的游戲服務端口是27015、27016、77771 《使命召喚:先鋒》平臺 TCP UDP PC 3074, 27014-27050 3074-3079 如下圖: 這個就是內網穿透的思路。 有了思路,怎么實現(xiàn)?實現(xiàn)的重點是主機連接并且保持長久連接。 實現(xiàn)的方法有幾種,這里都來介紹一下: 基于TCP的Socket連接 基于SSH的反向代理 基于WebSocket連接 【當然除此之外,還有其他方法,有知道的可以在評論區(qū)補充?!?/span> 感興趣的小伙伴看到這里啦喜歡的記得點贊加關注! 1. 基于TCP的Socket連接 Socket連接是計算機網絡課程中的基礎編程題,你們肯定都做過,《基于TCP的Socket連接做一個命令行版聊天室》 下圖是Socket的通信模型 基于TCP的Socket連接,是一種可靠的連接形式,適合將兩個主機的端口進行綁定并保持連接。 因為Socket需要客戶端和服務端,所以Socket做內網穿透,需要客戶端。 既然需要做客戶端,通常各服務商的操作,是接入更多的處理,例如智能選擇節(jié)點等,客戶使用就更簡單更智能。 優(yōu)點:智能選擇節(jié)點,操作完全可控 缺點:安裝客戶端,響應速度慢 2. 基于SSH的反向代理 SSH,全稱Secure SHell,一個安全加密協(xié)議。 OpenSSH是遵循協(xié)議實現(xiàn)的一個免費開源工具,日常說的SSH,指的是這款軟件。 幾乎所有的Linux和Macos都自帶這款軟件,Win10和11都自帶,Win7需要借助第三方終端。 SSH支持遠程控制和代理,代理有正向代理、反向代理、socks5代理。 反向代理的操作,就是讓遠端啟動端口,把遠端端口數(shù)據(jù)轉發(fā)到本地。 HostA 上啟動一個 PortA 端口,通過 HostB 轉發(fā)到 HostC:PortC上,在 HostA 上運行: 反向代理: HostA$ ssh -R HostC:PortC:HostB:PortB user@HostC 使用SSH做內網穿透,好處是無客戶端,基本上每個操作系統(tǒng)都內置了SSH。 優(yōu)點:安全可靠,無客戶端,響應速度快 缺點:單一節(jié)點 3. 基于WebSocket連接 WebSocket 協(xié)議誕生于 2008 年,在 2011 年成為國際標準,并且 WebSocket 同樣是 HTML 5 規(guī)范的組成部分之一。 WebSocket 是一種全新的協(xié)議。它應用在了 web page 上,從而使通信雙方建立起一個保持在活動狀態(tài)連接通道,并且屬于全雙工(雙方同時進行雙向通信)。 WebSocket和Socket的工作模式差不多,不同點是WebSocket工作在Web網頁上。 WebSocket和Socket一樣,需要客戶端配合服務端工作,所以用戶需要配置雙端,才可以使用。 內網轉發(fā)的安全問題 有利肯定就有弊,將本地服務器暴露在公網,也有不好的地方。 第一個:公網主機端口被掃描 網絡上到處都有爬蟲機器人抓數(shù)據(jù)和掃描接口【抓肉雞】。 內網主機由于無法訪問,所以你開放端口是沒啥安全問題的。 但是部署到公網后,就要注意安全問題。 解決方法: 記錄端口訪問日志并定時檢查 端口偽裝,例如22->34423, 3306->42887 端口定時更換,或動態(tài)端口號 第二個:DDoS攻擊 這個是針對服務器來說的,并非某個端口。 何為DDoS?一般來說是指攻擊者利用“肉雞”對目標網站在較短的時間內發(fā)起大量請求,大規(guī)模消耗目標網站的主機資源,讓它無法正常服務。 自由服務器需要考慮下,解決方法很多,如下: 高防服務器,重點提高服務器的流量防御能力。 黑名單,統(tǒng)一封鎖大量或區(qū)域IP,可能會關閉了正常流量。 DDoS清洗,實時檢查請求,發(fā)現(xiàn)奇怪請求直接關閉鏈接。 總結:按實際情況來決定最后的選擇,有機房硬防火墻還是很安全,自己個人做內網穿透多多少少對業(yè)務會有一定的影響。一個東西他屬于哪里就讓他在哪里好好待在保證業(yè)務的正常運轉,在這網時代有時候服務器不穩(wěn)定幾秒幾分鐘就會損失一些比較多的Money。 我是馳網艾西喜歡的記得點贊+關注 攜手馳網一同探索 (有一臺服務器可以做很多超酷的事情) |
|
來自: 新用戶0935snDB > 《待分類》