盒子
盒子
文章目录
  1. 应用场景:
  2. 内网穿透的方案主要两种:
  3. 我们开始部署 frp 吧!
    1. 获取对应版本的 frp in github
    2. 配置服务端
    3. 配置客户端
      1. Win PC
      2. 路由器 openwrt
  4. 安全建议:

内网穿透 与 安全远程

内网穿透,就是把内网机器端口映射到公网,便于远程访问。

应用场景:

  • 直接在公网演示本地 demo;
  • 出门在外远程自己的电脑;
  • 下班路上控制路由远程下载;
  • ……

内网穿透的方案主要两种:

  1. 花生壳等 第三方服务:免费凑合用,花钱买速度;
  2. ngrok、frp 等开源自建服务:简单部署,一劳永逸。

对速度要求不高的情况下,花生壳是不错的选择。ngrok 也有免费的限流服务。
测试之后,我选了自己搭建 frp 。
具体原因:

  • 速度快,远程桌面清晰流畅;
  • 比 ngrok 部署简单、无依赖;
  • 客户端、服务端 都很小,不怎么占资源。

我们开始部署 frp 吧!

  1. 获取对应版本的 frp in github

    1
    2
    3
    4
    5
    6
    cd /usr/local/
    # 例:服务器系统 Ubuntu 64位
    wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz
    #妥善解压、配置文件路径
    tar -xvf frp_0.21.0_linux_amd64.tar.gz
    mv frp_0.21.0_linux_amd64 frp
  2. 配置服务端

    1
    2
    3
    4
    #frps     服务端程序
    #frps.ini 服务端配置文件
    #frpc 客户端程序(此处 frpc 仅用于amd64 linux 系统,下文 客户端 需单独下载。)
    #frpc.ini 客户端配置文件

    vim frps.ini

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    [common]
    #frp服务器监听地址,如果是IPV6地址必须用中括号包围
    bind_addr = 0.0.0.0
    #frp服务器监听端口
    bind_port = 7000

    #kcp的udp监听端口,如果不设那就不启用
    #kcp_bind_port = 7000
    #指定使用的协议,默认tcp,可选kcp
    #protocol = kcp

    #如果要使用vitual host,就必须设置
    vhost_http_port = 8080
    #vhost_https_port = 443

    #Web后台监听端口
    dashboard_port = 7500

    #Web后台的用户名和密码
    dashboard_user = abc
    dashboard_pwd = 123

    #Web后台的静态资源目录,调试用的,一般不设
    #assets_dir = ./static

    #日志输出,可以设置为具体的日志文件或者console
    log_file = /var/log/frps.log

    #日志记录等级,有trace, debug, info, warn, error
    log_level = info
    #日志保留时间
    log_max_days = 3

    #启用特权模式,从v0.10.0版本开始默认启用特权模式,且目前只能使用特权模式
    #privilege_mode = true

    #特权模式Token,请尽量长点且复杂
    privilege_token = 123

    #特权模式允许分配的端口范围
    privilege_allow_ports = 2000-3000,3001,3003,4000-50000

    #心跳超时,不用改
    #heartbeat_timeout = 90

    #每个代理可以设置的连接池上限
    #max_pool_count = 5

    #认证超时时间,一般不用改
    #authentication_timeout = 900

    #如果配置了这个,当你的模式为http或https时,就能设置子域名subdomain
    #subdomain_host = frps.com

    #是否启用tcp多路复用,默认就是true,不用管
    #tcp_mux = true

    整理好 frps.ini 配置文件,即可先启动服务端:

    1
    2
    screen -S frp #或者 nohup 挂后台执行 nohup ./frps -c frps.ini &
    ./frps -c frps.ini
  3. 配置客户端

    • Win PC
      1
      2
      3
      # 例:win10 64 位
      # https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_windows_amd64.zip
      下载==>解压==>配置目录

      编辑 frpc.ini

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      [common]
      #frp服务器地址
      server_addr = 服务器地址
      #frp服务器端口
      server_port = 7000
      #特权模式Token
      privilege_token = 123
      #转发desktop 远程桌面端口
      [desktop]
      type = tcp
      #可以指定为其它IP,默认是本地
      #local_ip = 127.0.0.1
      local_port = 3389
      remote_port = 1234
      #启用加密
      #use_encryption = true
      #启用压缩
      #use_compression = true

      启动win客户端:

      1
      frpc.exe -c frpc.ini

      然后,便可通过win自带远程桌面,控制远在异地或者床下的PC了。

    • 路由器 openwrt
      1
      2
      3
      4
      cd /mnt/sda1/ # !! 切换到外置存储,地方够大
      mkdir frp
      cd frp
      wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_mips.tar.gz

      路由器版本依照 硬件和固件版本确定,笔者 路由 型号 DW33D 、固件 LEDE Reboot 17.01.4 r3560-79f57e422d / LuCI lede-17.01 branch (git-17.290.79498-d3f0685)

      vi frp/frpc.ini

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      [common]
      #frp服务器地址
      server_addr = 服务器地址
      #frp服务器端口
      server_port = 7000
      #特权模式Token
      privilege_token = 123
      #转发desktop
      [ssh]
      type = tcp
      #可以指定为其它IP,默认是本地
      #local_ip = 127.0.0.1
      local_port = xxxx
      remote_port = xxxx
      #启用加密
      #use_encryption = true
      #启用压缩
      #use_compression = true

      openwrt 开机自启:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      cd /etc/init.d/
      vi frp
      #---start
      #!/bin/sh /etc/rc.common
      START=99
      start(){
      sleep 10
      /mnt/sda1/frp/frpc -c /mnt/sda1/frp/frpc-domy.ini
      }
      restart(){
      /mnt/sda1/frp/frpc -c /mnt/sda1/frp/frpc-domy.ini
      }
      #---end
      chmod 755 frp # 赋权
      ./frp enable # 启用
      ./frp start # 尝试手动启动

至此,服务端与客户端均已配置完毕,并开始连接。

1
2
login to server success,……
[ssh] start proxy success

以上便是 frp 内网穿透的最常用部署过程。此外,还有很多种方案可探索:

  • 结合 aria2 远程下载;
  • 远程打印
  • 自建云盘

安全建议:

在公网上暴露自己是有风险的,最基本的安全措施要有:

  • 更改默认端口(如,默认ssh的22端口)
  • 强密码

  • 低调

全文完。希望需要的人能参考一二。

关注
公众号