由于TeamViewer吃相越来越难看,只能自己动手了。使用frp的内网穿透功能来支持。

前言

frp的项目地址

这里可以参考使用官方的SSH配置,因为RDP也是用的TCP连接

原理:使用frp在服务器端进行流量的转发,和代理有点类似

服务器端配置

以下内容在服务器端操作

  • 从git上下载对应的压缩包(wget)

  • 解压,并编辑frps.ini文件,这是frp的服务端配置文件

    [common]
    bind_port = 7000
    token = token
    
    # 控制台的用户名
    dashboard_user = username
    # 控制台的密码
    dashboard_pwd = passwd
    # 控制台的端口
    dashboard_port = 7100
    
  • 启动(后台运行考虑用nohup):frps -c frps.ini

客户端配置

  • 同样的下载当前操作系统的frp压缩包

  • 解压,并编辑frpc.ini文件

    [common]
    server_addr = 服务器ip
    server_port = 服务器frpcs的bind_port端口
    
    # client的ui
    admin_addr = 127.0.0.1
    admin_port = 7100
    admin_user = username
    admin_pwd = passwd
    
    token = token
    
    # 启动阶段无网络时一直等待而不是直接退出
    login_fail_exit = false
    
    [**RDP-Name**]
    # RDP 是 TCP 协议的
    type = tcp
    # 本机 IP
    local_ip = 127.0.0.1
    # 远程桌面的默认端口
    local_port = 3389
    # 外网访问的端口,服务器端该端口也需要开启
    remote_port = 7001
    # 是否加密
    use_encryption = true
    # 是否压缩
    use_compression = true
    
  • 启动命令:frpc -c frpc.ini

连接

  • 打开RDP远程桌面连接工具(Windows 10自带)

  • 地址输入:frpc.iniserver_addr+remote_port,并提前输入好用户名,如下图

    远程连接

  • 之后就可以看到远程电脑的桌面了(后续弹出什么凭证啥的,都保持默认,点击OK就好了)

后台运行

使用winsw注册成windows的服务(自启,后台运行)

winsw/winsw

  • 下载对应的exe文件

    winsw

  • 这个应用需要有.NETCore框架,那些体积比较大的是自带了.NETCore框架,系统没有.NETCore的可以考虑下载那几个文件

  • 然后写一个xml的配置文件

    <service>
      <!-- ID of the service. It should be unique accross the Windows system -->
      <id>frp</id>
      <!-- Display name of the service -->
      <name>frp</name>
      <!-- Service description -->
      <description>frp client</description>
      <!-- 工作目录 -->
      <workingdirectory>frpc的工作目录</workingdirectory>
      <!-- Path to the executable, which should be started -->
      <executable>frpc</executable>
      <!-- exe的参数 -->
      <arguments>-c frpc.ini</arguments>
      <!-- 滚动日志记录 -->
      <!--
        OPTION: log
        Defines logging mode for logs produced by the executable.
        Supported modes:
          * append - Rust update the existing log
          * none - Do not save executable logs to the disk
          * reset - Wipe the log files on startup
          * roll - Roll logs based on size
          * roll-by-time - Roll logs based on time
          * rotate - Rotate logs based on size, (8 logs, 10MB each). This mode is deprecated, use "roll"
        Default mode: append
    
        Each mode has different settings. 
        See https://github.com/kohsuke/winsw/blob/master/doc/loggingAndErrorReporting.md for more details
      -->
      <log mode="roll"></log>
    </service>
    
  • 把刚才下载的exe文件和刚才编辑的xml文件重命名成相同的名字,后缀不变,比如:frpc-service.exefrpc-service.xml

  • 然后执行即可:frpc-service.exe install,弹出授权框,同意即可

  • 随后在windwos的服务上,能看到该服务

    frp-service

  • 运行:frpc-service.exe start,启动该服务

注意事项

  • 客户端需要保证一直启动
  • 网络环境要足够好
  • 有多个客户端时,每一台电脑要有不同的客户端服务名称
  • wiki
  • 文档