內網穿透原理和部署教程

前言:本文介紹了內網穿透技術原理及frp工具的部署方法。由于NAT映射表是臨時且單向的,外網無法直接訪問內網服務。通過部署公網服務器作為中轉,frp實現了內網服務的穿透訪問。具體步驟包括:下載frp軟件包,詳細說明了配置文件修改要點和端口開放注意事項,并提供了SSH和Nginx兩個實際應用案例,希望能幫助您快速掌握內網穿透的實現方法。

文章目錄

  • 內網穿透原理
  • frp軟件下載
  • 內網穿透部署
    • 遠程連接xshell
    • 遠程訪問nginx

內網穿透原理

??我們都知道公網無法直接訪問內網主機,因為缺乏預先建立的 NAT 映射關系,導致外網請求無法路由到指定內網設備。

1.NAT的工作原理

  • 內網 → 外網(可通)
    當內網主機訪問公網服務器時:路由器會記錄一條 NAT 映射表,回來時路由器再通過映射表將響應轉發給內網主機。
  • 外網 → 內網(默認不通)
    如果公網設備直接嘗試訪問內網,路由器沒有對應的 NAT 映射表(因為內網未主動發起過連接)。路由器不知道應將數據包轉發給哪個內網主機,直接丟棄請求(防火墻策略)。

2.關鍵限制

  • NAT 映射是臨時且單向的。
  • 映射表通常在連接關閉后過期(如 TCP 超時后刪除)。
  • 外網無法主動創建映射表條目。

??那么如果一個服務部署在內網中,我們想要訪問呢?比如公司做的私有服務,只有內部員工才能訪問,部署在公司內網中。而作為一個公司的員工在家里要完成工作任務需要訪問公司內網服務該怎么辦?

例如主機A要訪問主機C部署的服務:
在這里插入圖片描述
??為了解決這個問題我們需要用到內網穿透技術,原理很簡單在中間加一個公網服務器。
在這里插入圖片描述
??讓主機C訪問公網服務器,這樣就有了NAT映射表,只需要在公網服務器上部署一個服務,將公網IP:端口映射到內網主機IP:端口 。主機A訪問 公網IP:外部端口 時,路由器自動轉發到內網主機。
??所以接下來我們要解決的是在公網上部署一個什么樣的服務完成該工作呢?這里給大家介紹的是frp。

frp軟件下載

frp下載鏈接
本文講解的是在linux系統下部署,下載以下版本:
在這里插入圖片描述

??接下來準備xshell連接遠程服務器和虛擬機兩個終端,并把本地下載的frp_0.58.1_linux_amd64.tar.gz壓縮包上傳到兩個終端,可以直接拖拽、使用指令rz或指令scp
scp指令的使用:

scp 壓縮包地址 虛擬機登錄用戶名@虛擬機IP: 要拷貝到的目錄

對壓縮包解壓:

tar zxf frp_0.58.1_linux_amd64.tar.gz

打開文件:
在這里插入圖片描述

  • frps*是服務器,frps.toml是服務器的配置文件。
  • frpc*是客戶端,frpc.toml是客戶端的配置文件。
  • LICENSE是一個權限許可相關的文件,這里不做關心。

內網穿透部署

??以xshell遠程連接作為客戶去訪問內網虛擬機為例。那么我們需要在xshell中啟動frps服務器,在虛擬機中啟動frpc客戶端。

服務器啟動:
??在此之前需要了解并修改一下配置文件,xshell用vim打開frps.toml配置文件,如下:

vim frps.toml

內容如下:

bindPort = 7000

這個表示frps服務的端口號,假設這里我們更改為7777

  • 注意1:客戶端配置文件里要填充相同的端口才能訪問到該服務。
  • 注意2:要保證云服務器的7777端口對外開放。

啟動服務:

./frps -c frps.toml
  • 注意這里加了-c frps.toml選項,表示按配置文件的配置啟動

客戶端啟動:
??同樣的在此之前先了解并修改一下配置文件,使用虛擬機打開frpc.toml配置文件,如下:

vim frpc.toml

內容如下:

