docker部署frp穿透内网

文章目录

    • (1)部署frps服务器
    • (2)部署frpc客户端
    • (3)重启与访问frp
    • (4)配置nginx反向代理

(1)部署frps服务器

docker安装参考文档:docker基本知识

1.创建目录

创建目录,用于存放容器持久化存储卷

mkdir -p /data/frpcd /data/frp
vim frps.ini

2.编辑配置文件

#进入 /data/frp 目录
cd /data/frp#使用 Vim 编辑器打开 frps.ini 文件
vim frps.ini

配置文件如下:

[common]
bind_addr = 0.0.0.0
bind_port = 7000
dashboard_port = 7001vhost_http_port = 10080
vhost_https_port = 10443token = abcd12345
dashboard_user = admin11
dashboard_pwd = admin11#需要穿透的内网服务1
[could]
type = tcp
local_ip = 192.168.31.100
local_port = 5000
remote_port = 5000#需要穿透的内网服务2
[chat]
type = tcp
local_ip = 192.168.31.223
local_port = 3000
remote_port = 3000....
此处省略若干个服务器你可以根据自己的需求修改这个配置文件,添加或修改代理规则,然后保存退出 Vim 编辑器。

配置内容含义:

[common]:通用配置部分,用于设置 frp 服务器的基本参数。bind_addr:绑定的 IP 地址,这里设置为 0.0.0.0,表示监听所有的网络接口。
bind_port:服务绑定的端口号,这里设置为 7000。
dashboard_port:frp 仪表盘的端口号,这里设置为 7001。
vhost_http_port:虚拟主机 HTTP 端口号,这里设置为 10080。
vhost_https_port:虚拟主机 HTTPS 端口号,这里设置为 10443。
token:访问 frp 服务器的令牌,这里设置为 abcd12345
dashboard_user:frp 仪表盘的用户名,这里设置为 admin11。
dashboard_pwd:frp 仪表盘的密码,这里设置为 admin11。[could] 和 [chat]:代理规则部分,用于定义具体的代理规则。
type:代理类型,这里设置为 tcp,表示 TCP 代理。
local_ip:本地 IP 地址,这里设置为 192.168.31.100和192.168.31.223。
local_port:本地端口号,这里设置为 5000 和 3000。
remote_port:远程端口号,这里设置为 5000 和 3000。

3.拉取镜像

拉取和启动一个名为 “frps” 的 Docker 镜像。这个镜像是由 “ryaning/frps” 提供的,它是一个用于部署 frp 服务器的镜像。

通过命令 docker pull ryaning/frps 是用于从 Docker Hub 上拉取 “ryaning/frps” 镜像到本地。

docker pull ryaning/frps

4.启动容器

通过命令 docker run 启动一个容器。这个容器使用了一些参数:

docker run --restart=always --network host -d -v /data/frp/frps.ini:/etc/frp/frps.ini --name frps ryaning/frps
  • --restart=always 表示容器将会在退出时自动重启。
  • --network host 表示容器使用宿主机的网络命名空间,与宿主机共享网络栈,使得容器中的应用可以直接使用宿主机的网络接口。
  • -d 表示容器以后台模式运行。
  • -v /data/frp/frps.ini:/etc/frp/frps.ini 表示将宿主机上的 /data/frp/frps.ini 文件挂载到容器中的 /etc/frp/frps.ini 文件,这样可以在容器中使用自定义的配置文件。
  • --name frps 表示给容器指定一个名称为 “frps”。

当容器启动后,frp 服务器就会在容器中运行,使用挂载的配置文件进行配置。

5.安全组配置

在云服务器的安全组中,如果你想要允许入方向的连接到特定的端口,需要开放相应的端口。

以下是一般的步骤:

  • 登录云服务提供商的管理控制台

  • 导航到安全组配置页面

  • 找到服务器实例所使用的安全组,并编辑该安全组的规则。

  • 添加一个新的入方向规则,指定协议(如 TCP 或 UDP)和端口号。
    根据需求,可以选择指定来源 IP 地址范围或来源安全组。
    保存规则并应用更改。

  • 具体的步骤和界面可能因云服务提供商而有所不同。你可以参考云服务提供商的文档或向他们的支持团队寻求帮助,以获取更详细的指导。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

(2)部署frpc客户端

1.创建目录

