学静思语
Published on 2025-06-09 / 8 Visits
0
0

Frp

Frp

一、下载frp

  • 指令

    • 下载官方frp工具
    wget https://github.com/fatedier/frp/releases/download/v0.62.1/frp_0.62.1_linux_amd64.tar.gz
    
  • 注意:

    • 下载时需要注意,当前目录时是什么目录,以备后面设置systemctl管理时,更好设置启动指令的路径

    • 也可以创建指定的目录,一般请情况下,安装在/usr/local目录下

    • 当然也可以解压之后移动到指定目录

      • 解压指令:

        tar -zxvf frp_0.62.1_linux_amd64.tar.gz
        
      • 解压之后有目录:frp_0.62.1_linux_amd64

      • 可以使用mv指令进行移动加改名

        • 指令

          mv ./frp_0.62.1_linux_amd64 /usr/local/frp/frp_0.62.1
          

二、设置systemd管理frp

  • 进行systemd管理的配置目录

    • 指令

      cd /etc/systemd/system
      
  • 创建文件frps.service

    • 指令

      vim frps.service
      
  • 输入指定的配置

    [Unit]
    # 服务名称,可自定义
    Description = frp server
    # 指定服务启动的顺序,表示这个服务要在网络和系统日志服务启动之后才启动
    After = network.target syslog.target
    # 表示这个服务希望network.target是处于活动状态,但是不强制依赖,(如果network.target启动失败,这个服务仍然会尝试启动)
    Wants = network.target
    
    [Service]
    # 服务类型为simple,表示ExecStart指定的进程就是主服务进程,systemd会一直监控这个进程
    Type = simple
    # 启动frps的命令,需修改为您的frps的安装路径
    # 这里以/usr/local/frp/frp_0.62.1为例
    # ExecStart = /path/to/frps -c /path/to/frps.toml
    ExecStart = /usr/local/frp/frp_0.62.1/frps -c /usr/local/frp/frp_0.62.1/frps.toml
    
    [Install]
    # 指定当执行systemctl enable时,这个服务会被链接到multi-user.target,意味着在多用户模式下会自动启动
    WantedBy = multi-user.target
    
  • 启动指令

    # 启动服务
    systemctl start frps
    # 停止
    systemctl stop frps
    # 重启
    systemctl restart frps
    # 查看服务状态
    systemctl status frps
    
  • 设置开机自启

systemctl enable frps

三、配置frps.toml

  • 注意

    • 这个是服务端的配置,也就是在公网上的服务器,来提供请求转化的。
    • 这个服务器需要有公网的ip。
    • 在内网中的frp服务使用的是frpc.toml的作为配置文件
  • 配置

    # 绑定端口
    bindPort = 7000
    # 设置连接token
    # 11111111 这个是客户端需要连接时的token类似于密码
    auth.token = "11111111"
    # 配置HTTP端口,如果80端口被占用,则使用8080端口
    vhostHTTPPort = 8080
    # 配置HTTPS端口,如果80端口被占用,则使用8080端口
    vhostHTTPSPort = 8443
    
  • 注意

    • 配置完文件之后重启一下frps

四、配置frpc.toml

1. 通过SSH访问内网机器(不安全)

  • 注意

    • 客户端使用frpc.toml做为配置文件,也就是内网机器
  • 配置

    # 服务端的ip
    serverAddr = "x.x.x.x"
    # 服务端绑定的端口
    serverPort = 7000
    # 连接token,需要于服务端设置的一样
    auth.token = "11111111"
    
    # 代理
    [[proxies]]
    # 代理名称
    name = "ssh"
    # 代理类型
    type = "tcp"
    # 本地ip
    localIP = "127.0.0.1"
    # 本地端接口
    localPort = 22
    # 服务端开放的端口
    remotePort = 6000
    
  • 声明

    • 当前这种方式不是很安全,很容被别人发现。

2. 通过SSH访问内网机器(安全)

  • 内网机器的frpc.toml的配置

    # 服务端的ip地址
    serverAddr = "x.x.x.x"
    # 连接token,需要于服务端设置的一样
    auth.token = "11111111"
    # 服务端端监听的端口
    serverPort = 7000
    
    # 代理
    [[proxies]]
    # 代理名称
    name = "ssh"
    # 代理类型
    # 注意此时的类型和之前的不一样,之前不安全使用的的是tcp,现在安全的使用的是stcp
    type = "stcp"
    # 本地IP
    localIP = "127.0.0.1"
    # 本地端口
    localPort = 22
    # 设置secretKey
    # 只有与此处设置的 secretKey 一致的用户才能访问此服务
    secretKey = "aaaaaaaa"
    
  • 说明

    • 此时,访问者也需要下载frp,然后对frpc.toml进行配置,才可以访问到内网机器
  • 访问者机器的frpc.toml的配置

    # 服务端的ip地址
    serverAddr = "x.x.x.x"
    # 服务端的端口
    serverPort = 7000
    # 连接token,需要于服务端设置的一样
    auth.token = "11111111"
    
    # 访问者代理
    [[visitors]]
    # 代理名称
    name = "visitor_ssh"
    # 代理类型,此时的类型和内网机器的是一样的stcp
    type = "stcp"
    # 内网机器的名称
    serverName = "ssh"
    # 内网机器的secretKey,需要与内网机器的secretKey一样才可以访问
    secretKey = "aaaaaaaa"
    # 绑定本地的ip
    bindAddr = "127.0.0.1"
    # 绑定本地的端口
    bindPort = 6000
    

3. 通过自定义域名访问web服务

  • 配置

    # 服务端的IP
    serverAddr = "x.x.x.x"
    # 服务端的端口
    serverPort = 7000
    # 连接token,需要于服务端设置的一样
    auth.token = "11111111"
    
    # 代理
    [[proxies]]
    # 代理名称
    name = "web"
    # 代理类型
    type = "http"
    # 本地的ip
    localIP = "127.0.0.1"
    # 本地的端口
    localPort = 8080
    # 自定义的域名,且这个域名已经在DNS中映射到了服务端的ip地址
    customDomains = ["test.youname.com"]
    
    • 说明
      • 注意自定义的域名需要被DNS映射到服务端的IP,否则是访问不到的。
      • 也就是服务端所在的服务器要有能被DNS解析且映射的域名,并且这个域名要和customDomains一致才行。

Comment