frp实现p2p远程连接桌面,非服务器中转
frp实现p2p远程连接桌面
此篇文章主要目的是解决无法使用微软的远程桌面,使用向日葵卡(没充钱)的要死要活的。重要的事情说3遍,得有个公网IP,公网IP,公网IP。这里推荐阿里云服务器购买地址「一年几十块钱」
什么是frp?
frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且
web 服务支持根据域名进行路由转发。frp 是一款跨平台的内网穿透工具,支持 Windows、macOS 与
Linux,它需要你有一台拥有固定公网 IP 的电脑,VPS 最好,然后就能愉快的进行内网穿透了。还支持
https,甚至可以用它进行小程序开发。
代理类型
类型 | 描述 |
---|---|
tcp | 单纯的 TCP 端口映射,服务端会根据不同的端口路由到不同的内网服务。 |
udp | 单纯的 UDP 端口映射,服务端会根据不同的端口路由到不同的内网服务。 |
http | 针对 HTTP 应用定制了一些额外的功能,例如修改 Host Header,增加鉴权。 |
https | 针对 HTTPS 应用定制了一些额外的功能。 |
stcp | 安全的 TCP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。 |
sudp | 安全的 UDP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。 |
xtcp | 点对点内网穿透代理,功能同 stcp,但是流量不需要经过服务器中转。 |
tcpmux | 支持服务端 TCP 端口的多路复用,通过同一个端口访问不同的内网服务。 |
使用工具
FRP下载地址,这里不详细介绍安装过程,只说如何启用。
因为点对点远程连接需要两个客户端都下载frp,如果是通过服务器中转的,只需要被远程方下载frp即可,这种受限于服务器网络。
服务器端配置(frp_0.37.1_linux_amd64)
frps.ini
[common]
bind_port = 7001 # 可自己定义设置
bind_udp_port = 7001 # 可自己定义设置,启动xtcp的关键,并不是能穿通所有网关
vhost_http_port = 8080 # http服务端口,开启后服务端完成通过域名访问部署于内网的 Web 服务部署,这里将 HTTP 访问端口设为 8080
vhost_https_port = 443 # https服务端口
token = 123456 # 自己设置
dashboard_port = 7500 # 自己设置
# dashboard 用户名密码,默认都为 admin
dashboard_user = admin
dashboard_pwd = admin
# 超时时间为秒,如果没有报错,可以不设置
heartbeat_timeout = 90
user_conn_timeout = 60
vhost_http_timeout = 90
客服端A【被远程的电脑】配置(frp_0.37.1_windows_amd64)
frpc.ini
[common]
server_addr = 公网IP
server_port = 7001
token = 123456 # 跟服务器的token一致
[rdp] # mstsc直接输入公网的IP和端口就能远程
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 3389
[p2p_rdp]
type = stcp
sk = xxx123
local_ip = 127.0.0.1
local_port = 3389
use_encryption = false
use_compression = false
[p2p_rdp_xtcp]
type = xtcp
sk = xxx123
local_ip = 127.0.0.1
local_port = 3389
use_encryption = false
use_compression = false
客服端B【远程电脑】配置(frp_0.37.1_windows_amd64)
[common]
server_addr = 公网IP
server_port = 7001
token = 123456 # 跟服务器的token一致
[p2p_rdp_visitor]
role = visitor
type = stcp
server_name = p2p_rdp
sk = xxx123
bind_addr = 127.0.0.1
bind_port = 10000
use_encryption = false
use_compression = false
[p2p_rdp_visitor2]
role = visitor
type = xtcp
server_name = p2p_rdp_xtcp
sk = xxx123
bind_addr = 127.0.0.1
bind_port = 10001
use_encryption = false
use_compression = false
如果以上都没有问题,则可以通过mstsc远程程序,输入127.0.0.1:10001并输入账号和密码进行远程登录。这种不受限于服务器的网络限制,可以进行大文件传输。
服务器启动程序命令,cd到解压目录执行 nohup ./frps -c frps.ini >/dev/null 2>&1 &
window服务器可以建立start.bat,内容为
frpc.exe -c frpc.ini