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

利用Frp实现内网穿透(docker实现)

文章目录

  • 1、WSL子系统配置
  • 2、腾讯云服务器安装frps
    • 2.1、创建配置文件
    • 2.2 、创建frps容器
  • 3、WSL2子系统Centos服务器安装frpc服务
    • 3.1、安装docker
    • 3.2、创建配置文件
    • 3.3 、创建frpc容器
  • 4、WSL2子系统Centos服务器安装nginx服务

  • 环境配置:一台公网服务器(腾讯云)、一台笔记本电脑、WSL子系统
  • 涉及知识:docker、Frp

1、WSL子系统配置

之前都在VM虚拟机上创建linux系统,但是最近发现了一个宝藏软件,这是windwos系统自带的,安装非常方便,强烈推荐。参考连接:https://learn.microsoft.com/zh-cn/windows/wsl/install

注意:因为后面使用docker,其中WSL1对docker的支持不如WSL2,推荐安装WSL2,查看版本:wsl -l -v

而wsl2的支持需要开启虚拟机功能,如下图进行开启,如果Hyper-V平台无法勾选,请在Bios中进行开启,参考链接:https://jingyan.baidu.com/article/8ebacdf0df465b49f65cd5d5.html
在这里插入图片描述

  • 下载 Linux 内核更新包、将 WSL 2 设置为默认版本(按照参考链接走)
  • Ubuntu系统下载以及安装选择自己适合版本
  • 官方没有找到Centos的,可以在这里下载安装即可:https://github.com/mishamosher/CentOS-WSL/releases/tag/7.9-2211

2、腾讯云服务器安装frps

Frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

frp中文文档:https://github.com/fatedier/frp/blob/dev/README_zh.md
完整文档:https://gofrp.org

云服务器Centos7:已安装Docker

安装命令:
yum-config-manager --add-repo http://mirrors.aliyun.c om/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce

2.1、创建配置文件

cd /home
mkdir frp
cd frp
vim frps.toml

frps.toml (最新版镜像配置文件由frps.ini变化为frps.toml文件了)内容:

[common]
# 监听端口
bind_port = 6868
# 面板端口
dashboard_port = 7878
# 登录面板账号设置
dashboard_user = admin
dashboard_pwd = 123456789
# 身份验证
token = swz

用的是腾讯云轻量服务器,所以要在【防火墙】中先把这些服务器上要用到的端口开一下,即:
6868、7878 两个端口

2.2 、创建frps容器

  • 拉取镜像:docker pull snowdreamtech/frps
  • 启动容器:docker run --restart=always --network host -d -v /home/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps
  • 查看容器状态,创建成功:docker ps -a
    在这里插入图片描述
  • 查看frps的管理端面板:公网服务器ip:7878,用户:admin、密码:123456789
    在这里插入图片描述

语法解析🐱‍🏍

–network host:网络模式host
-v /home/frp/frps.ini:/etc/frp/frps.ini:配置文件映射
–name frps:容器名称,可以随便取
-d 后台运行

–network host 配置解析🎶:
    直接使用宿主机的IP地址与外界进行通信,不再需要额外进行NAT转换。容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace,同时容器将不会虚拟出自己的网卡,而是使用宿主机的IP和端口,如下图host模式所示:
在这里插入图片描述
参考链接:https://blog.csdn.net/Aaron_neil/article/details/128964896

3、WSL2子系统Centos服务器安装frpc服务

子系统安装 见上面目录一,安装后打开页面如下图所示:

在这里插入图片描述

3.1、安装docker

yum update -y
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
yum -y install docker-ce-18.03.1.ce
systemctl start docker

执行完systemctl start docker后发现报错:Failed to get D-Bus connection: Operation not permitted
解决方法:https://www.jianshu.com/p/e670ae82e97a,其中内部网址打不开的话,按照链接直接修改/usr/bin/systemctl文件

#启动docker并查看状态,保证是running
systemctl start docker
systemctl status docker

