【笔记】下云的一小步尝试——内网穿透

云上的世界很精彩,可是越来越贵,系统也越来越臃肿;如果我只需要云提供网络接入,流量大的时候CDN和load balancer就够了,其他的业务只想在内部公开,那么就得将一些需要内部化的服务下云了。用自己的数据中心,自由自在!在财力不到之前,云上的网络接入虽然贵得肉疼,还是比较简单的,配置一下就四通八达了。我们只要解决云上和云下网络通信的问题。

想要把云上云下业务解耦,自然想到了内网穿透。就是你在内部有一个服务,这个服务如果连接到互联网上。传统的服务器软件诸如httpd,nginx,haproxy等都是top-down的代理,就是入口机器有了,然后入口机器要通达所有服务,iptables和tc上场编排了。要想将内部服务暴露出去,得有一个反向bottom-up的代理,就是一个服务在那里,只要内部服务能连接到外部这个服务上,流量就能联通。

frp是一个不错的选择:

https://github.com/fatedier/frp

网上很多配置教程,frps在连外网的机器上,frpc在内部机器上,反向联通就好了。但是,云上机器都给我安装了啥,为啥正常使用frp会被报告恶意软件?没关系,自己动手写一个简易版的,先将就着。

https://github.com/stallpool/apitunnel

原理还是比较简单的,让公网机器运行一个pub server,在内网用sub连接到pub上;当访问pub的时候把流量转移到sub上就好了。这个是纯http的服务,这样少写点代码也不用管https了,套上nginx或者traefic也很方便。

业务流量通了,有时还真需要ssh到服务器上。这个是比较危险的操作,可以威胁到内部系统安全;但是我们还是先把它打通,万一要用至少能派点用处,之后就是排布内部网络,防止通过pub/sub渗透到内网了。

因为pub/sub是http协议的,所有都得http。那么ssh自然是要联想到websocket了,网上搜索了下

https://github.com/mhzed/wstunnel

有大哥已经写过一个wstunnel了,然后还有人参考这个用rust写了一遍。我们就直接用wstunnel呗,也是node;为啥用node,不用go和rust呢,因为懒随时可以改,go和rust部署前需要编译…于是改造了下pub/sub,让它简单支持websocket的穿透。原理就是外部连接pub建立长链接,通知内部也建立一个长链接,然后通过pub/sub传递websocket的消息。

改造完发现wstunnel也是各种老旧,为了用上新的lib,先disable掉了一些功能,然后将websocket换成了ws

https://github.com/dna2fork/wstunnel-node

这样在内部启动一个wstunnel的server,sub注册好;再在外部启动一个wstunnel的client连上pub,就可以使用ssh -> wstunnel (client) -> pub -> sub -> wstunnel (server) 了。

至此,云上云下的连接简单弄好了。架构上就是云上抗请求,所有的请求入队列;云下慢慢读这个队列然后处理。完成。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图像分类:Pytorch实现Vision Transformer(ViT)进行图像分类

图像分类:Pytorch实现Vision Transformer(ViT)进行图像分类 前言相关介绍ViT模型的基本原理:ViT的特点与优势:ViT的缺点:应用与拓展: 项目结构具体步骤准备数据集读取数据集设置并解析相关参数定…

Vue3项目 网易严选_学习笔记

Vue3项目 网易严选_第一天 主要内容 项目搭建vuex基础路由设计首页顶部和底部布局 学习目标 知识点要求项目搭建掌握vuex基础掌握路由设计掌握首页顶部和底部布局掌握 一、项目搭建 1.1 创建项目 vue create vue-wangyi选择vue3.0版本 1.2 目录调整 大致步骤&#xff…

计算机网络 TCP/IP体系 物理层

一. TCP/IP体系 物理层 1.1 物理层的基本概念 物理层作为TCP/IP网络模型的最低层,负责直接与传输介质交互,实现比特流的传输。 要完成物理层的主要任务,需要确定以下特性: 机械特性:物理层的机械特性主要涉及网络…

CSS3 max/min-content及fit-content、fill-available值的详解

c3中对width的值多了几个值&#xff1a;fill-available, max-content, min-content, 以及fit-content。 1.width:fill-available 我们在页面中扔一个没有其他样式的<div>元素&#xff0c;则&#xff0c;此时&#xff0c;该<div>元素的width表现就是fill-availabl…

SAP打印输出设置

SAP打印输入有很多方式&#xff0c;适合不同的应用场景。 一.打印输出总体概览图 二.前台打印 这个是比较常见的&#xff0c;前端打印的出现减轻了管理员的工作量&#xff0c;用户可以选择自己电脑上的打印机输出&#xff0c;不需要所有打印机都在SAP平台中进行配置&#xff0…

web 学习第六次课程

文章目录 定位 定位 <body><div style"height:100px;width:100px;border:#F00 1px solid;"></div><div style"height:100px;width:100px;border: #00F 1px solid;"></div> </body><body><div style"pos…

Go 语言中的 GIF 图像处理完全指南:`image/gif`的技术与实践

