使用Frp穿透内网服务

使用Frp穿透内网服务

TomcatDeng 198 2022-10-22

前几天在我自己的主机上部署了一个Seafile,作为个人使用。但是这个主机连接的是校园网,于是乎需要进行穿透以便我在外使用。
之前有看到过花生壳等等,但是鉴于我有一台公网服务器,因此这次我采用经典的Frp直接将服务代理到公网。

部署方法

  1. 到Github上下载Frp的Release并解压将文件夹传到公网服务器和内网服务器
    网址:https://github.com/fatedier/frp/releases
  2. 修改文件夹的名字,日后维护的时候你会感谢你自己的这个举手之劳
     mv frp_0.xx.0_linux_amd64 frp
    
  3. 配置服务端(公网服务器)
    • 打开该文件夹
    • 编辑frps.ini
      [common]
      #用于客户端和服务端连接的端口
      bind_port = 
      # 反向代理的http端口
      vhost_http_port = 
      # 反向代理的https端口
      vhost_https_port = 
      # 控制界面端口
      dashboard_port = 
      # 控制界面用户名
      dashboard_user = 
      # 控制界面密码
      dashboard_pwd = 
      # 若要使用frp,需要提供令牌以确保安全
      token = 
      # 日志文件路径
      log_file = ./frps.log
      
      # 日志记录错误级别,分为:trace, debug, info, warn, erro
      log_level = warn
      
      # 日志保存最大天数
      log_max_days = 30
      # 代理的网站域名
      subdomain_host = https://your_domain
      
    • 后台开启运行
      nohup ./frps -c frps.ini &
      
    • 查看输出日志,如果有success就说明成功了
      tail -f nohup.out
      
  4. 配置客户端(内网服务器)
    • 打开该文件夹
    • 编辑frpc.ini
      注意:这里我使用了nginx在内网服务器做代理转发,所以没有ssl信息,直接代理http
      [common]
      # 填写服务器实际IP
      server_addr =
      # 用于客户端和服务端连接的端口
      server_port =
      # 向服务器出示令牌
      token = 
      
      # 代理的服务名称,这个是自己随便起的
       # 做一个穿透到公网的网站
      [web]
      # 代理的协议类型
      type = http
      # 服务在本地的位置
      local_port = 
      # 代理该服务端公网域名
      custom_domains = https://your_domain
      
      # 代理的服务名称,这个是自己随便起的
      # 做一个远程 ssh 服务
      [ssh]
      # 代理的协议服务
      type = tcp
      # 本机 ip
      local_ip = 
      # 这个服务在本机的位置,如果是 ssh 默认就是 22
      local_port = 22
      # 占用公网服务器的端口号,不用在服务端约定好,但要避免重复
      remote_port = 
      
    • 后台开启运行
      nohup ./frpc -c frpc.ini &
      
    • 查看输出日志,如果有success就说明成功了
      tail -f nohup.out
      
  5. 试试效果,如果可以访问,就大功告成
    这里要指出 frp 服务端可以为多个客户端服务,但是一定要避免端口冲突
  6. 关闭一个 frp 服务的方法
    使用以下命令查看 frp 的进程
    ps -aux|grep frp| grep -v grep
    
    然后根据输出的进程编号杀掉这个进程
    kill xxxx