创建目录,用于存放容器持久化存储卷

mkdir -p /data/frp
cd /data/frp

2.配置文件

vim frpc.ini

配置内容

[common]
server_addr = 120.78.156.217
server_port = 7000
token = abcd12345[could]
type = tcp
local_ip = 192.168.31.100
local_port = 5000
remote_port = 5000[chat]
type = tcp
local_ip = 192.168.31.223
local_port = 3000
remote_port = 3000

配置文件内容含义:

  1. [common] 部分定义了 frpc 的常规配置,包括 server_addrserver_porttoken。请确保这些值是正确的,并与 frps 服务器的配置相匹配。
  2. [could] 部分定义了一个名为 could 的隧道,其类型为 tcp。该隧道将本地的 192.168.31.100:5000 映射到远程的 5000 端口。请确保本地和远程的 IP 和端口设置正确。
  3. [chat] 部分定义了一个名为 chat 的隧道,其类型也是 tcp。该隧道将本地的 192.168.31.223:3000 映射到远程的 3000 端口。同样,请确保 IP 和端口设置正确。

3.查看frpc docker镜像

docker search frpc

4.拉取snowdreamtech/frpc 镜像

docker pull snowdreamtech/frpc 

5.启动snowdreamtech/frpc 容器

docker run --restart=always --network host -d -v /data/frp/frpc.ini:/etc/frp/frpc.ini --name frpc snowdreamtech/frpc 

(3)重启与访问frp

服务端重启

docker restart frps

客户端重启

docker restart frpc

查看监听服务

重启完成,查看服务器监听的端口(其中5000和3000端口是我们想要的)

[root@josh-clound frp]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1081/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1020/master         
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      550/rpcbind         
tcp6       0      0 :::3000                 :::*                    LISTEN      5268/frps           
tcp6       0      0 :::7000                 :::*                    LISTEN      5268/frps           
tcp6       0      0 :::7001                 :::*                    LISTEN      5268/frps           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1020/master         
tcp6       0      0 :::10080                :::*                    LISTEN      5268/frps           
tcp6       0      0 :::5000                 :::*                    LISTEN      5268/frps           
tcp6       0      0 :::10443                :::*                    LISTEN      5268/frps           
tcp6       0      0 :::111                  :::*                    LISTEN      550/rpcbind         
tcp6       0      0 :::80                   :::*                    LISTEN      5786/docker-proxy  

尝试访问

浏览器打开http://服务器IP:3000/进行访问

在这里插入图片描述

http://服务器IP:5000/ 进行访问

在这里插入图片描述

(4)配置nginx反向代理

通过IP+ 端口的访问方式,实现了,那么我不想记IP,那么就通过域名方式进行访问。

docker安装nginx

1.创建挂载目录

用于将宿主机上的目录 /usr/local/nginx 与容器内的目录进行挂载。

mkdir -p /usr/local/nginx/conf
mkdir -p /usr/local/nginx/log
mkdir -p /usr/local/nginx/html
  • /usr/local/nginx/conf:用于存放 Nginx 的配置文件。
  • /usr/local/nginx/log:用于存放 Nginx 的日志文件。
  • /usr/local/nginx/html:用于存放 Nginx 的静态网页文件。

2.创建临时用容器

docker run --name nginx -p 9001:80 -d nginx

3.复制临时容器的配置到宿主机

# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /usr/local/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /usr/local/nginx/

4.创建Nginx容器

docker run \
-p 80:80 \
--name nginx \
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /usr/local/nginx/log:/var/log/nginx \
-v /usr/local/nginx/html:/usr/share/nginx/html \
-d nginx:latest
  • docker run:用于创建并运行一个新的容器。
  • -p 80:80:将容器的 80 端口映射到宿主机的 80 端口,这样可以通过宿主机的 IP 地址或域名访问 Nginx 服务器。
  • --name nginx:指定容器的名称为 nginx
  • -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将宿主机上的 /usr/local/nginx/conf/nginx.conf 文件挂载到容器内的 /etc/nginx/nginx.conf 文件,用于配置 Nginx。
  • -v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d:将宿主机上的 /usr/local/nginx/conf/conf.d 目录挂载到容器内的 /etc/nginx/conf.d 目录,用于存放 Nginx 的额外配置文件。
  • -v /usr/local/nginx/log:/var/log/nginx:将宿主机上的 /usr/local/nginx/log 目录挂载到容器内的 /var/log/nginx 目录,用于存放 Nginx 的日志文件。
  • -v /usr/local/nginx/html:/usr/share/nginx/html:将宿主机上的 /usr/local/nginx/html 目录挂载到容器内的 /usr/share/nginx/html 目录,用于存放 Nginx 的静态网页文件。
  • -d nginx:latest:使用 nginx:latest 镜像创建容器,并在后台运行。

