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

2024-06-24 12:36
文章标签 实现 docker 穿透 frp

本文主要是介绍利用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实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1090164

相关文章

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同