当前位置: 首页 > article >正文

使用frp工具实现内网穿透

本文使用frp的docker镜像 + JSON格式配置,以http服务为例

一、达到的目的

希望通过已有的公网服务器,直接访问内网中运行的http服务

二、所需条件

/**
 * 公网服务器 ip
 * eg: 8.0.0.0 阿里云
 */

/**
 * 绑定到公网服务器的域名
 * eg: network.com 阿里云
 */

/**
 * 内网http服务
 * eg: 192.168.1.3:6600
 */

三、服务端

下载docker镜像

# 使用的镜像是 snowdreamtech/frps
# 查找镜像 frps
docker search frps

# 拉取镜像
docker pull snowdreamtech/frps

配置frps.json

// frps配置文件本地路径 eg: /var/local/frp/frps.json
{
  "bindPort": 7000, // 供客户端连接的端口
  "vhostHTTPPort": 7700, // http协议穿透访问端口 - http穿透时,必须开启
  "auth": {
    "token": "your_token" // 客户端连接时的认证token
  },
  // 看板服务的配置
  "webServer": {
    "addr": "0.0.0.0",
    "port": 7500,
    "user": "admin",
    "password": "123456"
  }
}

运行frps容器

docker run -d --name frps -p 7000:7000 -p 7500:7500 -p 7700:7700 -v /var/local/frp/frps.json:/frp/frps.json snowdreamtech/frps -c /frp/frps.json

检查运行结果

# 查看frps容器日志
docker logs frps

# 如果有以下日志就是服务已经注册成功了
# 2024-11-12 05:53:51.174 [I] [frps/root.go:105] frps uses config file: /frp/frps.json
# 2024-11-12 05:53:51.427 [I] [server/service.go:237] frps tcp listen on 0.0.0.0:7000
# 2024-11-12 05:53:51.427 [I] [server/service.go:305] http service listen on 0.0.0.0:7700
# 2024-11-12 05:53:51.427 [I] [frps/root.go:114] frps started successfully
# 2024-11-12 05:53:51.427 [I] [server/service.go:351] dashboard listen on 0.0.0.0:7500

访问dashboard

# 阿里云安全组 - 入方向 放开7000, 7500, 7700 的端口访问

# 浏览器访问 http://network.com:7500 会提示输入账号密码,然后就可以看到看板页面了

四、客户端

# 使用的镜像是 snowdreamtech/frpc
# 查找镜像 frpc
docker search frpc

# 拉取镜像
docker pull snowdreamtech/frpc
// frpc配置文件本地路径 eg: /var/local/frp/frpc.json
{
  "serverAddr": "8.0.0.0",
  "serverPort": 7000,
  "auth": {
    "token": "your_token"
  },
  "proxies": [
    {
      "name": "abc",
      "type": "http",
      "localIP": "192.168.1.3", // 客户端所在设备可以访问的内网ip地址
      "localPort": 6600, // 内网端口
      "transport": {
        "useEncryption": true,
        "useCompression": true
      },
      "customDomains": ["abc.frp.network.com"]
    }
  ]
}

运行frpc容器

docker run -d --name frpc -v /var/local/frp/frpc.json:/frp/frpc.json snowdreamtech/frpc -c /frp/frpc.json

检查运行结果

# 查看frps容器日志
docker logs frpc

# 或者到dashboard页面看 proxies 中的http有没有映射

访问项目

# 域名配置 - 阿里云域名管理中 添加域名解析规则 frp, *.frp

# 浏览器访问 http://abc.frp.network.com:7700 就可以访问到内网项目

# 在阿里云ssh连接中,使用curl -I http://abc.frp.network.com:7700 也可以测试

到此,整体结束了

五、参考文档

  • frp文档: https://gofrp.org/zh-cn/docs/

http://www.kler.cn/a/395163.html

相关文章:

  • 【LeetCode】【算法】5. 最长回文子串
  • 学习日志010--python异常处理机制与简单文件操作
  • LaTeX之四:如何兼容中文(上手中文简历和中文论文)、在win/mac上安装新字体。
  • 深度学习神经网络在机器人领域应用的深度剖析:原理、实践与前沿探索
  • [JAVAEE] 面试题(四) - 多线程下使用ArrayList涉及到的线程安全问题及解决
  • change buffer:到底应该选择普通索引还是唯一索引
  • 基于yolov8、yolov5的车型检测识别系统(含UI界面、训练好的模型、Python代码、数据集)
  • Scala的迭代器
  • javaWeb小白项目--学生宿舍管理系统
  • C语言不创建中间变量交换2个数
  • win32 / WTL 开发多线程应用,子线程传递大对象给UI线程(主窗口)的方法
  • vite + vue3 + ts解决别名引用@/api/user报错找不到相应的模块
  • 前端系统设计面试题(二)Javascript\Vue
  • 从 MySQL 5.7 到 8.0:理解 GROUP BY 的新规则与实战优化20241112
  • 3D 数组插值 MATLAB
  • vue2 动态路由的实现
  • Leetcode 整数转罗马数字
  • webpack5 + vue3 从零配置项目
  • 低代码集成多方API的简单实现
  • 力扣113:路径总和II
  • 蓝领招聘二期笔记
  • 标题:网络安全:数字时代的守护盾
  • Python基础学习-07不可重复的set集合
  • 10款音频剪辑工具的个人实践体验感受!!
  • PG实例CPU使用率高排查思路
  • pyflink datastream数据流ds经过一系列转换后转为table,t_env.from_data_stream(ds)