serverAddr = "127.0.0.1"
serverPort = 7000[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

??serverAddr服務器的IP這個修改成我們的公網服務器,比如我的120.46.0.237servereAddr服務器端口,這里修改成上文我們填寫的服務器端口7777

??name字段隨意填,type是傳輸層協議類型,localIP是本地服務器IP,如果是在自己主機上部署的服務就不用修改,localport是本地訪問的端口號,這里就使用默認的服務端口22,即ssh服務,remotePort是需要映射到公網的端口號,這里我們改為8022

啟動客戶端:

./frpc -c frpc.toml
  • 注意公網服務器需要開放serverPort和remotePort對應的端口。

遠程連接xshell

??接下來我們打開一個xshell,訪問公網120.46.0.237:8022,就能訪問到內網虛擬機的ssh服務了。
在這里插入圖片描述

遠程訪問nginx

??接下來再測試一個服務,在虛擬機上安裝一個nginx服務并啟動。
下載安裝nginx:

sudo apt install -y nginx

啟動nginx:

sudo nginx

查看它所對應的端口:

netstat -nltp

結果如下:
在這里插入圖片描述
此時我們只需要在虛擬機客戶端的配置文件再添加一條映射關系:
如下:

serverAddr = "120.46.0.237"
serverPort = 7777[[proxies]]
name = "ssh-service"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 8022[[proxies]]
name = "http-nginx"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 8080          

測試:物理機打開瀏覽器訪問120.46.0.237:8080,效果如下:
在這里插入圖片描述

非常感謝您能耐心讀完這篇文章。倘若您從中有所收獲,還望多多支持呀!
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/94742.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/94742.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/94742.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ping32:為企業數據安全筑起銅墻鐵壁?

Ping32:為企業數據安全筑起銅墻鐵壁在數字經濟飛速發展的今天,企業數據已成為核心競爭力的重要組成部分。然而,數據泄露事件頻發,給企業帶來的損失難以估量。從商業機密外泄到客戶信息曝光,每一次數據安全事故都可能讓…

2025年國內iPaaS平臺精選

在過去幾年里,許多企業在業務系統中面臨了諸多有關集成的難題:系統建好了,數據流不動;接口打通了,流程仍卡頓;工具堆疊越來越多,但協同效率反而走低。 這并不是架構設計的問題,也不是…

AD繪制PCB之-板外形設計

1、通過機械層1 【Mechanical 1】繪制出板子輪廓2、選中上面繪制得輪廓先選中一條邊,然后按tab鍵,可以自動選擇這條邊閉合得線條3、按照選擇對象定義設計--->板子形狀------>按照選擇對象定義執行后得效果:4、根據需要設置板子四角為半…

《匯編語言:基于X86處理器》第12章 浮點數處理與指令編碼(2)

Intel X86架構數據的運算主要由通用寄存器處理,但浮點數例外,浮點數的運算由專門的FPU寄存器處理。二進制浮點數由三部分組成:符號,有效數字和階碼。這些格式都出自由IEEE組織制定的標準754-1985:以下是三種浮點數的格…

vue3通過按鈕實現橫向滾動、鼠標滾動橫坐標滾動

效果圖&#xff1a;可點擊左右文字進行滾動、或通過滾動鼠標 內容左右滾動<template><div class"Home"><div style"display: flex;height: 100%;align-items: center;"><div click"scrollLeft()" style"width: 80px;t…

【Agent】AutoGen:LLM驅動的多Agent對話框架

文章目錄一、AutoGen簡介1.1 AutoGen的特點1.2 AutoGen的實現1.2.1 可對話Agent1.2.2 對話編程二、基于AutoGen構建多智能體系統2.1 構建步驟2.1 協作模式2.2 通信模型2.3 人機協同2.4 具體示例參考資料一、AutoGen簡介 AutoGen是微軟推出的一個Multi-Agent框架&#xff0c;允…

乙巳年閏六月十六凌晨感懷

乙巳年閏六月十六凌晨感懷 一段歷程一段情&#xff0c;兒郎崢嶸兒郎行。 歲月流金建功業&#xff0c;春秋風尚能潮贏。 路途苦樂人生度&#xff0c;評說成敗當下名。 百年孤寂留水墨&#xff0c;千載獨步守安寧。

Redis 分布式Session

一、引入依賴引入spring-session-data-redis依賴&#xff0c;不需要指定version&#xff0c;默認和springboot的version保持一致<!-- Spring Session Redis --> <dependency><groupId>org.springframework.session</groupId><artifactId>spring…

JAVA實現附件分片上傳

項目需求由于文件服務器的限制&#xff0c;單次調用文件上傳接口上傳的附件的大小不能超過500MB&#xff0c;對于超過500MB的附件需要分片上傳程序示例private Boolean uploadFile(File uploadFile, String uploadUrl, List<Object> fileList) {final long CHUNK_SIZE 5…

PyTorch環境安裝

pytorch安裝 建議&#xff08;非常強烈的那種&#xff09;用Anaconda創建一個虛擬環境&#xff0c;用于運行安裝你的PyTorch conda create -n universal python3.9 1. 基礎認知 cuDNN&#xff08;CUDA Deep Neural Network library&#xff09;是 NVIDIA 開發的用于深度學習…

機場風云:AI 云廠商的暗戰,廣告大戰一觸即發

文 | 大力財經機場廣告牌背后&#xff0c;一場決定云計算未來格局的隱形戰爭已悄然打響。當你匆匆走過首都機場T3航站樓的通道&#xff0c;巨幅屏幕上“阿里云&#xff1a;開源的力量”與不遠處“百度智能云&#xff1a;AI落地領導者”的廣告交相輝映。它們精準鎖定著日均10萬的…

MLE-STAR:谷歌AI推出的機器學習工程新范式,一種搜索驅動、精準優化的智能代理

最近看到 Google AI 發布了一個叫 MLE-STAR&#xff08;Machine Learning Engineering via Search and Targeted Refinement&#xff09;的新系統&#xff0c;說實話&#xff0c;第一眼看完論文和相關介紹后&#xff0c;我是有點震撼的。這不只是一次簡單的“LLM 自動化”拼湊…

3-防火墻

防火墻 一 防火墻概述防火墻概述防火墻是一個位于內部網絡與外部網絡之間的安全系統&#xff08;網絡中不同區域之間&#xff09;&#xff0c;是按照一定的安全策略建立起來的硬件或軟件系統&#xff0c;用于流量控制的系統&#xff08;隔離&#xff09;&#xff0c;保護內部網…

python opencv 調用 海康威視工業相機(又全又細又簡潔)

1.準備工作 準備一個海康相機 下載MVS 和SDK 海康機器人-機器視覺-下載中心 2.python MVS示例 &#xff08;說明&#xff1a;MVS里有很多python示例&#xff0c;可以直接運行&#xff0c;但沒有用opencv&#xff09; 下載完MVS后&#xff0c;我們打開路徑安裝路徑 我的&#…

計算機基礎·linux系統

Finalshell 用于遠程操控vmware中的linux系統 獲取虛擬機的IP地址 ifconfig命令&#xff0c;重啟系統后IP地址可能會變化&#xff01;問題&#xff1a;vmware子系統沒有網絡連接 winRservices.msc啟動這些服務問題&#xff1a;配置正確但是finalshell連接失敗 更新子系統中的ss…

8.結構健康監測選自動化:實時數據 + 智能分析,遠超人工

第一次接觸結構健康自動化監測系統&#xff0c;感覺成本很高&#xff0c;比人工好在哪里&#xff1f; 人工檢測是依靠目測檢查或借助于便攜式儀器測量得到的信息&#xff0c;但是隨著整個行業的發展&#xff0c;傳統的人工檢測方法已經不能滿足檢測需求&#xff0c;從人工檢測到…

【慕伏白】Android Studio 配置國內鏡像源

文章目錄配置HTTP代理修改 gradle 鏡像地址修改 maven 鏡像源重新同步配置HTTP代理 進入File --> Settings --> Appearance & Behavior --> System Settings --> HTTP Proxy 勾選 Auto-detect proxy settings --> Automatic proxy configuration URL &…

Spring Cloud系列—LoadBalance負載均衡

上篇文章&#xff1a; Spring Cloud系列—Eureka服務注冊/發現https://blog.csdn.net/sniper_fandc/article/details/149937589?fromshareblogdetail&sharetypeblogdetail&sharerId149937589&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link …

如何使用 pnpm創建Vue 3 項目

? 一、什么是 pnpm&#xff1f; pnpm 是一種更快、更高效的 Node 包管理工具&#xff0c;替代 npm 或 yarn&#xff0c;具有&#xff1a; 更快的安裝速度更節省磁盤空間&#xff08;包復用&#xff09;嚴格的依賴管理二、使用 pnpm 創建 Vue 項目的完整流程 ? 第一步&#xf…

Vite vs. vue-cli 創建 Vue 3 項目的區別與使用場景

Vite vs. vue-cli 創建 Vue 3 項目的區別與使用場景 Vite 和 vue-cli 都是 Vue 官方推薦的腳手架工具&#xff0c;但它們的架構、構建方式和適用場景有所不同。以下是它們的對比&#xff1a;1. 核心區別對比項Vite (推薦&#x1f525;)vue-cli (傳統)構建工具基于 ESM Rollup基…