主要通過p2p技術來實現兩臺(也可以多臺)內網電腦一個異地組網,兩臺不同環境內網電腦無法直接訪問這里我們就需要使用p2p技術來實現異地組網。
什么是異地組網?
異地組網可以將分布在不同物理位置的節點連接起來,形成一個統一的網絡,使得這些節點可以像在同一個物理網絡中一樣進行通信和數據交換。
日常使用作用是什么?
日常無非就是異地遠程辦公,還有就是一些沒有后臺服務端的攝像頭實現遠程查看,NAS等。
frp是什么?
frp 是一個專注于內網穿透的高性能的反向代理應用,支持 TCP、UDP、HTTP、HTTPS 等多種協議,且支持 P2P 通信。可以將內網服務以安全、便捷的方式通過具有公網 IP 節點的中轉暴露到公網。
原理解釋:
比如A主機是湖南主機(沒有外網)要訪問在深圳B主機(沒有外網)A主機壓根就不知道B主機ip地址也根本無法訪問,這時候在搭建一個Q云服務器(它是有外網ip的)A主機先去問云服務器B主機地址等到Q服務器再去問B主機再反饋給A主機,兩個主機相互反饋建立通信不在依賴Q云服務器了,直到兩主機失去連接再次建立。
準備工作
A主機(windows 10):安裝frp
https://objects.githubusercontent.com/github-production-release-asset-2e65be/48378947/1b69a80a-b405-4e56-91a2-284345ac5011?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20240602%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240602T103352Z&X-Amz-Expires=300&X-Amz-Signature=6bd917b6cbdf030d541a926f3c6c7d6a83de12f3bdca389b5179816c80ac9a17&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=48378947&response-content-disposition=attachment%3B%20filename%3Dfrp_0.58.1_windows_amd64.zip&response-content-type=application%2Foctet-stream
B主機(windows 10:安裝frp
https://objects.githubusercontent.com/github-production-release-asset-2e65be/48378947/1b69a80a-b405-4e56-91a2-284345ac5011?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20240602%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240602T103352Z&X-Amz-Expires=300&X-Amz-Signature=6bd917b6cbdf030d541a926f3c6c7d6a83de12f3bdca389b5179816c80ac9a17&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=48378947&response-content-disposition=attachment%3B%20filename%3Dfrp_0.58.1_windows_amd64.zip&response-content-type=application%2Foctet-stream
Q云服務器(centos7):安裝frp(本來是準備使用家庭網絡開啟ipv6就不用購買一個便宜的云服務器了)
frp開源地址:https://github.com/fatedier/frp/releases
安裝frp
A主機:
1.下載(A主機與B主機也是一樣的下載方式):
進入開源地址:https://github.com/fatedier/frp/releases
找到frp_0.58.1_windows_amd64.zip 點擊下載
在 frpc.toml 文件中添加以下內容,確保設置了正確的服務器地址和端口,共享密鑰 以及要訪問的 P2P 代理的名稱:
serverAddr = "39.99.x.x" #改成你的Q云服務器ip
serverPort = 7000
auth.token = "demo123321" #密鑰 可改
loginFailExit = false
[[visitors]]
name = "visitor_a"
type = "stcp"
serverName = "desktop_visitor"
secretKey = "demo123321" #密鑰1 可改
bindPort = -1
transport.useCompression = true
[[visitors]]
name = "visitor"
type = "xtcp"
serverName = "visitor"
secretKey = "demo123321" #密鑰2 可改
bindAddr = "127.0.0.1"
bindPort = 23389
transport.useCompression = true
keepTunnelOpen = true
fallbackTo = "no"
fallbackTimeoutMs = 100
啟動:
輸入cmd:
在 frpc.toml 文件中添加以下內容,確保設置了正確的服務器地址和端口,共享密鑰 以及要訪問的 P2P 代理的名稱:serverAddr = "39.99.x.x" #改成你的Q云服務器ip
serverPort = 7000
auth.token = "demo123321" #密鑰 可改
loginFailExit = false
[[proxies]]
name = "desktop_b"
type = "stcp"
secretKey = "demo123321"
localIP = "127.0.0.1"
localPort = 3389 #你需要轉發本地端口
transport.useCompression = true
[[proxies]]
name = "desktop_b"
type = "xtcp"
secretKey = "demo123321"
localIP = "127.0.0.1"
localPort = 3389
transport.useCompression = true
如果配置文件報錯刪除注釋,utf-8編碼,使用好一點編輯器,不要使用文本編輯器打開。wget https://github.com/fatedier/frp/releases/download/v0.58.1/frp_0.58.1_linux_amd64.tar.gz
tar -zxvf frp_0.58.1_linux_amd64.tar.gz
進入frp_0.58.1_linux_amd64文件夾:cd frp_0.58.1_linux_amd64/
bindPort = 7000
auth.token = "demo123321"
這里以阿里云來設置,找到安全組再添加端口(7001,7000,3389,7500):
firewall-cmd --add-port=3389/tcp --add-port=7000/tcp --add-port=7001/udp --add-port=7500/tcp --zone=public --permanent
測試連接3389:
有些環境無法通過xtcp協議傳輸,需要使用stcp協議,理論來說A主機通過Q主機與B主機建立后流量不需要通過Q主機做轉發了,通過3389遠程桌面管理來看速度確實比只有Q云服務器1M寬帶速度提升不少。
該文章在 2024/6/8 23:37:27 編輯過