通过Docker+frp实现内网穿透

通过Docker+frp实现内网穿透

这篇文章是最近又折腾了一个局域网的小网站,在这边记录一下内网穿透的方法,还是老方法frp,只不过之前用的是.start.sh,这次使用的是Docker

配置内网穿透一定要有一个公网服务器,也就是能访问到的服务器,可以是腾讯云、阿里云等

1. 创建并修改配置文件

1.1 在公网上创建frps的配置文件

## 创建目录
export FRP_HOME=/etc/docker/frp/ && mkdir &FRP_HOME
## 创建文件
touch &FRP_HOME/frps.ini

修改文件的内容:

vim frps.ini>>> 内容如下:<<<[common]
bind_port = 7000
vhost_http_port = 7080
vhost_https_port = 7081
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = username
dashboard_pwd = password
token=token_information
# 👇 用来实现二级域名,如:xxx.yyyy.com,下面这一行是不包含「xxx」的剩下的「yyyy.com」那一部分👇
subdomain_host = yyyy.cc

subdomain_host = yyyy.cc并非一定要写,首先实现二级域名的方式有很多,frp还提供了一种用『custom_domains=xxx.yyyy.cc』的方式,DNS解析也可以实现二级域名,方法很多自行尝试。




1.2 在内网上创建frpc的配置文件

## 创建目录
export FRP_HOME=/etc/docker/frp/ && mkdir &FRP_HOME
## 创建文件
touch &FRP_HOME/frpc.ini

修改文件的内容:

vim frpc.ini>>> 内容如下:<<<[common]
# 公网IP
server_addr = xx.xx.xx.xx
# frps 配置文件中的 bind_port
server_port = 7000
# frps 配置文件中的 token
token=token_information# 一个连接,名字随便取,但不可重复
[xxx]
# 连接类型,可以是tcp、http、https,后两者必须配置「subdomain」或「custom_domains」
type = tcp
# 本地IP:可以是本机,也可以是局域网的其他IP
local_ip=127.0.0.1
# 本地端口:想要网穿的端口
local_port = 80
# 二级域名:xxx.yyyy.com 中「xxx」的那一部分
subdomain = xxx# 又一个连接,名字随便取,但不可重复
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
# 通过公网的 10022 就可以访问到内网这台电脑的22端口
remote_port = 10022

2. 启动 Frp

1. 公网启动 | frps

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

2. 内网启动 | frpc

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

访问IP:7500可以查看Dashboard控制面板。





内网穿透的方法很多,frp绝对不是最好的,还有花生壳、甚至通过路由器等,但是frp的性价比很高,只要你的服务器还能多跑一个Docker就可以启动起来。

另外,使用解压压缩包然后.start.sh也是一种启动frp的方式,可以试着自己编写systemctl文件来实现给systemctl托管以方便的控制开机自启、开启关闭等,也是一个不错的选择(之前就是用的这种方法,但是写systemctl文件有点烦)。

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

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

相关文章

spring复习:(50)@Configuration注解配置的singleton的bean是什么时候被创建出来并缓存到容器的?

一、主类&#xff1a; 二、配置类&#xff1a; 三、singleton bean的创建流程 运行到context.refresh(); 进入refresh方法&#xff1a; 向下运行到红线位置时&#xff1a; 会实例化所有的singleton bean.进入finisheBeanFactoryInitialization方法&#xff1a; 向下拖动代…

JavaWeb课程设计项目实战(06)——项目编码实践3

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 在本教程教程中&#xff0c;我们实现学生列表的显示。 Student 请在bean包下创建Student类&#xff0c;代码如下&#xff1a; package com.cn.bean; /*** 本文作者&#…

数据科学团队的角色分工

描述数据科学团队中角色分工常用下列维度。进一步以数据可视化直观表达的能力雷达图: ML Ops - 机器学习运维 Data Pipelines - 数据流水线 Database - 数据库 Data Viz - 数据可视化 Storytelling - 数据讲故事 Business Insights - 业务洞察 Reporting - 报告 Experimentatio…

【100天精通python】Day10:函数的创建和调用,参数传递,返回值,变量作用域以及匿名函数

目录 1. 函数的创建和调用 1.1 函数的创建 1.2 调用函数 2 参数传递 2.1 传递方式 2.2 形参和实参 2.3 位置参数 2.4 关键字参数 2.5 可变参数 2.6 为参数设置默认值 3 返回值 4 变量的作用域 4.1 局部变量 4.2 嵌套变量 4.3 全局变量 5 匿名函数&#xff0…

X86设备启动过程

文章目录 一、电源自检二、BIOS自检三、引导设备选择四、主引导记录4.1 0x7c0 五、加载操作系统 x86计算机启动过程&#xff0c;主要分为这几个阶段&#xff1a;电源自检、BIOS自检、引导设备的选择、主引导记录、加载操作系统。 一、电源自检 当我们按下开关键后&#xff0c;…

uni-app image加载错误 404 替换为默认图片

双层v-for 使用item修改 aitem.cat_icon || defaultPic绑定图片src属性为aitem.cat_icon 如果aitem.cat_icon的值为空字符串或undefined&#xff0c;那么默认图片defaultPic被显示出来当图片加载错误时,触发handleImageError方法,将aitem传进去 <!-- 页面--><view …

