skip to content
1874
image

自建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 中转设备,进而访问所有家庭内网设备。

鉴于目前我的家庭内网设备只有 Mac,所以就只能将 Mac 当做 FRP Client,本篇文章也是基于 Mac 来搭建,等我的 N100 到了再替换掉。

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文件

    [common]
    bind_port = 7000
    dashboard_port = 7500
    dashboard_user = frp
    dashboard_pwd = frppassword
    vhost_http_port = 7080
    vhost_https_port = 7081
    token = 123456
    • bind_port:服务端监听端口
    • dashboard_port:访问FRP Server 端登录面板端口号
    • dashboard_user:登录面板用户名
    • dashboard_pwd:登录面板密码
    • vhost_http_porthttp协议下代理端口(非必要)
    • vhost_https_porthttps协议下代理端口(非必要)
    • token:FRP Client 客户端与服务端通信密钥
  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,7080,7081端口号

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

FRP Client

我的 FRP Client 客户端是 Mac 电脑,用的是 OrbStack 来管理 Docker,本地部署了一个 Halo 站点,对外端口号是 8090

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

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

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

    Terminal window
    vim /Users/1874w/workspace/1874/frp/frpc.toml
  3. 配置frpc.toml文件

    [common]
    server_addr = 111.222.33.111
    server_port = 7000
    token = 123456
    [halo]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 8090
    remote_port = 8090
    • server_addr:云服务 IP 地址
    • server_port:之前 Server 端配置的bind_port端口号
    • token:之前 Server 端配置的通信密钥
    • type:通信协议,TCP
    • local_ip:内网的 IP,因为是我本机部署的 Halo,所以写127.0.0.1就行,如果是其他内网设备部署的应用,需要填写对应的内网 IP 地址
    • local_port:内网应用访问的端口号
    • remote_port:FRP Server 端映射的端口号,111.222.33.111:8090 ⇒ 127.0.0.1:8090
    • 如果有其他应用可以继续添加
  4. docker run 运行 FRP Client 服务

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

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

结束

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