frp实现p2p远程连接桌面
背景
国内服务器贵,并且宽带越高越贵。在连接一个远程桌面的时候就可能很卡了。而且你想使用国外vps时,连接的时候延迟太高,连接也很卡。想节省服务器带宽或者服务器带宽不理想,由此frp 使用 p2p 模式,点对点穿透,可节约服务器带宽。
对等式网络(peer-to-peer, 简称P2P),又称点对点技术,是无中心服务器、依靠用户群(peers)交换信息的互联网体系,它的作用在于,减低以往网路传输中的节点,以降低资料遗失的风险。
优点:仅少量占用服务器带宽,占用的带宽可忽略不计,传输大文件利器!
准备工作
安装教程参考我的另外一篇教程:frp实现远程桌面连接
注意:上面的操作能实现,下面的配置操作就基本简单了。
下载frp安装包(frp_0.51.2_windows_386)、一台有公网ip的服务器
实现p2p远程连接,需要两台电脑都安装和配置好客户端
配置
先了解 被访问端、访问端、服务端
被访问端:win10用户a
访问端:win10用户b
服务端:服务器(这里使用的是centos7)
为了兼顾安全和兼容,所以这里使用stcp代理windows电脑的远程桌面(RDP,端口号3389)
被访问端(客户端a)配置
frpc.ini
[common]
server_addr = 服务器ip地址(公网ip地址)
server_port = 7000
authentication_method = token
token = abc123123
# mstsc直接输入公网的IP和端口就能远程
[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 7002
[p2p_rdp]
type = stcp
sk = cue121212
local_ip = 127.0.0.1
local_port = 3389
use_encryption = false
use_compression = false
[p2p_rdp_xtcp]
type = xtcp
sk = cue121212
local_ip = 127.0.0.1
local_port = 3389
use_encryption = false
use_compression = false
服务端配置
frps.ini
[common]
# 服务端端口
bind_port = 7000
binf_addr = 0.0.0.0
bind_udp_port = 7000
authentication_method = token
# 认证Token的值包含字母大小写数字等
token = abc123123
# 可视化面板
dashboard_user = admin
# Dashboard密码
dashboard_pwd = 123456
dashboard_port = 7500
# 超时时间为秒,如果没有报错,可以不设置
heartbeat_timeout = 90
user_conn_timeout = 60
vhost_http_timeout = 90
tcp_mux = true
# 日志文件地址
log_file = /root/frp/log/frps.log
# 日志等级,分为trace, debug, info, warn, error
log_level = info
# 日志文件保留天数,我保留5天
log_max_days = 5
访问端(客户端b)配置
frpc.ini
[common]
server_addr = 服务器ip地址(公网ip地址)
server_port = 7000
authentication_method = token
token = abc123123
[p2p_rdp_visitor]
role = visitor
type = stcp
server_name = p2p_rdp
sk = cue121212
bind_addr = 127.0.0.1
bind_port = 9090
use_encryption = false
use_compression = false
[p2p_rdp_visitor2]
role = visitor
type = xtcp
server_name = p2p_rdp_xtcp
sk = cue121212
bind_addr = 127.0.0.1
bind_port = 9091
use_encryption = false
use_compression = false
win客户端后台运行及开机自启
frpc运行时始终有一个命令行窗口运行在前台,影响美观,我们可以使用一个批处理文件来将其运行在后台,而且可以双击执行,每次打开frpc不用再自己输命令了。
在任何一个目录下新建一个文本文件并将其重命名为“frp.bat”,编辑,粘贴如下内容并保存。
frp.bat
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&
:begin
REM
cd C:\frp
frpc -c frpc.ini
exit
将cd后的路径更改为你的frpc实际存放的目录
win10开机自启frp 简单操作:win+R 输入 "shell:startup" , 进入到开机自启的位置,然后将上述配置好的 frp.bat 文件的快捷方式复制到开机自启的位置。
注意:之后直接运行这个 .bat 文件即可启动frpc并隐藏窗口(可在任务管理器中退出)。
至于开机启动,把这个 .bat 文件直接扔进Windows的开机启动文件夹就好了 )
客户端配置完成,之后就是你自己根据需要在frpc.ini后追加规则即可。强烈建议你在使用frp直接测试内网穿透前,先在局域网内测试好相关功能的正常使用,并配置好可能会影响的Windows防火墙等内容,在内网调试通过后再使用frp进行内网穿透测试。
连接远程桌面
通过 远程桌面连接(mstsc远程程序),输入127.0.0.1:9091 并输入账号和密码进行远程登录。这种不受限于服务器的网络限制,可以进行大文件传输。
远程桌面连接怎么打开?直接win+Q,输入远程桌面连接,点击即可打开,然后输入地址、账号、密码。
效果:
配置说明
XTCP 的配置方式和 STCP 很类似。但是会采用 P2P 的方式进行打洞穿透,如果成功,后续的流量将不会经过 frps,而是直接通信,不再受到 frps 所在服务器的带宽限制。
由于打洞成功率取决于所处网络的 NAT 类型,所以 XTCP 的可用性和稳定性无法保证。在需要可靠连接的情况下,建议使用 STCP 替代。
当 visitor 配置了
keep_tunnel_open = true
时,frpc 会定期检测隧道是否打开,如果没有,则会尝试打洞建立隧道,这样可以始终保持隧道打开,在需要连接对端服务时,可以避免延迟。默认情况下,visitor 会在接收到用户连接后尝试打洞,如果打洞失败,可以尝试多次建立连接,程序会尝试其他的打洞策略,有可能在多次重试后成功打洞。一旦打洞成功,后续新增连接不必重复打洞,而是可以复用隧道。
自定义配置:服务端配置 | frp (gofrp.org)
个人具体配置:frp-p2p配置说明
附件
扩展资料:
frp udp p2p打洞内网穿透net,xtcp点对点直连win远程桌面,速度超快的高性能内网穿透 https://imold.wang/technology/computer/420.html/2/
frp实现p2p远程连接桌面: https://www.2280129.xyz/article/000040/frp.html
frp实现p2p远程连接桌面,非服务器中转: https://blog.csdn.net/Asachen/article/details/120845923