【Linux】frp內網穿透詳細教程(簡單易懂)

frp內網穿透詳細教程(簡單易懂)

frp是什么?

frp 是一款高性能的反向代理應用,專注于內網穿透。它支持多種協議,包括 TCP、UDP、HTTP、HTTPS 等,并且具備 P2P 通信功能。使用 frp,可以安全、便捷地將內網服務暴露到公網,通過擁有公網 IP 的節點進行中轉。

工作原理

frp 主要由兩個組件組成:客戶端(frpc) 和 服務端(frps)。通常情況下,服務端部署在具有公網 IP 地址的機器上,而客戶端部署在需要穿透的內網服務所在的機器上。由于內網服務缺乏公網 IP 地址,因此無法直接被非局域網內的用戶訪問。用戶通過訪問服務端的 frps,frp 負責根據請求的端口或其他信息將請求路由到相應的內網機器,從而實現通信。

準備工作

獲取公網IP:可以購買阿里云,騰訊云等服務器,便宜的即可。只需要獲取到公網ip。
內網IP:有一臺自己的服務器。

frp工具的使用

第一步:下載安裝包

這里我們用的是Ubuntu 20.04,首先在服務端(公網服務器)和客戶端(內網服務器)下載好對應的安裝包。

wget https://github.com/fatedier/frp/releases/download/v0.53.2/frp_0.53.2_linux_amd64.tar.gz# 解壓文件
tar -zxvf frp_0.53.2_linux_amd64.tar.gz

第二步:公網部署frps

在具有公網 IP 的機器上部署 frps,編輯 frps.toml 文件。以下是簡化的配置,其中設置了 frp 服務器用于接收客戶端連接的端口:

bindPort = 7000

第三步:內網部署frpc

在需要被訪問的內網機器上部署 frpc,編輯 frpc.toml 文件,假設 frps 所在服務器的公網 IP 地址為 x.x.x.x。以下是示例配置:

serverAddr = "x.x.x.x"
serverPort = 7000[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"(可自己修改)
localPort = 22
remotePort = 6000(自己修改)

localIP 和 localPort 配置為需要從公網訪問的內網服務的地址和端口。
remotePort 表示在 frp 服務端監聽的端口,訪問此端口的流量將被轉發到本地服務的相應端口。

第四步:啟動frps和frpc

先通過 ./frps -c ./frps.toml 啟動服務端,再通過 ./frpc -c ./frpc.toml 啟動客戶端。

連接成功后會有success字樣。

注:啟動成功后,記得用nohup命令掛起,讓其在后臺運行

第五步:通過ssh訪問內網服務器

使用以下命令通過 SSH 訪問內網機器,假設用戶名為 test(test修改為自己服務器的用戶名):

ssh -o Port=6000 test@x.x.x.x

frp 將請求發送到 x.x.x.x:6000 的流量轉發到內網機器的 22 端口。

那我不小心重啟或者關機了,怎么辦?

接下來我們使用 systemd 來管理 frp 服務,控制 frps 服務端/frpc客戶端的啟動、停止、配置后臺運行以及開機自啟動。

使用systemd

安裝systemd(一般都有,可忽略)

如果您的 Linux 服務器上尚未安裝 systemd,可以使用包管理器如 yum(適用于 CentOS/RHEL)或 apt(適用于 Debian/Ubuntu)來安裝它:

# 使用 yum 安裝 systemd(CentOS/RHEL)
yum install systemd# 使用 apt 安裝 systemd(Debian/Ubuntu)
apt install systemd

創建服務端frps.service文件

使用文本編輯器 (如 vim) 在 /etc/systemd/system 目錄下創建一個 frps.service 文件,用于配置 frps 服務。

sudo vim /etc/systemd/system/frps.service

寫入內容

[Unit]
# 服務名稱,可自定義
Description = frp server
After = network.target syslog.target
Wants = network.target[Service]
Type = simple
# 啟動frps的命令,需修改為您的frps的安裝路徑
ExecStart = /path/to/frps -c /path/to/frps.toml[Install]
WantedBy = multi-user.target

創建客戶端frpc.service文件

使用文本編輯器 (如 vim) 在 /etc/systemd/system 目錄下創建一個 frpc.service 文件,用于配置 frpc 服務。

寫入內容

[Unit]
# 服務名稱,可自定義
Description = frp client
After = network.target syslog.target
Wants = network.target[Service]
Type = simple
# 啟動frpc的命令,需修改為您的frpc的安裝路徑
ExecStart = /path/to/frps -c /path/to/frpc.toml[Install]
WantedBy = multi-user.target

使用systemd命令管理frp服務(frps/frpc)

如果在服務端我們就啟動frps,在客戶端我們就啟動frpc。

# 啟動frp
sudo systemctl start frps/frpc
# 停止frp
sudo systemctl stop frps/frpc
# 重啟frp
sudo systemctl restart frps/frpc
# 查看frp狀態
sudo systemctl status frps/frpc

設置frps/frpc開機自啟動

sudo systemctl enable frps/frpc

通過遵循上述步驟,您可以輕松地使用 systemd 來管理 frp 服務,實現啟動、停止、自動運行和開機自啟動。確保替換路徑和配置文件名稱以匹配您的實際安裝。

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

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

相關文章

適配華為“純血鴻蒙”,抖音開始招聘相關人才

目前,字節跳動上線了“大前端高級開發工程師”一職,開始招聘鴻蒙人才。 根據職位描述,該崗位負責抖音大前端基礎工程與架構設計,以及抖音大前端基礎設施建設。 該職位需要有前端工程化經驗,熟悉JavaScript/TypeScrip…

關于BT站

BT站,全稱BitTorrent站點,是一種基于BitTorrent協議的P2P(點對點)文件共享網站。BitTorrent是一種分布式文件共享協議,允許用戶直接在彼此之間傳輸文件,而不需要依賴于中央服務器。BT站提供種子文件&#x…

斐波那契數列模型---使用最小花費爬樓梯

746. 使用最小花費爬樓梯 - 力扣(LeetCode) 1、狀態表示: 題目意思即:cost[i]代表從第i層向上爬1階或者2階,需要花費多少力氣。如cost[0],代表從第0階爬到第1階或者第2階需要cost[0]的力氣。 一共有cost.…

springboot/ssm學院個人信息管理系統Java高校課程作業管理系統web

springboot/ssm學院個人信息管理系統Java高校課程作業管理系統web 基于springboot(可改ssm)vue項目 開發語言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服務器:tomcat 數據庫&#xf…

編寫高質量Python (第35條) 不要通過 throw 變換生成器狀態

第 35 條 不要通過 throw 變換生成器狀態 ? 除 yield from 表達式(參見 第 33 條) 與 send 方法(參見 第 34 條)外,生成器還有一個高級功能,就是可以把調用者通過 throw 方法傳過來的 Exception 實例重新拋出。這個 throw 方法用…

Vue 3 中的 Teleport 特性詳解

引言 在 Vue 3 中,引入了一個名為 Teleport 的新特性。這個特性允許開發者將組件的子組件“傳送”到 DOM 中的任意位置,而不僅僅是它們的直接父級內部。這一功能在處理如模態框、彈出菜單、提示框等需要從其原始位置在視覺上移動到其他地方的用戶界面元…

Spring Boot與Spring Boot MVC:構建現代化Web應用的利器

Spring Boot與Spring Boot MVC:構建現代化Web應用的利器 在當今的軟件開發領域,特別是在Java生態系統中,Spring框架已經成為構建企業級應用程序的首選。而在Spring的眾多子項目中,Spring Boot和Spring MVC是兩個非常重要的組成部…

C++_數據類型_字符串型

作用 用于表示一串字符 兩種風格 C風格字符串&#xff1a;char 變量名[] "字符串值” 示例 注意 C風格的字符串要用雙括號括起來 C風格字符串&#xff1a;string 變量名 "字符串值” 注意 用C風格字符串的時候&#xff0c;要包含這個頭文件#include <st…

PostgreSQL常用SQL語句

文章目錄 PostgreSQL常用SQL語句免密交互增刪改查備份恢復數據遷移用戶管理權限管理進程管理查詢優化PostgreSQL常用SQL語句 PostgreSQL部署,參見PostgreSQL部署與配置 免密交互 命令行執行SQL語句或備份、恢復時,有以下兩種方式 1.交互式

【比較mybatis、lazy、sqltoy、lambda、操作數據 】操作批量新增、分頁查詢【一】

orm框架使用Lambda性能比較 環境&#xff1a; idea jdk17 spring boot 3.0.7 mysql 8.0測試條件常規對象 orm 框架是否支持xml是否支持 Lambda對比版本mybatis????3.5.4sqltoy????5.2.98lazy????1.2.3-JDK17 數據庫表(含有唯一性索引s_u) CREATE TABLE sys_u…

吳恩達機器學習-可選實驗室-梯度下降-Gradient Descent for Linear Regression

文章目錄 目標工具問題陳述計算損失梯度下降總結執行梯度下降梯度下降法成本與梯度下降的迭代預測繪制祝賀 目標 在本實驗中&#xff0c;你將:使用梯度下降自動化優化w和b的過程 工具 在本實驗中&#xff0c;我們將使用: NumPy&#xff0c;一個流行的科學計算庫Matplotlib&…

【茶話數據結構】查找最短路徑——Dijkstra算法詳解(保姆式詳細圖解,步步緊逼,保你學會)

&#x1f4af; 博客內容&#xff1a;【茶話數據結構】查找最短路徑——Dijkstra算法詳解 &#x1f600; 作??者&#xff1a;陳大大陳 &#x1f989;所屬專欄&#xff1a;數據結構筆記 &#x1f680; 個人簡介&#xff1a;一個正在努力學技術的準前端&#xff0c;專注基礎和實…

【學習心得】為Django項目創建專用MySQL用戶并賦予權限

一、問題描述 也許你在本地開發Django項目的時候不會關心&#xff0c;項目A所用的MySQL數據庫能否被項目B訪問。但若你使用的公司服務器or學校服務器&#xff0c;這種情況下很多人共用一個MySQL&#xff0c;你就會擔心別人或別的項目胡亂訪問你正在開發的項目所使用的數據庫。這…

算法D33 | 貪心算法3 | 1005.K次取反后最大化的數組和 134. 加油站 135. 分發糖果

1005.K次取反后最大化的數組和 本題簡單一些&#xff0c;估計大家不用想著貪心 &#xff0c;用自己直覺也會有思路。 代碼隨想錄 Python: class Solution:def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:nums.sort(keylambda x: abs(x), reverseT…

【python】遵守 robots.txt 規則的數據爬蟲程序

程序1 編寫一個遵守 robots.txt 規則的數據爬蟲程序涉及到多個步驟&#xff0c;包括請求網頁、解析 robots.txt 文件、掃描網頁內容、存儲數據以及處理異常。由于編程語言眾多&#xff0c;且每種語言編寫爬蟲程序的方式可能有所不同&#xff0c;以下將使用 Python 語言舉例&am…

【論文】A Survey of Monte Carlo Tree Search Methods閱讀筆記

本文主要是將有關蒙特卡洛樹搜索的文獻&#xff08;2011年之前&#xff09;進行歸納&#xff0c;概述了核心算法的推導&#xff0c;給出了已經提出的許多變化和改進的一些結構&#xff0c;并總結了MCTS方法已經應用于的博弈和其他領域的結果。 蒙特卡洛樹搜索是一種通過在決策…

Redis在中國火爆,為何MongoDB更受歡迎國外?

一、概念 Redis Redis&#xff08;Remote Dictionary Server&#xff09;是一個使用ANSI C編寫的開源、支持網絡、基于內存、分布式、可選持久性的鍵值對存儲數據庫。Redis是由Salvatore Sanfilippo于2009年啟動開發的&#xff0c;首個版本于同年5月發布。 MongoDB MongoDB…

C++練手題

第 1 題 【 問答題 】 ? 紅與黑 有一間長方形的房子&#xff0c; 地上鋪了紅色、 黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上&#xff0c; 只能向相鄰的黑色瓷磚移動。 請寫一個程序&#xff0c; 計算你總共能夠到達多少塊黑色的瓷磚。 時間限制&#xff1a; 1000…

基于R語言地理加權回歸、主成份分析、判別分析等空間異質性數據分析

在自然和社會科學領域有大量與地理或空間有關的數據&#xff0c;這一類數據一般具有嚴重的空間異質性&#xff0c;而通常的統計學方法并不能處理空間異質性&#xff0c;因而對此類型的數據無能為力。以地理加權回歸為基礎的一系列方法&#xff1a;經典地理加權回歸&#xff0c;…