frp實現內網穿透極簡教程

frp實現內網穿透極簡教程

本文是內網穿透極簡教程,為求簡潔,我們不介紹為什么內網穿透也不介紹其原理,這里假設各位讀者都已經明確的知道自己的目的,本文僅介紹如何安裝配置 frp 實現內網穿透。

簡單來說,內網穿透就是實現將內網的端口轉發到公網,從而實現公網對內網資源的訪問。為此,我們需要一臺具有公網 IP 的 VPS 服務器(各 VPS 服務提供商如阿里云、騰訊云等均可),和一臺需要被穿透的內網設備(以下稱客戶端)。

frp安裝

直接去 github 發布頁面 下載壓縮包,客戶端和服務器都需要,按照各自的機器類型下載對應的壓縮包,然后解壓:

wget https://github.com/fatedier/frp/releases/download/v0.42.0/frp_0.42.0_linux_amd64.tar.gz
tar xf frp_0.42.0_linux_amd64.tar.gz

服務器端配置

注意:本節操作均在 VPS 服務器端

解壓完成后進入目錄,可以看到幾個可執行文件和 ini 配置文件:

cd frp_0.42.0_linux_amd64/
ls -l
-rw-r--r-- 1 1001  121    11358 Apr 22 11:42 LICENSE
-rwxr-xr-x 1 1001  121 10936320 Apr 22 11:38 frpc
-rw-r--r-- 1 1001  121      126 Apr 22 11:42 frpc.ini
-rw-r--r-- 1 1001  121    10814 Apr 22 11:42 frpc_full.ini
-rwxr-xr-x 1 1001  121 14016512 Apr 22 11:38 frps
-rw-r--r-- 1 1001  121      159 May  4 17:15 frps.ini
-rw-r--r-- 1 1001  121     5460 Apr 22 11:42 frps_full.ini
drwxr-xr-x 2 1001  121     4096 Apr 22 11:42 systemd

其中 frps, frps.inifprc, frpc.ini 是我們主要要用到的可執行文件和對應的配置文件,前兩者的 s 表示的是 server ,即服務器;而后兩者的 c 表示的是 client 客戶端,我們現在是在配置服務器端,自然是關注前者。

編輯 frps.ini

[common]
bind_port = 7000
dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 10080
vhost_https_port = 10443
  • bind_port 表示用于客戶端和服務端連接的端口,這個端口號我們之后在配置客戶端的時候要用到。
  • dashboard_port 是服務端儀表板的端口,若使用7500端口,在配置完成服務啟動后可以通過瀏覽器訪問 x.x.x.x:7500 (其中x.x.x.x為VPS的IP)查看frp服務運行信息。
  • token 是用于客戶端和服務端連接的口令,請自行設置并記錄,稍后會用到。
  • dashboard_userdashboard_pwd 表示打開儀表板頁面登錄的用戶名和密碼,自行設置即可。
  • vhost_http_portvhost_https_port 用于反向代理HTTP主機時使用,本文不涉及HTTP協議,因而照抄或者刪除這兩條均可。

沒有特殊需要的話端口按默認值配置即可,tokendashborad_userdashboard_password 幾項記號并保護好,后面要用。

還有一點要注意的是:確認你的 VPS 服務器是否開放了對應的端口,若未開放需要到服務提供商的控制臺開放。

配置完成之后嘗試運行:

./frps -c frps.ini

得到類似如下輸出,則說明配置基本成功:

2022/05/04 20:52:27 [I] [root.go:200] frps uses config file: frps.ini
2022/05/04 20:52:27 [I] [service.go:194] frps tcp listen on 0.0.0.0:7000
2022/05/04 20:52:27 [I] [service.go:237] http service listen on 0.0.0.0:10080
2022/05/04 20:52:27 [I] [service.go:252] https service listen on 0.0.0.0:10443
2022/05/04 20:52:27 [I] [service.go:293] Dashboard listen on 0.0.0.0:7500
2022/05/04 20:52:27 [I] [root.go:209] frps started successfully

我們可以去查看一下 dashboard,打開瀏覽器輸入 URL:xx.xxx.xxx.xx:7500 ,然后輸入我們剛才配置的用戶名和密碼即可進入,大概長這樣:

在這里插入圖片描述

這一步也沒有問題的話服務器端就配置成功了。

我們 Ctrl-C 終止掉剛才的程序,改為后臺運行,因為我們總是需要端口轉發程序一直運行在,但又不需要操作它,因此放在后臺,保存日志文件即可:

nohup ./frps -c frps.ini 2>&1 > frps.log &

執行上述命令,frp 服務將運行在后臺并將日志輸出到 frps.log ,退出當前 terminal 即可。

客戶端配置

注意:本節操作均在本地客戶端

還是下載對應的壓縮包并解壓,進入目錄,還是那些文件,我們現在是在客戶端 client ,因此,我們現在要關注的是 fprc, frpc.ini 這兩個文件。