Java 知识合集 | 多线程与并发

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…

rollup的五大核心配置

一、rollup.config.js基本配置 例如&#xff0c;以下是一份基本的 rollup.config.js 文件代码&#xff1a; import babel from rollup-plugin-babel; import commonjs from rollup-plugin-commonjs; import resolve from rollup-plugin-node-resolve;export default {input: …

直接插入排序、希尔排序、直接选择排序、堆排序、冒泡排序——“数据结构与算法”

各位CSDN的uu们你们好呀&#xff0c;今天小雅兰的内容是数据结构与算法啦&#xff0c;是排序&#xff01;&#xff01;&#xff01;下面&#xff0c;让我们进入七大排序的世界吧&#xff01;&#xff01;&#xff01; 排序的概念及其运用 排序的概念 排序&#xff1a;所谓排序…

GOF 23 种设计模式应用场景分析

写在前面 本文看下GOF 23 种设计模式应用场景&#xff0c;详细的还是通过文章给出参考链接学习下。 1&#xff1a;创建型 1.1&#xff1a;工厂设计模式 参考这篇文章 。 有几种产品需要创建&#xff0c;比如创建红苹果&#xff0c;青苹果&#xff0c;绿苹果,这些对象通过一…

【OpenCV】读入数字图像基础操作学习笔记

目录 读入数字图像: 窗口中显示图像: 将图像保存到本地: 窗口销毁(打开窗口就要销毁,以免影响后续十月): 等待输入: 读入数字图像: cv2.imread(所需读入的图像的完整路径(若图像在程序下的文件夹下也可直接输入图像名称),读入图像的形式) 读入图像的形式: cv2.IMREAD_CD…

8 君正视频采集的封装2

概述 在上一节中,我们进行了视频采集的需求分析,并封装了视频采集的接口类。在视频画面上,往往会叠加时间信息和各种文字信息,这就需要用到点阵字库。点阵字库一般有两种,一种是纯色字库,另一种是描边字库。纯色字库在视频背景色与文字颜色大致相同时,会导致文字很难辨认…

Pytorch个人学习记录总结 01

目录 函数-dir()、help() Dataset类 函数-dir()、help() dir() 函数&#xff0c;打开工具箱&#xff08;例如PyTorch&#xff0c;进一步打开某一些分隔区&#xff09; help() 函数&#xff0c;查看工具包中某一个工具函数的用法 (1) 查看torch工具包有哪些分割区 dir(torc…

19 数组静态初始化练习

语法&#xff1a; 数据类型[ ] 数组名称 {元素1&#xff0c;元素2&#xff0c;元素3}; public class Demo1 {public static void main(String[] args) {int[] arr {0,1,2,3};System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.pri…

SpringBoot中间件—ORM(Mybatis)框架实现

目录 定义 需求背景 方案设计 代码展示 UML图 实现细节 测试验证 总结 源码地址&#xff08;已开源&#xff09;&#xff1a;https://gitee.com/sizhaohe/mini-mybatis.git 跟着源码及下述UML图来理解上手会更快&#xff0c;拒绝浮躁&#xff0c;沉下心来搞 定义&#x…

【C++杂货铺】拷贝构造函数

&#x1f4d6;定义 拷贝构造函数是构造函数的一个重载&#xff0c;它的本质还是构造函数&#xff0c;那就意味着&#xff0c;只有在创建对象的时候&#xff0c;编译器才会自动调用它&#xff0c;那他和普通的构造函数有什么区别呢&#xff1f; 拷贝构造函数&#xff0c;是创建…

【数学建模】为什么存在最优策略?

一、说明 在进行优化回归过程&#xff0c;首先要看看是否存在最优策略&#xff1f; 在有限马尔可夫决策过程 &#xff08;MDP&#xff09; 中&#xff0c;最优策略被定义为同时最大化所有状态值的策略。换句话说&#xff0c;如果存在最优策略&#xff0c;则最大化状态 s 值的策…

内存函数及其模拟实现

身体扛不住的时候&#xff0c;意志会带你杀出重围 文章目录 一、memcpy函数 函数介绍 模拟实现 二、memmove函数 函数介绍 模拟实现 三、memset函数 函数介绍 模拟实现 大家好&#xff0c;我是纪宁。这篇文章给大家介绍C语言中常见的内存处理函数。 一、memcpy函数 …

20.matlab数据分析极限(matlab程序)

1.简述 计算极限 MATLAB提供计算极限的limit函数。在其最基本的形式中&#xff0c;limit函数将表达式作为参数&#xff0c;并在独立变量为零时找到表达式的极限。 例如&#xff0c;要计算函数f(x)(x^3 5)/(x^4 7)的极限&#xff0c;因为x趋向于零。 syms xlimit((x^3 5)/…

day42-servlet下拉查询/单例模式

0目录 1.Servlet实现下拉查询&#xff08;两表&#xff09; 2.单例模式 1.实战 1.1 创建工程&#xff0c;准备环境... 1.2 接口 1.3 重写方法 1.4 servlet 1.5 list.jsp list.jsp详解 2.单例模式 2.1 饿汉模式&#xff1a;在程序加载时直接创建对象&#…