值得一看
广告
彩虹云商城
广告

热门广告位

内网穿透系列八:Docker 快速搭建 frp 服务,实现安全稳定的内网穿透服务

一、简介

  • frp是一个由go语言开发的简单、高效的内网穿透工具
  • frp 支持多种代理类型,包括TCP、UDP、HTTP、HTTPS等等,为不同场景需求提供丰富的解决方案
  • 支持流量加密、压缩,身份认证,代理限速,负载均衡等众多能力,同时提供一个代理连接实时流量可视化面板
  • 开源地址参考:https://github.com/fatedier/frp,官方使用文档:https://gofrp.org/zh-cn/docs/
  • 基本架构与工作原理可参考下图:

二、安装与使用

1. 服务端搭建

  • 需要准备一台具有公网IP的服务器
  • 提前安装好Docker、docker-compose软件环境
  • 新建docker-compose.yml配置文件,内容如下:
    services:
      frps:
        image: snowdreamtech/frps:0.63
        container_name: frps
        restart: always
        volumes:
          - ./frps.toml:/etc/frp/frps.toml
        #开启主机网络模式,可以任意使用主机端口,安全起见,也可以注释这个,开启下面的ports配置的主机端口映射,以限制主机端口的使用      
        network_mode: host
        #ports:
            #- "7000:7000"     # 服务端通信端口
            #- "8080:8080"     # HTTP 端口,
            #- "7500:7500"     # Dashboard 端口
            #- "6000-6100:6000-6100"     # 额外增加的端口,供其他tcp/udp等协议使用
  • 在docker-compose.yml同目录下,再新建frp服务端的配置文件frps.toml,配置如下:
    # 客户端连接服务端的端口
    bindPort = 7000
    # 客户端连接校验密码,部署时需要自行改成复杂的密码
    auth.token = "P<#.nF_R"
    # 开启web服务的端口,客户端反代http服务时,需要使用这个端口,然后根据客户端绑定的域名来进行区分
    vhostHTTPPort = 8080
    # 默认为 127.0.0.1,如果需要公网访问,需要修改为 0.0.0.0。
    webServer.addr = "0.0.0.0"
    # dashboard页面端口
    webServer.port = 7500
    # dashboard 用户名密码,可选,默认为空,部署时需要自行改成复杂的登录信息
    webServer.user = "admin"
    webServer.password = "123456"
    # 表示 server 端只接受 TLS 连接的客户端,新版本默认就是开启的,开启后,会自动使用自签证书或自定义配置的证书进行通信流量加密
    transport.tls.force = true
  • 一键启动frp服务端
    docker-compose up -d

2. 客户端搭建

  • 同样需要Docker环境,新建docker-compose.yml配置文件,内容如下:
    services:
      frpc:
        image: snowdreamtech/frpc:0.63
        container_name: frpc
        restart: always
        volumes:
          - ./frpc.toml:/etc/frp/frpc.toml
  • 需要新建frp客户端配置文件frpc.toml,配置如下:
    #这里连接服务端的配置
    serverAddr = "你的公网IP或者域名"
    serverPort = 7000
    auth.token = "P<#.nF_R"
    #http服务穿透1,如果域名已经指向公网服务器,可以配置域名访问,如下可访问:http://npm.vds.luxi.free.hr:8080/
    [[proxies]]
    name = "web_test1"
    type = "http"
    localIp = "172.17.0.1"
    localPort = 9000
    customDomains = ["npm.vds.luxi.free.hr"]
    #http/tcp服务穿透2,可以自定义公网端口,如下配置可以访问:http://公网ip:9999/
    [[proxies]]
    name = "web_test2"
    type = "tcp"
    localIP = "172.17.0.1"
    localPort = 9000
    remotePort = 9999
    #mysql服务穿透示例,可以连接公网6033端口访问内网中mysql服务
    [[proxies]]
    name = "mysql_test"
    type = "tcp"
    localIP = "172.17.0.1"
    localPort = 3306
    remotePort = 6033
  • 一键启动frp客户端
    docker-compose up -d

3. C/S都部署完之后,就可以通过公网访问内网中的服务

  • 如上客户端配置,访问内网中 portainer 服务,成功访问如下

  • 如上客户端配置,访问内网中的 mysql 服务,成功访问如下

  • 访问frp提供的可视化流量面板
    需要授权登录,输入服务端配置文件中配置的账号密码即可

    正在运行的代理服务

三、总结

  • frp是一款比较流行的内网穿透工具,玩法较多,适应各种内网穿透场景,性能不错
  • 没有提供可视化的管理界面,每次增加内网服务代理都需要手动编辑客户端配置,并且重启客户端服务,使用者需要有一定的开发运维能力
温馨提示: 本文最后更新于2025-09-30 16:07:03,某些文章具有时效性,若有错误或已失效,请在下方留言或联系在线客服
文章版权声明 1 本网站名称: 创客网
2 本站永久网址:https://new.ie310.com
1 本文采用非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
2 本站所有内容仅供参考,分享出来是为了可以给大家提供新的思路。
3 互联网转载资源会有一些其他联系方式,请大家不要盲目相信,被骗本站概不负责!
4 本网站只做项目揭秘,无法一对一教学指导,每篇文章内都含项目全套的教程讲解,请仔细阅读。
5 本站分享的所有平台仅供展示,本站不对平台真实性负责,站长建议大家自己根据项目关键词自己选择平台。
6 因为文章发布时间和您阅读文章时间存在时间差,所以有些项目红利期可能已经过了,能不能赚钱需要自己判断。
7 本网站仅做资源分享,不做任何收益保障,创业公司上收费几百上千的项目我免费分享出来的,希望大家可以认真学习。
8 本站所有资料均来自互联网公开分享,并不代表本站立场,如不慎侵犯到您的版权利益,请联系79283999@qq.com删除。

本站资料仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容