主要通过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 编辑过