远程桌面解决方案

需要有公网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>
posted @ 2024-12-20 10:56  twfb  阅读(10)  评论(0编辑  收藏  举报