注意:有时候docker一阵阵的会处于dead阶段,但是不影响docker ps等命令的使用,如果一阵时间后启动不起来或者启动有问题,建议重装WSL2,重装命令:

wsl --list
wsl --unregister 系统名

3.2、创建配置文件

cd /home
mkdir frp
cd frp
vim frpc.toml

frpc.toml (最新版镜像配置文件由frpc.ini变化为frpc.toml文件了)内容:

[common]
# server_addr为FRPS服务器IP地址,即公网服务器的ip
server_addr = xxxxx
# server_port为服务端监听端口,bind_port,与frps.toml中保存一致
server_port = 6868
# 身份验证,与frps.toml中保存一致
token = swz
admin_addr = 127.0.0.1
admin_port = 7400	
admin_user = admin
admin_pwd = admin
[admin_ui]
type = tcp
local_port = 7400
remote_port = 5556
[web]
type = tcp
local_ip = 127.0.0.1
local_port = 8080
remote_port = 5555

用的是腾讯云轻量服务器,所以要在【防火墙】中先把这些服务器上要用到的端口开一下,即:
5556、5555两个端口,其中7400端口是fprc的管理端页面,会自动在WSL2机器上开启这个服务,后面[admin_ui]配置了可以通过公务服务器:5556来访问管理端页面;[web]这个配置是通过公务服务器:5555来访问WSL2(127.0.0.1)的8080端口服务,这个服务后面我会配置一个nginx服务,具体见后面讲解。

3.3 、创建frpc容器

  • 拉取镜像:docker pull snowdreamtech/frpc

  • 启动容器:docker run --restart=always --network host -d -v /home/frp/frpc.toml:/etc/frp/frpc.toml --name frpc snowdreamtech/frpc

  • 查看容器状态,创建成功:docker ps -a
    在这里插入图片描述

  • 查看frpc的管理端面板:公网服务器ip:5556,用户:admin、密码:admin,当看到下图时,说名内网穿透已经实现了。为了进一步验证穿透的能力,下面我将单独启动一个nginx的镜像进行穿透。
    在这里插入图片描述

4、WSL2子系统Centos服务器安装nginx服务

 docker search nginxdocker pull nginxdocker pull nginx:1.21.5docker run --rm --name nginx-test -p 8080:80 -d nginx:1.21.5

注:这里nginx版本可以随意选择,有的拉取不下来,可以多试试几个版本。
语法解析🐱‍🏍

–name nginx-test:容器名称,可以随便取
-d :后台运行
-p 8080:80 : 端口映射,因为默认是桥接模式,所以需要端口映射,8080是WSL2机器(docker宿主机)的端口,80是docker服务-nginx的启动端口。
–rm :它表示在容器退出时立即删除容器。

使用 docker ps查看服务是否启动,如下图:
在这里插入图片描述

  • 查看 frps 管理端
    在这里插入图片描述
  • 查看 frpc 管理端
    在这里插入图片描述
  • 以上证明配置无误,然后进行访问:http://公网服务器:5555,结果如下:
    在这里插入图片描述

总:虽然我这本地的计算机其实也是连着互联网的,但是我没有单独的开放端口什么的,这应该就可以证明内网穿透了,可以通过将自己的笔记本电脑置于内网(局域网),然后在测试下,应该也没问题,有小伙伴测试了,可以@我下。

参考链接:
https://i007it.com/2022/06/18/Docker%E6%90%AD%E5%BB%BAfrp%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E6%9C%8D%E5%8A%A1%E5%99%A8/

相关文章:

利用Frp实现内网穿透(docker实现)

文章目录 1、WSL子系统配置2、腾讯云服务器安装frps2.1、创建配置文件2.2 、创建frps容器 3、WSL2子系统Centos服务器安装frpc服务3.1、安装docker3.2、创建配置文件3.3 、创建frpc容器 4、WSL2子系统Centos服务器安装nginx服务 环境配置:一台公网服务器&#xff08…...

怎么用Excel生成标签打印模板,自动生成二维码

