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

docker搭建frp内网穿透

华子目录

  • 实验前的准备工作
    • 1.`frp`介绍
      • 1.1`frp`的工作原理
    • 2.`docker`简介
    • 3.下载`frp`
    • 4.配置docker镜像加速
    • 5.准备`frp`服务端和`frp`客户端
    • 6.`frp`客户端与`frp`服务端关闭`firewalld`和`selinux`
  • 实验步骤
    • 1.docker下运行nginx服务
    • 2.上传`frp包`
    • 3.解压`frp包`
    • 4.配置frp-server端配置文件
    • 5.配置frp-client端配置文件
    • 6.执行frp脚本启动
  • 测试

实验前的准备工作

1.frp介绍

  • frp是一款高性能的内网穿透工具,它采用客户端-服务端的模式,通过中转服务器外部网络的请求转发到内部网络中的指定计算机

1.1frp的工作原理

  • 客户端frp服务器发送请求,请求服务器分配一个唯一的客户端ID
  • frp服务器分配一个唯一的客户端ID,并将其返回给客户端
  • 客户端使用分配的客户端ID连接到frp服务器,以便服务器可以知道客户端连接的计算机和端口
  • 外部网络发出请求时,frp服务器将请求转发客户端

2.docker简介

这里我们需要弄清楚4点:

  • docker镜像:一个特殊文件系统
  • docker容器:docker镜像运行时的实体
  • docker仓库:存放docker镜像文件的地方
  • docker数据卷:
    • 数据持久性:即使容器删除Volume中的数据也不会丢失,因为它们存储在宿主机上
    • 数据共享:多个容器可以共享同一个Volume,使得数据共享变得简单方便。

3.下载frp

  • https://github.com/fatedier/frp/releases/tag/v0.56.0

在这里插入图片描述

4.配置docker镜像加速

  • 由于目前国内的docker镜像站被全面封杀,这里博主找到了一个为数不多的docker镜像加速站,亲测可用
{"registry-mirrors": ["https://dockerhub.icu"]
}

5.准备frp服务端和frp客户端

IP说明
172.25.254.99frp服务端
172.25.254.66frp客户端,web服务器

6.frp客户端与frp服务端关闭firewalldselinux


实验步骤

1.docker下运行nginx服务

  • 查看docker运行状态
[root@frp-client ~]# systemctl is-active docker
active
  • 做docker数据卷
[root@frp-client ~]# docker volume create myVolume
myVolume
[root@frp-client ~]# docker volume ls
DRIVER    VOLUME NAME
local     7a2f4cc60c2a165c35b65678e090966a35169b41a6a924dbffde63a3fa5c1f61
local     9c2ddeac03bf2ca05d624d9bcc15f43be690c30770206e27e149ab34e5d4208b
local     33eb668b5b2b00e576cc7b1516fedd39b00d5e4d2b785721bc4d4db57f710e65
local     35ce78b1622154a1d2200be9436b177f05b763632985969aed3050fdefcd230b
local     866d9b3799c81138487c29c9b506a81d12b4bf607073d97aaac1e41a52655575
local     5653f75b05220d4a2acb5b01d6d812c6e6fb1e8b6605da946b7ff89f9b7aa83b
local     2656990227a34c0f5e8022aa8a05a7be0c91554a28b2d71e8f4a51d73a5e36f4
local     my-web
local     myVolume
[root@frp-client ~]# docker volume inspect myVolume
[{"CreatedAt": "2024-08-06T23:51:22+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/myVolume/_data","Name": "myVolume","Options": null,"Scope": "local"}
]
[root@frp-client ~]# cd /var/lib/docker/volumes/myVolume/_data
[root@frp-client _data]# ls
[root@frp-client _data]#
  • 运行nginx容器
