使用 frp 将本地服务发布到公网

2023年 1月 4日 40.8k 0

1. 什么是 frp

frp 是一个高性能的反向代理应用,提供的功能有:

  • 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务
  • 对于 http、https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个 80 端口
  • 利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机

2. 架构和部署

frp 采用的是 C/S 架构。在使用时,需要:

  • 部署服务端,将 frps 及 frps.ini 放到具有公网 IP 的机器上,运行 frps;
  • 部署客户端,将 frpc 及 frpc.ini 放到处于内网环境的机器上,运行 frpc。
  • frp 是采用 Go 语言写的,支持 OS X、Windows、Linux 操作系统。

    3. 服务器端安装 frp

    服务器端安装 frp,有两种方法。

    • GitHub 下载 Releases 版本,手动安装
    • 使用 clangcn 写的 脚本 安装

    下面步骤采用的是使用脚本安装:

    • 下载脚本
    1
    
    wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh
    
    • 增加执行权限
    1
    
    chmod +x install-frps.sh
    
    • 执行安装
    1
    
    ./install-frps.sh install
    

    安装的过程中,需要填入一些配置参数:

     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
    
    Please input frps bind_port [1-65535](Default Server Port: 5443):
    输入frp提供服务的端口,用于服务器端和客户端通信,按Enter键表示默认5443,否则手动输入新端口
    Please input frps dashboard_port [1-65535](Default dashboard_port: 6443):
    输入frp的控制台服务端口,用于查看frp工作状态,按Enter键表示默认6443,否则手动输入新端口
    Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80):
    输入frp进行http穿透的http服务端口,按Enter键表示默认80,否则手动输入新端口,一般不建议默认80
    Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443):
    输入frp进行https穿透的https服务端口,按Enter键表示默认443,否则手动输入新端口
    Please input privilege_token (Default: XXXXXXXXXXXXXXXXX):
    输入frp服务器和客户端通信的密码,默认是随机生成的,按Enter键表示按默认来,否则手动输入。frpc客户端需要这个接头暗号
    Please input frps max_pool_count [1-200](Default max_pool_count: 50):
    设置每个代理可以创建的连接池上限,默认50
    Please select log_level #####
        1: info
        2: warn
        3: error
        4: debug
    Enter your choice (1, 2, 3, 4 or exit. default [1]):
    设置日志等级,4个选项,默认是info
    Please input frps log_max_days [1-30]
        (Default log_max_days: 3 day):
    设置日志保留天数,范围是1到30天,默认保留3天。
    ##### Please select log_file #####
        1: enable
        2: disable
    Enter your choice (1, 2 or exit. default [1]):
    设置是否开启日志记录,默认开启,开启后日志等级及保留天数生效,否则等级和保留天数无效
    

    4. 客户端配置

    在 frp 的 releases 页面,可以找到适合 Windows 系统的软件包。下载之后,编辑配置文件 frpc.ini :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    [common]
    server_addr = 111.222.333.444
    server_port = 5443
    token = XXXXXXXX
    
    [web]
    type = http
    local_port = 8000
    custom_domains = xxx.chenshaowen.com
    

    参数说明:

    • server_addr,服务器端的 IP 地址
    • server_port,服务器端绑定的端口
    • token,frp 服务的 token

    本地启的是 Django 工程,服务绑定在 8000 端口。同时在 DNS 上,需要将 xxx.chenshaowen.com 指向 111.222.333.444 (frp 服务器端的地址)运行本地客户端:

    1
    
    ./frpc -c ./frpc.ini
    

    至此,就可以直接使用公网域名访问本地服务了:

    5. 路由器配置

    在 KoolShare 软件中心,安装【虚拟内存】和【frpc穿透】插件。配置服务器端信息(使用脚本安装 frp 服务器端成功之后,会打印完整的配置信息)配置端口映射,将外网的访问转发到指定的内网端口:最后别忘了,将【域名配置/SK】中的域名解析到 frp 服务器地址。

    6. 参考

    • https://github.com/fatedier/frp/blob/master/README_zh.md

    相关文章

    KubeSphere 部署向量数据库 Milvus 实战指南
    探索 Kubernetes 持久化存储之 Longhorn 初窥门径
    征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
    那些年在 Terraform 上吃到的糖和踩过的坑
    无需 Kubernetes 测试 Kubernetes 网络实现
    Kubernetes v1.31 中的移除和主要变更

    发布评论