5.编辑nginx.conf配置文件

在http模块中添加两个server,分别用于处理两个不同的域名:chat.joshzhong.topcould.joshzhong.top

 #第一个服务器块用于处理 chat.joshzhong.top 域名的请求,配置如下:server {listen       80;server_name  chat.joshzhong.top;location / {proxy_pass http://127.0.0.1:3000;}}#第二个服务器块用于处理 could.joshzhong.top 域名的请求,配置如下:server {listen       80;server_name  could.joshzhong.top;location / {proxy_pass http://127.0.0.1:5000;}}

模块解释:

  • listen 80;:监听 80 端口,表示该服务器块将处理来自该端口的请求。
  • server_name chat.joshzhong.top;:指定该服务器块处理的域名为 chat.joshzhong.top。(could.joshzhong.top同上)
  • location /:匹配所有请求路径。
  • proxy_pass http://127.0.0.1:3000;:将请求代理转发到本地的 http://127.0.0.1:3000 地址,这意味着所有来自 chat.joshzhong.top 域名的请求都将被转发到本地的 3000 端口。(5000端口也是如此)

当有请求访问 chat.joshzhong.top 域名时,Nginx 将代理转发到本地的 3000 端口;当有请求访问 could.joshzhong.top 域名时,Nginx 将代理转发到本地的 5000 端口

重载nginx

#重启即可,就不进docker容器reload了
docker restart nginx

域名访问

http://chat.joshzhong.top/
在这里插入图片描述

http://could.joshzhong.top/

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/208382.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚马逊云科技re:Invent大会,助力安全构建规模化生成式AI应用

2023亚马逊云科技re:Invent全球大会进入第三天,亚马逊云科技数据和人工智能副总裁Swami Sivasubramanian博士在周三的主题演讲中,为大家带来了关于亚马逊云科技生成式AI的最新能力、面向生成式AI时代的数据战略以及借助生成式AI应用提高生产效率的精彩分…

基于机器深度学习的交通标志目标识别

在线工具推荐: 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 智能交通系统(ITS),包括无人驾驶车辆,尽管在道路…

【云备份】业务处理

文章目录 1. 业务处理作用功能 2. 代码框架编写构造函数UpLoad ——文件上传请求ListShow —— 展示页面请求处理实现Download —— 下载请求的处理实现断点续传实现 1. 业务处理 作用 业务处理模块是对客户端的业务请求进行处理 功能 1.文件上传请求:备份客户端…

数据库管理-第120期 初探Halo数据库(202301201)