編輯 frpc.ini

[common]
server_addr = xx.xxx.xxx.xx
server_port = 7000
token = 12345678[rdp]
type = tcp
local_ip = 127.0.0.1           
local_port = 3389
remote_port = 7001  [test]
type = tcp
local_ip = 0.0.0.0
local_port = 7100
remote_port = 7200[xxx]
type = tcp
local_ip = 0.0.0.0
local_port = 7300
remote_port = 7400

common 字段的 server_addr 為服務端公網 IP 地址。其他兩項 server_porttoken 就是我們在服務器端配置過的內容,保持一致即可。

其余的 rdpxxx 等字段就是用戶可以定義的規則,根據自己轉發的是什么服務自行命名即可

  • type 表示轉發的協議類型,如 TCP 和 UDP 。
  • local_port 是本地應用的端口號,填入該項服務在本機實際使用的端口號。
  • remote_port 是該項服務在服務端開放的端口號。

與服務器端類似,運行

./frpc -c frpc.ini

出現類似以下輸出說明配置成功,

2022/05/04 21:11:10 [I] [service.go:349] [ecc57bb476f85c28] login to server success, get run id [ecc57bb476f85c28], server udp port [0]
2022/05/04 21:11:10 [I] [proxy_manager.go:144] [ecc57bb476f85c28] proxy added: [test]
2022/05/04 21:11:10 [I] [control.go:181] [ecc57bb476f85c28] [test] start proxy success

同樣是放到后臺運行:

nohup ./frpc -c frpc.ini 2>&1 > frpc.log &

測試

我們用一個簡單的 flask 服務測試一下端口轉發的效果。

先準備一個 hello.py

from flask import Flask
app = Flask(__name__)@app.route('/')
def hello_world():return 'Hello, World!'

注意我們在配置的測試端口是:本地為 7100,遠程為 7200,因此這里我們應該將服務運行到本地的 7100 端口:

python -m flask run --host 0.0.0.0 -p 7100

frp 會幫我們轉發到遠程的 7200 端口(打碼的地方換成你的服務器 IP):

在這里插入圖片描述

并且,我們還可以再去 dashboard 中看一下:

在這里插入圖片描述

已經可以查看到我們的測試服務及其流量,即告測試成功。

若有錯誤或疑問,歡迎留言交流。

Ref:

https://sspai.com/post/52523

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

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

相關文章

圖像預處理之warpaffine與雙線性插值及其高性能實現

圖像預處理之warpaffine與雙線性插值及其高性能實現 視頻講解:https://www.bilibili.com/video/BV1ZU4y1A7EG 代碼Repo:https://github.com/shouxieai/tensorRT_Pro 本文為視頻講解的個人筆記。 warpaffine矩陣變換 對于坐標點的變換,我們通…

LeetCode-10 正則表達式匹配

LeetCode-10 正則表達式匹配 動態規劃 10. 正則表達式匹配 dp數組含義:dp[i][j]dp[i][j]dp[i][j] 表示 s[0:i?1]s[0:i-1]s[0:i?1] 能否被 p[0:j?1]p[0:j-1]p[0:j?1] 成功匹配。 狀態轉移方程 : 如果 s[i?1]p[j?1]s[i-1]p[j-1]s[i?1]p[j?1] …

shell if判斷和for循環常見寫法

shell if判斷和for循環常見寫法 轉自: Shell中for循環的幾個常用寫法 Shell中if 條件判斷總結 if常見寫法 一、if的基本語法: if [ command ];then符合該條件執行的語句 elif [ command ];then符合該條件執行的語句 else符合該條件執行的語句 fibash shell會按順序…

關于pytorch使用多個dataloader并使用zip和cycle來進行循環時出現的顯存泄漏的問題

關于pytorch使用多個dataloader并使用zip和cycle來進行循環時出現的顯存泄漏的問題 如果我們想要在 Pytorch 中同時迭代兩個 dataloader 來處理數據,會有兩種情況:一是我們按照較短的 dataloader 來迭代,長的 dataloader 超過的部分就丟棄掉…

neovim及coc.nvim自動補全初探

neovim及coc.nvim自動補全初探 安裝 # mac # 安裝 brew install neovim # 查看neovim安裝路徑 brew list nvim# ubuntu apt install neovim習慣了打開 vi/vim 的方式,可以用個 alias 在 ~/.zshrc 中設置一下: alias vi"nvim"插件 vim-plug…

sed 簡明教程

sed 簡明教程 轉自:https://coolshell.cn/articles/9104.html awk于1977年出生,今年36歲本命年,sed比awk大2-3歲,awk就像林妹妹,sed就是寶玉哥哥了。所以 林妹妹跳了個Topless,他的哥哥sed坐不住了&#xf…

awk 簡明教程