[root@frp-client ~]# docker run -itd -v myVolume:/usr/share/nginx/html -p 8080:80 --name web nginx
571ece7fe9981eb9b1ced8c6e6503b4aea68e3b8feac81a6d9750c50e804fa6e
[root@frp-client ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED             STATUS             PORTS                                   NAMES
571ece7fe998   nginx     "/docker-entrypoint.…"   About an hour ago   Up About an hour   0.0.0.0:8080->80/tcp, :::8080->80/tcp   web
  • 上传网页文件到数据卷
[root@frp-client ~]# cd /var/lib/docker/volumes/myVolume/_data
[root@frp-client _data]# ls
50x.html  CSS  img  index.html  js
  • 简单测试

在这里插入图片描述

2.上传frp包

  • 将下好的frp包使用mobaxterm上传到frp-server端和frp-client端的/root
[root@frp-server ~]# ls
公共  模板  视频  图片  文档  下载  音乐  桌面  anaconda-ks.cfg  frp_0.56.0_linux_amd64.tar.gz
[root@frp-client ~]# ls
公共  模板  视频  图片  文档  下载  音乐  桌面  anaconda-ks.cfg  frp_0.56.0_linux_amd64.tar.gz

3.解压frp包

[root@frp-server ~]# tar -zxvf frp_0.56.0_linux_amd64.tar.gz
frp_0.56.0_linux_amd64/
frp_0.56.0_linux_amd64/frpc.toml
frp_0.56.0_linux_amd64/frpc
frp_0.56.0_linux_amd64/frps
frp_0.56.0_linux_amd64/LICENSE
frp_0.56.0_linux_amd64/frps.toml
[root@frp-client ~]# tar -zxvf frp_0.56.0_linux_amd64.tar.gz
frp_0.56.0_linux_amd64/
frp_0.56.0_linux_amd64/frpc.toml
frp_0.56.0_linux_amd64/frpc
frp_0.56.0_linux_amd64/frps
frp_0.56.0_linux_amd64/LICENSE
frp_0.56.0_linux_amd64/frps.toml
  • frpc是客户端启动脚本frpc.toml是客户端配置文件
  • frps是服务端启动脚本frps.toml是服务端配置文件

4.配置frp-server端配置文件

[root@frp-server frp_0.56.0_linux_amd64]# vim frps.toml
[root@frp-server frp_0.56.0_linux_amd64]# cat frps.toml
bindPort = 7000     #frp监听端口
vhostHTTPPort = 8888    #当访问8888时

5.配置frp-client端配置文件

[root@frp-client frp_0.56.0_linux_amd64]# vim frpc.toml
[root@frp-client frp_0.56.0_linux_amd64]# cat frpc.toml
serverAddr = "172.25.254.99"   #服务端IP地址
serverPort = 7000       #frp监听端口[[proxies]]
name = "web-http"
type = "http"
localIP = "127.0.0.1"
localPort = 8080    #frp客户端的端口
customDomains = ["172.25.254.99"]

6.执行frp脚本启动

  • 先启动服务端,-c用来告诉frps服务端去加载哪个配置文件
[root@frp-server frp_0.59.0_linux_amd64]# ./frps -c frps.toml
  • 再启动客户端,-c用来告诉frps服务端去加载哪个配置文件
[root@frp-client frp_0.59.0_linux_amd64]# ./frpc -c frpc.toml

测试

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 微信小程序--详情实现日期选择期(年月日)
  • Go 语言中创建方法
  • 设计模式18-中介者模式
  • 速记Java八股文——Redis 篇
  • 人工智能|人工智能教育的发展现状及趋势
  • 乐凡三防平板:以科技之力,推动工作智能化升级
  • Java入门、进阶、强化、扩展、知识体系完善等知识点学习、性能优化、源码分析专栏分享
  • Java stream流支持多字段排序
  • 【力扣】746.使用最小花费爬楼梯
  • Mysql 脚本转换为drawio ER 脚本
  • 使用LaTeX分章节撰写文档
  • LVS集群实现四层负载均衡详解(以nat,dr模式为例)
  • 【SQL Server】端口安全配置:SQL Server的安全最佳实践与防火墙规则配置
  • 前端(五):前端工程化
  • 代码随想录算法训练营第二十一天 | 77. 组合, 216.组合总和III , 17.电话号码的字母组合
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 3.7、@ResponseBody 和 @RestController
  • Angular 响应式表单之下拉框
  • eclipse的离线汉化
  • Git初体验
  • HomeBrew常规使用教程
  • Java|序列化异常StreamCorruptedException的解决方法
  • LeetCode29.两数相除 JavaScript
  • Python中eval与exec的使用及区别
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • WePY 在小程序性能调优上做出的探究
  • yii2中session跨域名的问题
  • 初识MongoDB分片
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 使用SAX解析XML
  • MyCAT水平分库
  • ​secrets --- 生成管理密码的安全随机数​
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ​水经微图Web1.5.0版即将上线
  • ###C语言程序设计-----C语言学习(6)#
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • (2022 CVPR) Unbiased Teacher v2
  • (二)斐波那契Fabonacci函数
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转)用.Net的File控件上传文件的解决方案
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET/C# 使用反射注册事件
  • .NET关于 跳过SSL中遇到的问题
  • .net中的Queue和Stack
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • 。。。。。
  • [100天算法】-不同路径 III(day 73)
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [AIGC] 解题神器:Python中常用的高级数据结构
  • [Android View] 可绘制形状 (Shape Xml)
  • [C#]winform使用引导APSF和梯度自适应卷积增强夜间雾图像的可见性算法实现夜间雾霾图像的可见度增强