远程桌面解决方案
需要有公网IP的服务器
- 自建FRP服务器TCP: 丝滑且稳定
- 自建FRP服务器P2P + 向日葵: 丝滑且稳定
不需要有公网IP的服务器
- Solopace.Gem:丝滑且稳定, 一台机器远程, 一台机器受控, 没有多主控机器推荐使用
- 向日葵: 稳定但卡, 推荐安装作为后盾, 可结合其他工具使用
- ngrok.cc: 还没用
- ngrok.cc + 自建FRP P2P: 丝滑但不稳定, 偶尔莫名掉线
不需要有公网IP的服务器解决方案
- 单受控单主控:Solopace.Gem + 向日葵容错
- 单受控多主控:常用主控机器使用Solopace.Gem, 不常用主控使用ngrok.cc, 均安装向日葵容错
自建FRP服务器TCP配置
FRP配置:
server.toml
: FRP服务器, Win:D:/frps.exe -c D:/server.toml
, Linux:/root/frps -c server.toml
[common]
#自行设置,所有配置文件token保持一致
token = MY_TOKEN
#服务监听TCP端口, 需要配置防火墙
bind_port = 7000
#服务监听UDP端口
bind_udp_port = 7000
#服务网页端口
dashboard_port = 7500
#管理员
dashboard_user = admin
#管理员密码
dashboard_pwd = admin
# 超时时间为秒,如果没有报错,可以不设置
heartbeat_timeout = 90
user_conn_timeout = 60
tcp_mux = true
# 日志等级,分为trace, debug, info, warn, error
log_level = info
# 日志文件保留天数,我保留5天
log_max_days = 5
client.toml
: 受控, Win:D:/frpc.exe -c D:/client.toml
[common]
# 这里是客户端配置,server_addr后写本客户端要连接的服务器的IP地址,默认是0.0.0.0
server_addr = 服务器地址
server_port = 服务器端口
#自行设置,所有配置文件token保持一致
token = MY_TOKEN
# 启用 TLS 协议加密连接
tls_enable = true
[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
# 可自行配置通过服务器哪个端口进行远程, 如果希望通过`mstsc /v:服务器地址或域名`访问需要配置服务器3389端口,别忘了防火墙
remote_port = 3389
自建FRP服务器TCP+P2P配置
FRP配置:
server.toml
: FRP服务器, Win:D:/frps.exe -c D:/server.toml
, Linux:/root/frps -c server.toml
[common]
#自行设置,所有配置文件token保持一致
token = MY_TOKEN
#服务监听TCP端口, 需要配置防火墙
bind_port = 7000
#服务监听UDP端口
bind_udp_port = 7000
#服务网页端口
dashboard_port = 7500
#管理员
dashboard_user = admin
#管理员密码
dashboard_pwd = admin
# 超时时间为秒,如果没有报错,可以不设置
heartbeat_timeout = 90
user_conn_timeout = 60
tcp_mux = true
# 日志等级,分为trace, debug, info, warn, error
log_level = info
# 日志文件保留天数,我保留5天
log_max_days = 5
client_host.toml
: 受控, Win:D:/frpc.exe -c D:/client_host.toml
[common]
# 这里是客户端配置,server_addr后写本客户端要连接的服务器的IP地址,默认是0.0.0.0
server_addr = 服务器地址
server_port = 服务器端口
#自行设置,所有配置文件token保持一致
token = MY_TOKEN
# 启用 TLS 协议加密连接
tls_enable = true
[p2p_rdp]
type = xtcp
role = server
# 自行设置, 受控主控sk保持一致
sk = MY_SK
local_ip = 127.0.0.1
local_port = 3389
[tcp_rdp]
type = stcp
role = server
# 自行设置, 受控主控sk保持一致
sk = MY_SK
local_ip = 127.0.0.1
local_port = 3389
client_visitor.toml
:主控, Win:D:/frpc.exe -c D:/client_visitor.toml
[common]
server_addr = 服务器地址
server_port = 服务器端口
#自行设置,所有配置文件token保持一致
token = MY_TOKEN
tls_enable = true
[p2p_rdp_visitor]
type = xtcp
role = visitor
server_name = p2p_rdp
# 自行设置, 受控主控sk保持一致
sk = MY_SK
bind_addr = 127.0.0.1
# 可通过mstsc /v:127.0.0.1连接
bind_port = 3389
[tcp_rdp_visitor]
type = stcp
role = visitor
server_name = tcp_rdp
# 自行设置, 受控主控sk保持一致
sk = MY_SK
bind_addr = 127.0.0.1
# 可通过mstsc /v:127.0.0.1:3390连接
bind_port = 3390
ngrok.cc + 自建FRP P2P
就是把服务器地址和端口写成给的域名和端口,使用ngrok.cc提供的穿透做frp 服务器, 使用p2p避免限速, FRP配置参考"自建FRP服务器TCP+P2P配置"
开机自启
Linux开机自启示例:
$ crontab -e
添加这一条: @reboot /root/frp/server/run
run文件内容: /root/frp/server/frps -c /root/frp/server/server.toml
Windows开机自启示例:
复制以下内容保存为FRP.xml
,打开计划和任务管理器导入, 导入之后,选择你的用户, 编辑触发和动作为你的配置
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2024-05-01T18:49:23.3088992</Date>
<Author>XXXX\x</Author>
<URI>\FRP</URI>
</RegistrationInfo>
<Triggers>
<BootTrigger>
<Enabled>true</Enabled>
<Delay>PT30S</Delay>
</BootTrigger>
<CalendarTrigger>
<StartBoundary>2024-05-04T08:30:30</StartBoundary>
<Enabled>true</Enabled>
<ScheduleByDay>
<DaysInterval>1</DaysInterval>
</ScheduleByDay>
</CalendarTrigger>
<LogonTrigger>
<Enabled>true</Enabled>
</LogonTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>S</UserId>
<LogonType>Password</LogonType>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
<AllowHardTerminate>false</AllowHardTerminate>
<StartWhenAvailable>true</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>true</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<WakeToRun>true</WakeToRun>
<ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
<Priority>7</Priority>
<RestartOnFailure>
<Interval>PT1M</Interval>
<Count>3</Count>
</RestartOnFailure>
</Settings>
<Actions Context="Author">
<Exec>
<Command>D:\Frp\frpc.exe</Command>
<Arguments>-c D:\Frp\client_host.toml</Arguments>
</Exec>
</Actions>
</Task>