awk 簡明教程 轉自:https://coolshell.cn/articles/9070.html 有一些網友看了前兩天的《Linux下應該知道的技巧》希望我能教教他們用awk和sed,所以,出現了這篇文章。我估計這些80后的年輕朋友可能對awk/sed這類上古神器有點陌生了&#xff0c…

應該知道的LINUX技巧

應該知道的LINUX技巧 轉自:https://coolshell.cn/articles/8883.html 這篇文章來源于Quroa的一個問答《What are some time-saving tips that every Linux user should know?》—— Linux用戶有哪些應該知道的提高效率的技巧。我覺得挺好的,總結得比較好…

[深度][PyTorch] DDP系列第一篇:入門教程

[深度][PyTorch] DDP系列第一篇:入門教程 轉自:[原創][深度][PyTorch] DDP系列第一篇:入門教程 概覽 想要讓你的PyTorch神經網絡在多卡環境上跑得又快又好?那你definitely需要這一篇! No one knows DDP better than I…

[深度][PyTorch] DDP系列第二篇:實現原理與源代碼解析

[深度][PyTorch] DDP系列第二篇:實現原理與源代碼解析 轉自:https://zhuanlan.zhihu.com/p/187610959 概覽 想要讓你的PyTorch神經網絡在多卡環境上跑得又快又好?那你definitely需要這一篇! No one knows DDP better than I do! …

[深度][PyTorch] DDP系列第三篇:實戰與技巧

[深度][PyTorch] DDP系列第三篇:實戰與技巧 轉自:https://zhuanlan.zhihu.com/p/250471767 零. 概覽 想要讓你的PyTorch神經網絡在多卡環境上跑得又快又好?那你definitely需要這一篇! No one knows DDP better than I do! – – …

PIL、OpenCV中resize算子實現不同的問題

PIL、OpenCV中resize算子實現不同的問題 測試圖像:https://raw.githubusercontent.com/TropComplique/ssd-pytorch/master/images/dogs-and-cats.jpg (直接 wget 可獲得) 測試版本: opencv-python 4.4.0.46Pillow 8.0.1 測試代…

mac X11 XQuartz的安裝與使用

mac X11 XQuartz的安裝與使用 本地系統:MacOS 12.4 遠程主機系統:Ubuntu 18.04 命令說明 ssh命令 ssh 命令大家很熟悉了,這里僅介紹與 X11 forwarding 相關的幾個選項。 本部分譯自 ssh 命令手冊,可見 man ssh -X &#xf…

機器學習:系統設計與實現 分布式訓練

機器學習系統:設計與實現 分布式訓練 轉自:https://openmlsys.github.io/chapter_distributed_training/index.html 隨著機器學習的進一步發展,科學家們設計出更大型,更多功能的機器學習模型(例如說,GPT-3)…

Linux命令行及各常用工具代理設置

Linux命令行及各常用工具代理設置 命令行代理設置 1 通過命令行指定 直接為當前命令行設置代理 對當前終端的全部工具(apt、curl、wget、git 等全都有效)以下僅以 http 代理為例,如果是其他協議(如 socks 等)自行改…

VimScript 五分鐘入門(翻譯)

VimScript 五分鐘入門(翻譯) 轉自:https://zhuanlan.zhihu.com/p/37352209 譯注:折騰 Vim 當然要能看懂和改寫相關腳本,而中文資料匱乏,缺一個提綱挈領的教程。本文翻譯自 Andrew Scala 的 《Five Minute V…

C++多線程推理、生產者消費者模式封裝

C多線程推理、生產者消費者模式封裝 tensorRT從零起步邁向高性能工業級部署(就業導向) 課程筆記,講師講的不錯,可以去看原視頻支持下。 深度學習推理中的多線程知識概覽 本章介紹的多線程主要是指算法部署時所涉及的多線程內容&a…

在Python中調用C/C++:cython及pybind11

在Python中調用C/C:cython及pybind11 轉自:https://zhuanlan.zhihu.com/p/442935082 Python寫起來非常方便, 但面對大量for循環的時候, 執行速度有些捉急. 原因在于, python是一種動態類型語言, 在運行期間才去做數據類型檢查, 這樣效率就很低(尤其是大規…

Pytorch導出onnx模型,C++轉化為TensorRT并實現推理過程

Pytorch導出onnx模型,C轉化為TensorRT并實現推理過程 前言 本文為旨在實現整個Python導出PyTorch模型,C轉化為TensorRT并實現推理過程過程,只與模型推理,模型部署相關,不涉及模型訓練。為突出整個部署過程而非具體模…

從零Makefile落地算法大項目,完整案例教程

從零Makefile落地算法大項目,完整案例教程 轉自:從零Makefile落地算法大項目,完整案例教程 作者:手寫AI 前言 在這里,你能學到基于Makefile的正式大項目的使用方式和考慮,相信我,其實可以很簡單…