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

news2024/11/19 11:27:01

文章目录

  • 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 nginx
 docker pull nginx
 docker pull nginx:1.21.5
 docker 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/

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【zabbix】zabbix客户端配置

1、部署zabbix客户端 #zabbix 5.0 版本采用 golang 语言开发的新版本客户端 agent2 。 #zabbix 服务端 zabbix_server 默认使用 10051 端口,客户端 zabbix_agent2 默认使用 10050 端口。 systemctl disable --now firewalld setenforce 0 hostnamectl set-hostname…

C语言 | Leetcode C语言题解之第171题Excel表列序号

题目: 题解: int titleToNumber(char* columnTitle) {int number 0;long multiple 1;for (int i strlen(columnTitle) - 1; i > 0; i--) {int k columnTitle[i] - A 1;number k * multiple;multiple * 26;}return number; }

【Linux 基础】文件与目录管理

1. 文件和目录的基本概念 文件:是数据的集合,可以是文本、图像、视频等。 目录(也称为文件夹):是文件和子目录的集合,用于组织文件。 2. 目录和路径 绝对路径:从根目录(/&#x…

已经被驳回的商标名称还可以申请不!

看到有网友在问,已经驳回的商标名称还可以申请不,普推商标知产老杨觉得要分析看情况,可以适当分析下看可不可以能申请,当然最终还是为了下证 ,下证概率低的不建议申请。 先看驳回理由,如果商标驳回是绝对理…

Spring Boot 学习第七天:动态代理机制与Spring AOP

1 概述 在Java的世界中,实现AOP的主流方式是采用动态代理机制,这点对于Spring AOP也一样。代理机制的主要目的就是为其他对象提供一种dialing以控制对当前对象的访问,用于消除或缓解直接访问对象带来的问题。通过这种手段,一个对象…

Java | Leetcode Java题解之第169题多数元素

题目: 题解: class Solution {public int majorityElement(int[] nums) {int count 0;Integer candidate null;for (int num : nums) {if (count 0) {candidate num;}count (num candidate) ? 1 : -1;}return candidate;} }

(2011-2022年) 全国各省快递业务量与快递业务收入面板数据

中国快递业近年来随着电子商务的蓬勃发展而迅速壮大,成为现代生活中不可或缺的一部分。快递业务量与收入的面板数据为我们提供了一个观察中国快递市场繁荣与多元化的窗口。 数据来源 中国统计年鉴 参考文献 胡润哲, 魏君英, 陈银娥. 数字经济发展对农村居民服务…

如何把文件扫描成电子版pdf?这4个方法包教包会~

大多数时候,我们为了更加方便存档与文件共享,都会借助专用的扫描仪来把文件扫描成PDF文档~但其实现在想要扫描文件并不是只有扫描仪能够搞定,还有很多的方法和工具都能够代替它来一一实现。 就好比下面罗列出来的四大文件扫描方法&#xff0…

【STM32学习】基于I2C协议的OLED显示(利用U8G2库)

目录 一、I2C协议、时序协议 1.1 I2C协议: 1.2时序协议: 二、OLED原理 2.1主流显示面板技术 2.2OLED发光原理: 2.3汉字点阵显示原理 三、U8G2 四、代码移植 4.1创建工程(HAL库): 4.1.1CubexMX配置…

Gemalto加密狗的优势

Gemalto加密狗,作为硬件加密技术的杰出代表,为软件开发商和用户提供了一种高效、安全的解决方案。这种加密狗不仅拥有卓越的加密性能,还具备易用性和可靠性,是保护软件知识产权和防止非法复制的重要工具。 一、Gemalto加密狗的核心…

华为仓颉语言:编程语言的新篇章

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【数据结构】【版本1.4】【线性时代】——队列

快乐的流畅:个人主页 个人专栏:《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、队列的概念二、队列的模拟实现2.1 定义2.2 初始化2.3 销毁2.4 入队2.5 判空2.6 出队2.7 获取队头元素…

ImportError: No module named createrepo

我在用createrepo命令创建本地源时,出现如下: ImportError: No module named createrepo原因估计就是之前升级python2.6为2.7时导致(系统为centos7),看网上很多说, 修改/usr/share/createrepo/genpkgmeta…

7.系统工具——黑马程序员Java最新AI+若依框架项目

目录 前言一、表单构建任务:设计添加课程表单 二、 代码生成1.任务:将部门表在页面端显示改为树形结构 三、系统接口任务:使用sagger进行接口测试 前言 提示:本篇讲解若依框架 系统工具 一、表单构建 功能:完成前端…

ASP.Net.WebAPI和工具PostMan

1.WebAPI概述 1.1 WebAPI WebAPI 是一种传统的方式,用于构建和暴露 RESTUI风格的Web服务。它提供了丰富的功能和灵活性,可以处理各种HTTP请求,并支持各种数据格式,如JSON、XML等。 WebAPI使用控制器(Controllers)和动作方法(Ac…

关于最强模型Claude 3.5 Sonnet,你需要知道的10条总结!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识,包括但不限于AI科普,AI工具测评,AI效率提升,AI行业洞察。关注我,AI之…

VMware Workstation克隆虚拟机详细步骤

克隆虚拟机 首先我们先创建一台虚拟机,将该虚拟机关闭后,然后右键该虚拟机按照图下所示点击 克隆 下一页 下一页 这里按照需求选择克隆类型,我选择创建完整克隆。点击下一步 设置好虚拟机名称和位置,点击完成 稍微等待一会 点击 …

IPython小白教程:提升你的Python交互式编程技巧,通俗易懂!

IPython是一个增强的Python交互式shell,它提供了丰富的功能和便捷的交互方式,使得Python开发和数据分析工作更加高效。本文将详细介绍IPython的基本概念、使用方法、主要作用以及注意事项。 一、IPython简介 1. IPython的起源 IPython由Fernando Prez于…

.NET 通过UserInit键实现Windows权限维持

01阅读须知 此文所节选自小报童《.NET 内网实战攻防》专栏,主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,对内网和后渗透感兴趣的朋友们可以订阅该电子报刊,解锁更多的报刊内容。 02基本介绍 本文内容部分节选自小报童…

C++项目——负载均衡在线OJ

目录 前言 一、所用技术与开发环境 二、项目宏观结构 三、日志服务设计 四、compiler 编译服务设计 1.编译服务 2.运行服务 3.编译并运行服务 4.引入cpp-httplib库 4.1升级gcc版本 4.2cpp-httplib 4.3httplib的使用 五、oj_server服务设计 1. http路由选择 2.文…