skip to content
1874

自建 FRP 内网穿透

/ 5 min read

最后更新:

前言

自己的轻量云服务器的性能太弱了(1C/2G),但是博客站点 Halo 的占用对于我的机器来说压力比较大。所以就想着怎么利用本地的机器来搭建博客。

目前手头上有个Mac,零刻 N100 小主机还在路上,所以就想着先试着在 Mac 和云服务器上搭建一下 FRP 内网穿透,熟悉熟悉操作。

环境准备

FRP

Untitled.png

完整点的 FRP 内网穿透应该是上面的架构

  • FRP Server:拥有公网 IP 的服务器
  • FRP Client:家庭内网服务器,中转设备
  • NAS:家庭 NAS
  • PC:家庭其他设备

当建立起 FRP 内网穿透后,就可以利用 FRP Server 服务器来访问家庭内网 FRP Client 中转设备,进而访问所有家庭内网设备。

FRP Server

我的 FRP Server 端是一台腾讯云轻量云服务器,5MB 带宽,300G/月的流量,用来搭建访问量不大的应用绰绰有余。

  1. /etc下新建/frp文件夹

    Terminal window
    sudo mkdir /etc/frp
  2. /etc/frp下新建frps.toml文件

    Terminal window
    sudo vim /etc/frp/frps.toml
  3. 配置frps.toml文件

    bindAddr = "0.0.0.0"
    bindPort = 7000
    auth.method = "token"
    auth.token = "123456"
    webServer.addr = "0.0.0.0"
    webServer.port = 7500
    webServer.user = "user"
    webServer.password = "123456"
    # tls
    #transport.tls.force = true
    #transport.tls.certFile = "/etc/frp/ssl/server.crt"
    #transport.tls.keyFile = "/etc/frp/ssl/server.key"
    #transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt"
    • bindPort:服务端监听端口
    • auth.method:授权方式,客户端需要保持一致
    • auth.token:授权密钥,客户端需要保持一致
    • webServer.addr:管理面板地址,默认本地
    • webServer.user:管理面板用户
    • webServer.port:管理面板端口
    • webServer.password:管理面板密码
  4. docker run 运行 FRP Server 服务

    Terminal window
    docker run --restart=always --network host -d -v /etc/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps
  5. 开放端口号,在云服务器和本地服务器(如果有的话)防火墙开启7000,7005端口号

  6. 测试访问,访问云服务器 IP 地址:7000登录后台,输入用户名密码正常访问即可

FRP Client

我的 FRP Client 客户端是 N100 Ubuntu 22.04,用的是 1Panel 来管理 服务器和 Docker,服务器部署了一个 Halo 站点,对外端口号是 8090

我的目的就是将云服务上的 9100 端口映射到我内网 N100 上的 8090 对应的 Halo 站点

  1. 在 Mac 某个目录新建 frp 文件夹

    Terminal window
    mkdir /home/1874/frp
  2. frp 文件夹下新建frpc.toml文件

    Terminal window
    vim /home/1874/frp/frpc.toml
  3. 配置frpc.toml文件

    serverAddr = "xxx.xx.xx.xx"
    serverPort = 7000
    auth.method = "token"
    auth.token = "123456"
    webServer.addr = "0.0.0.0"
    webServer.port = 7500
    webServer.user = "user"
    webServer.password = "123456"
    webServer.pprofEnable = false
    # tls
    #transport.tls.certFile = "/etc/frp/ssl/client.crt"
    #transport.tls.keyFile = "/etc/frp/ssl/client.key"
    #transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt"
    [[proxies]]
    name = "Halo"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 8090
    remotePort = 9100
    • serverAddr:云服务器 IP 地址
    • serverPort:监听云服务器的端口号
    • auth.method:授权方式,保持和服务端一致
    • auth.token:授权密钥,保持和服务端一致
    • webServer.addr:管理面板地址,默认本地
    • webServer.user:管理面板用户
    • webServer.port:管理面板端口
    • webServer.password:管理面板密码
  4. docker run 运行 FRP Client 服务

    Terminal window
    docker run --restart=always --network host -d -v /home/1874/frp/frpc.toml:/etc/frp/frpc.toml --name frpc snowdreamtech/frpc
  5. 开放端口号,在轻量云服务器开启 9100 端口,在本地服务器防火墙开启8090端口号

  6. 测试访问,访问111.222.33.111:9100检查是否能访问到 N100 上部署的 Halo 站点

结束

至此,FRP 就搭建完成,如果有其他应用可以继续在添加frpc.toml文件中继续添加你想要暴露的应用。