数据库管理-第120期 初探Halo数据库(202301201) 12月份正好也是第120期,新的一篇文章,尝试一条新的路线。其实吧,Halo(羲和)这个数据库我较早时间就听说过(早于今年DTCC&#xff0c…

Glide结合OkHttp保证短信验证接口携带图形验证码接口返回Cookie值去做网络请求

一、实现效果 二、步骤 注意:仅展示核心部分代码 1、导入依赖 api com.github.bumptech.glide:glide:4.10.0 kapt com.github.bumptech.glide:compiler:4.10.0 api com.squareup.okhttp3:okhttp:3.11.0 api com.squareup.okhttp3:logging-interceptor:3.11.02、自…

【EMFace】《EMface: Detecting Hard Faces by Exploring Receptive Field Pyramids》

arXiv-2021 文章目录 1 Background and Motivation2 Related Work3 Advantages / Contributions4 Method5 Experiments5.1 Datasets and Metrics5.2 Ablation Study5.3 Comparison with State-of-the-Arts 6 Conclusion(own) 1 Background and Motivatio…

腾讯云云服务器功能与优势

腾讯云云服务器(Cloud Virtual Machine,CVM)是腾讯云提供的可扩展的计算服务。使用云服务器 CVM 避免了使用传统服务器时需要预估资源用量及前期投入的问题,帮助您在短时间内快速启动任意数量的云服务器并及时部署应用程序。 云服…

<软考>软件设计师-1计算机组成与结构(总结)

(一)计算机系统基础知识 1 计算机硬件组成 计算机的基本硬件系统由运算器、控制器、存储器、输入设备 和 输出设备 5大部件组成。 1 运算器、控制器等部件被集成在一起统称为中央处理单元(CPU) 。CPU是硬件系统的核心,用于数据的加工处理,能完成各种算…

Linux系统安装Docker-根据官方教程教程(以Ubuntu为例)

Linux系统安装Docker-根据官方教程教程(以Ubuntu为例) 1. 背景介绍2. 环境配置2.1 软件环境要求2.2 软件下载2.3 文档地址2.3 必备命令工具下载 3. 安装Docker3.1 使用root用户操作后续命令3.2 卸载可能存在的旧版本 4. 安装Docker4.1 更新依赖包4.2 配置…

电脑提示mfc100u.dll缺失如何解决?分享有效的5个解决方法

由于各种原因,电脑可能会出现一些问题,其中之一就是电脑提示mfc100u.dll的错误。这个问题可能会导致电脑无法正常运行某些程序或功能。为了解决这个问题,我将分享验证有效的五个修复方法,帮助大家恢复电脑的正常运行。 首先&#…

时间戳转换为日期格式(封装)

在前端开发中,后端有时候传过来的数据为时间戳的格式 而我们又需要将其转换为时间格式来回显。所以需要一个可以转换时间戳的工具。 封装函数 构建一个函数,传入我们的时间戳和我们想要的时间格式,通过JavaScript的时间对象方法,…

基于springboot,vue高校图书馆管理系统

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatisredis 本项…

【Unity入门】声音组件AudioSource简介及实现声音的近大远小

AudioSource组件 将需要播放声音的物体挂载Audio Listener组件,实现声音的播放 AudioSource组件属性 (1)AudioClip(音频剪辑):指定播放的音频文件。 (2)Output(音频输…

Python提取PDF表格(基于AUTOSAR_SWS_CANDriver.pdf)

个人学习笔记,仅供参考。 需求:提取AUTOSAR SWS中所有的API接口信息,用于生成C代码。 此处以AUTOSAR_SWS_CANDriver.pdf为例,若需要提取多个SWS文件,遍历各个文件即可。 1.Python包 pdfplumber是一款完全用python开…

HTTP 基本概念(计算机网络)

一、HTTP 是什么? HTTP(HyperText Transfer Protocol) :超文本传输协议。 HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。 「HTTP 是用于从互联网服务器传输超文本到本地浏览器的协议…

检测判断IP合法性API接口

检测判断IP合法性API接口 一、检测判断IP合法性API接口二、使用步骤1、接口2、请求参数3、请求参数示例4、接口 返回示例 三、 如何获取appKey和uid1、申请appKey:2、获取appKey和uid 四、重要说明 一、检测判断IP合法性API接口 一款免费的帮助你检测判断IP合法性API接口 二、…

基于算能的国产AI边缘计算盒子,内置强悍TPU | 32TOPS INT8算力

边缘计算盒子 内置强悍TPU | 32TOPS INT8算力 ● 支持浮点运算的TPU平台盒子,支持32TOPSINT8,16TFLOPSFP16,2TFLOPSFP32高算力 ● 单芯片最高支持32路H.264 & H.265的实时解码能力 ● 支持国产算法框架Paddle飞桨,适配Caf…

【开源存储】glusterfs分布式文件系统部署实践

文章目录 一、前言1、介绍说明2、术语说明3、冗余模式3.1、复制卷(Replication)3.2、纠删卷(Erasure Code) 二、部署说明1、软件安装2、集群部署2.1、前置准备2.2、部署过程a、添加节点b、配置存储c、创建glusterfs卷d、客户端挂载…

外包搞了6年,技术退步明显......

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

k8s中pod的hostport端口突然无法访问故障处理

故障背景: 租户告知生产环境的sftp突然无法访问了,登录环境查看sftp服务运行都是正常的,访问sftp的hostport端口确实不通。 故障处理过程 既然访问不通那就先给服务做个全面检查,看看哪里出了问题,看下sftp日志&#…