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 | frp (gofrp.org)

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


文章作者: keney
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 keney !
评论
  目录