前言
在了解frp的p2p功能之前,建议去看看我之前发的文章Windows搭建frpc内网穿透,1panel面板部署frps服务端-CSDN博客
目录
P2P 模式使用场景
1. 远程桌面访问
- 在家访问办公电脑
- P2P 直连,速度快,延迟低
- 适合远程办公
2. 大文件传输
- 两地之间传输大文件
- 避免服务器中转
- 充分利用带宽
P2P模式和普通NAT转发区别
做一个简单的类比,
NAT转发就像:
快递员(服务器)在两个人(客户端)之间传递包裹(数据),所有包裹都要经过快递员快递员会很累(服务器压力大),送货时间更长(延迟高)
P2P模式就像:
快递员只负责告诉两个人对方的地址,然后,两个人直接见面交换包裹,快递员轻松了(服务器压力小),交换更快(延迟低),但有时候可能找不到对方(NAT限制)
客户端A和客户端B就像:
客户端A就是卖家,客户端B就是买家,买家要去向卖家拿包裹(数据)
环境需求
- 服务端:Linux服务器
- 两个客户端:Windows操作系统,Mac系统,linux系统
- 一个可用的公网IP或域名
一、服务端配置(Linux)
可以参考我上一篇文章的部署过程:Windows搭建frpc内网穿透,1panel面板部署frps服务端-CSDN博客
二、客户端A配置(windows为例)
这个客户端A是指我们需要通过P2P访问的机器,这台机器要求就是开放对应端口。
例如:windows系统的远程桌面服务3389端口,linux系统的22端口,或者我们部署网页等其他服务的开放端口。
2.1下载好对应系统的frp压缩包
github地址:Release v0.61.0 · fatedier/frp (github.com)
2.2配置frpc客户端
- 在解压目录中找到frpc.toml文件
- 编辑配置文件,示例如下:
-
serverAddr = "x.x.x.x" #frp服务器ip地址 serverPort = 7000 auth.method = "token" auth.token = "your_token" #服务器token密钥 [[proxies]] name = "p2p_ssh" type = "xtcp" #模式 secretKey = "abcdefg" #P2P密钥 localIP = "127.0.0.1" localPort = 3389 #被访问端口
2.3启动客户端A
进入cmd在frp所在文件夹目录下输入以下命令启用客户端:
./frpc -c ./frpc.toml
三、客户端B配置(Windows为例)
这个客户端B是指:我们将用这台电脑去访问客户端A所在机器实现服务的访问。
3.1配置客户端B
- 在解压目录中找到frpc.toml文件
- 编辑配置文件,示例如下:
# frpc.toml serverAddr = "x.x.x.x" #服务端ip serverPort = 7000 auth.method = "token" auth.token = "your_token" [[visitors]] name = "p2p_ssh_visitor" type = "xtcp" #模式 serverName = "p2p_ssh" secretKey = "abcdefg" #P2P密钥 bindAddr = "127.0.0.1" bindPort = 7001 #本机开放端口
开放对应端口
3.2启动客户端B
进入cmd在frp所在文件夹目录下输入以下命令启用客户端:
./frpc -c ./frpc.toml
3.3访问服务
我们以Windows系统远程桌面为例
打开远程桌面,地址为 127.0.0.1:xxxx “xxxx”为你设置开放端口号以上文为例,我们将输入127.0.0.1:7001
备注
如果 xtcp 模式不起作用,可以把客户端AB的frpc.toml中的模式修改为 stcp。
其他客户机版本可以自行尝试,本文将不在举例,配置文件修改基本相同只是文件后缀不同。
参考资料
- frp官方文档:https://github.com/fatedier/frp