环境: EXCEL2021 16.0 问题描述: 怎么用excel生成标签打印模板自动生成二维码 解决方案: 在Excel中生成标签打印模板并自动生成二维码,可以通过以下几个步骤完成: 1. 准备数据 首先,确保你的Excel表…...

java基于ssm+jsp 美食推荐管理系统

1前台首页功能模块 美食推荐管理系统,在系统首页可以查看首页、热门美食、美食教程、美食店铺、美食社区、美食资讯、我的、跳转到后台等内容,如图1所示。 图1前台首页功能界面图 用户注册,在注册页面可以填写用户名、密码、姓名、联系电话等…...

数据分析:置换检验Permutation Test

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2 介绍 置换检验是一种非参数统计方法,它不依赖于数据的分布形态,因此特别适…...

【React】使用Token做路由权限控制

在components/AuthRoute/index.js中 import { getToken } from /utils import { Navigate } from react-router-domconst AuthRoute ({ children }) > {const isToken getToken()if (isToken) {return <>{children}</>} else {return <Navigate to"/…...

机器学习周记(第四十四周:Robformer)2024.6.17~2024.6.23

目录 摘要ABSTRACT1 论文信息1.1 论文标题1.2 论文摘要1.3 论文引言1.4 论文贡献 2 论文模型2.1 问题描述2.2 Robformer2.2.1 Encoder2.2.2 Decoder 2.3 鲁棒序列分解模块2.4 季节性成分调整模块 摘要 本周阅读了一篇利用改进 Transformer 进行长时间序列预测的论文。论文模型…...

JAVA学习笔记DAY10——SpringBoot基础

文章目录 SpringBoot3 介绍SpringBoot 快速入门SpringBootApplication SpringBoot 配置文件统一配置管理Yaml 配置优势tips SpringBoot 整合 SpringMVC静态资源拦截器 interceptor SpringBoot 整合 DruidSpringBoot 整合 MybatisSpringBoot 整合 tx aopSpringBoot 打包 SpringB…...

如何在Android中实现多线程与线程池?

目录 一、Android介绍二、什么是多线程三、什么是线程池四、如何在Android中实现多线程与线程池 一、Android介绍 Android是一种基于Linux内核的开源操作系统&#xff0c;由Google公司领导开发。它最初于2007年发布&#xff0c;旨在为移动设备提供一种统一、可扩展的操作系统。…...

SCI绘图【1】-不同颜色表示密度和差异--密度图

参考资料&#xff1a;密度图&#xff08;Density Plot&#xff09; - 数据可视化图表 - 数字孪生百科 密度图是快速观察变量数值分布的有效方法之一。通常情况下&#xff0c;会根据两个变量将平面绘图区域分为非常多的子区域&#xff0c;之后以不同颜色表示落在该区域上样本的…...

C语言 while循环1

在C语言里有3种循环&#xff1a;while循环 do while 循环 for循环 while语句 //while语法结构 while&#xff08;表达式&#xff09;循环语句; 比如在屏幕上打印1-10 在while循环中 break用于永久的终止循环 在while循环中&#xff0c;continue的作用是跳过本次循环 …...

[C++][数据结构][LRU Cache]详细讲解

目录 1.什么是LRU Cache&#xff1f;2.LRU Cache实现 1.什么是LRU Cache&#xff1f; LRU是Least Recently Used的缩写&#xff0c;意思是最近最少使用&#xff0c;它是一种Cache替换算法。什么是 Cache&#xff1f; 狭义的Cache指的是位于CPU和主存间的快速RAM 通常它不像系统…...

怎样激励员工积极应用新版FMEA培训后的知识?

在快节奏的职场环境中&#xff0c;新版FMEA&#xff08;失效模式与影响分析&#xff09;的培训无疑是提升员工技能、优化工作流程的重要一环。然而&#xff0c;如何让员工积极地将所学知识应用于实际工作中&#xff0c;却是一个值得深入探讨的问题。下面&#xff0c;深圳天行健…...

WDF驱动开发-WDF总线枚举(一)

支持在总线驱动程序中进行 PnP 和电源管理 某些设备永久插入系统&#xff0c;而其他设备可以在系统运行时插入和拔出电源。 总线驱动 必须识别并报告连接到其总线的设备&#xff0c;并且他们必须发现并报告系统中设备的到达和离开情况。 总线驱动程序标识和报告的设备称为总线…...

React useEffect 执行时机

默认情况下&#xff0c;Effect 在每次渲染&#xff08;包括初始渲染&#xff09;后运行。 如果 React 的所有依赖项都与上次渲染时的值相同&#xff0c;则将跳过本次 Effect。 useEffect(() > {// 这里的代码会在每次渲染后执行 });useEffect(() > {// 这里的代码只会在…...

centos7 根目录扩容

1、先检查一下磁盘空间 [rootlocalhost ~]# lsblk 二、使用fdisk创建新分区 [rootlocalhost ~]# fdisk /dev/vdb 1、输入 p &#xff0c;查看当前分区表&#xff1b; 2、输入 n &#xff0c;新建一个分区&#xff1b; 3、再输入 p &#xff0c;选择分区类型为主分区&#x…...

为什么要做Redis分区和分片

Redis分区&#xff08;Partitioning&#xff09;和分片&#xff08;Sharding&#xff09;是将数据分布在多个Redis实例或多个节点上的做法。这种技术用于提高性能、可扩展性和可用性。以下是执行Redis分区和分片的主要原因&#xff1a; 1. **提高吞吐量**&#xff1a; - 通…...

电脑不小心删除的文件怎么恢复?4个必备恢复方法!

“刚刚在对电脑里的某些垃圾文件进行清理时&#xff0c;我一不小心误删了比较重要的数据。这些误删的数据还有机会恢复吗&#xff1f;希望大家帮帮我&#xff0c;非常感谢&#xff01;” 在这个数字化飞速发展的时代&#xff0c;电脑早已成为我们日常生活和工作中不可或缺的一部…...

GPTCache:革新大模型缓存,降低成本,提升效率

GPTCache介绍 随着应用程序越来越受欢迎并遇到更高的流量水平,与 LLM API 调用相关的费用可能会变得相当可观。此外,LLM 服务的响应时间可能会很慢,尤其是在处理大量请求时。GPTCache是一个致力于构建用于存储 LLM 响应的语义缓存的项目。 项目架构 数字人助力传统客服 1…...

[Day 15] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

區塊鏈的數字身份認證 1. 概述 數字身份認證是當今數字世界中的關鍵問題之一。傳統的身份驗證方法面臨著安全性、隱私性和可信度等方面的挑戰。區塊鏈技術通過其去中心化、不可篡改和可追溯的特性&#xff0c;為解決這些問題提供了新的可能性。本文將深入探討區塊鏈在數字身份…...

绘唐3下载地址

小说推文是一种将小说内容以推文的形式发布的方式&#xff0c;可以吸引更多读者的关注。以下是一些小说推文工具&#xff1a;下载地址 Twitter&#xff1a;Twitter是一个非常受欢迎的社交媒体平台&#xff0c;适合发布小说推文。你可以使用Twitter的140个字符限制来创造悬念和吸…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库&#xff08;uthash库&#xff09;提供对哈希表的操作&#xff0c;文章如下&#xff1a; C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

sshd代码修改banner

sshd服务连接之后会收到字符串&#xff1a; SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢&#xff1f; 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...

高保真组件库:开关

一:制作关状态 拖入一个矩形作为关闭的底色:44 x 22,填充灰色CCCCCC,圆角23,边框宽度0,文本为”关“,右对齐,边距2,2,6,2,文本颜色白色FFFFFF。 拖拽一个椭圆,尺寸18 x 18,边框为0。3. 全选转为动态面板状态1命名为”关“。 二:制作开状态 复制关状态并命名为”开…...

基于django+vue的健身房管理系统-vue

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.8数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat12开发软件&#xff1a;PyCharm 系统展示 会员信息管理 员工信息管理 会员卡类型管理 健身项目管理 会员卡管理 摘要 健身房管理…...