Go 语言中的 GIF 图像处理完全指南&#xff1a;image/gif的技术与实践 概述安装与基础设置导入 image/gif 包初步配置示例&#xff1a;设置一个简单的 GIF 编码环境 读取与解码 GIF 图像读取 GIF 文件解析 GIF 数据 创建与编码 GIF 图像创建 GIF 图像编码 GIF 图像 处理 GIF 动…

【深度学习】wandb模型训练可视化工具使用方法

【深度学习】wandb模型训练可视化工具使用方法 wandb简介功能介绍登陆注册以及API keysproject和runsproject和runs的关系 wandb的配置实验跟踪版本管理Case可视化分析可视化自动调参&#xff08;wandb.sweep&#xff09;配置wandb.sweep1.配置 sweep_config2.初始化 sweep con…

学习STM32第十五天

SPI外设 一、简介 STM32F4XX内部集成硬件SPI收发电路&#xff0c;可以由硬件自动执行时钟生成、数据收发等功能&#xff0c;减轻CPU负担&#xff0c;可配置8位/16位数据帧&#xff0c;高位&#xff08;最常用&#xff09;/低位先行&#xff0c;三组SPI接口&#xff0c;支持DMA…

网站怎么实现HTTPS访问?

网站实现HTTPS的过程主要分为以下几个步骤&#xff1a; 1. 申请SSL证书&#xff1a; - 根据网站需求选择合适的SSL证书类型&#xff0c;DV证书只需验证域名所有权&#xff0c;适用于个人网站或小型项目&#xff1b;OV和EV证书需验证企业身份信息&#xff0c;适用于对信任度要求…

使用GAN做图像超分——SRGAN,ESRGAN

在GAN出现之前&#xff0c;使用的更多是MSE&#xff0c;PSNR,SSIM来衡量图像相似度&#xff0c;同时也使用他们作为损失函数。 但是这些引以为傲的指标&#xff0c;有时候也不是那么靠谱&#xff1a; MSE对于大的误差更敏感&#xff0c;所以结果就是会倾向于收敛到期望附近&am…

spring05:代理模式 和 AOP

spring05&#xff1a;代理模式 和 AOP 文章目录 spring05&#xff1a;代理模式 和 AOP前言一、静态代理模式&#xff08;代理类直接写好&#xff09;1. &#xff08;房东租房子 的案例&#xff09; 二、动态代理模式&#xff08;代理类是动态生成的&#xff09;1. &#xff08;…

动态代理,XML,Dom4j

文章目录 动态代理概述特点代码实现实现的关键步骤优点 XML概述作用编写第一个XML文件组成声明元素(标签、标记)属性注释转义字符[实体字符字符区(了解) 约束DTD约束Schema约束名称空间 Dom4jXML解析解析方式和解析器解析方式解析器Snipaste_2024-04-17_21-22-44.png<br /&g…

竞赛 基于LSTM的天气预测 - 时间序列预测

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 机器学习大数据分析项目 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/po…

【机器学习300问】74、如何理解深度学习中L2正则化技术?

深度学习过程中&#xff0c;若模型出现了过拟合问题体现为高方差。有两种解决方法&#xff1a; 增加训练样本的数量采用正则化技术 增加训练样本的数量是一种非常可靠的方法&#xff0c;但有时候你没办法获得足够多的训练数据或者获取数据的成本很高&#xff0c;这时候正则化技…

pajamas 1 daydream.sequence-template

0. 老实交代&#xff0c;最近对于python&#xff0c;非常之感冒 热天气常驻之后&#xff0c;各种毛病就来了&#xff1a;蚊子很彪悍&#xff0c;牙齿不舒服&#xff0c;肠胃那更是一坨 … 虽然不久前&#xff0c;荷包大残&#xff0c;但是关注到 mac mini 之后&#xff0c;就…

项目7-音乐播放器5+注册账号

1.前端代码 MAPPER Insert("insert into user(username,password) values (#{username},#{password}) ")Integer insertUserInfo(String username,String password); Service public Result insertUserInfo(String username, String oldpassword,String newpasswo…

MAC电脑M1安装OpenCV

最近在学习研究OpenCV&#xff0c;奈何只有mac电脑。安装OpenCV感觉还是挺麻烦的&#xff0c;所以记录一下&#xff0c;难免以后会忘记。 安装OpenCV我参考的帖子 https://www.bilibili.com/read/cv23613225/ 一、首先安装Anaconda 目前已安装不做赘述 二、启动命令窗口 方…

SpringBoot搭建环境

创建项目向导 用idea向导建SpringBoot项目&#xff1a;菜单 > File > New > Project… 选择向导&#xff1a; 默认向导 https://start.spring.io 建议用 https://start.aliyun.com 配置项目信息 Group : 组织名 Artifact : 项目名 Version : 版本号 name : 与Artifa…

【在线OJ系统】自定义注解实现分布式ID无感自增

实现思路 首先自定义参数注解&#xff0c;然后根据AOP思想&#xff0c;找到该注解作用的切点&#xff0c;也就是mapper层对于mapper层的接口在执行前都会执行该aop操作&#xff1a;获取到对于的方法对象&#xff0c;根据方法对象获取参数列表&#xff0c;根据参数列表判断某个…
最新文章