我的第一个DMZ方案实践
方案提出的初衷:外网需要定时和不定时推送数据到内网服务器(只要求数据到达内网,没有要求直接连接到内网)
为什么不是直连到内网:每个人第一想到的是不安全,是的,没错不安全。内网的应用和外网的应用最明显的区别就是承载的访问量,虽然都应该配置防恶意攻击策略,但是内网的应用一般不会像外网的应用考虑那么多安全的策略。所以这里的安全,包含防窃取资料的安全性、恶意攻击以及给hacker留了后门等因素。(我想的是这些)
所以,专门留一台外网可以访问的机器A,外网把数据推送到机器A,然后内网的应用B去机器A PULL 数据。
怎么去PULL数据?
有两种方式:
第一,定时去机器A PULL,缺点有延时,如果每隔20分钟取一次数据,最长延时为20分钟。如果外网推送本来就延时推送,那么数据状态实际产生的时间到达数据的最终消费者的时候,延时更长。
第二,监听机器A,当机器A上一旦有可用数据的时候,就PULL过来。(我采用的是这种方案)
监听机器A怎么监听?
第一,可以自己写个程序,建立请求连接,机器A保留连接请求不立即响应,等到机器A上有可用消息的时候,再响应。(相当于我们在HTTP里面经常说的 long connection)
第二,使用MSMQ的reveive方法,这个方法本身就实现了这样的机制,当MSMQ中有可用消息时Receive才返回消息。这里需要合理建立专门的消息队列。
推送消息怎么到达数据消费者C?
监听机器A是否有可用消息的服务,我们暂且称为“数据转发服务B”,转发服务可以独立部署,也可以部署在消费者C里面。
我最初把转发服务部署在IIS上,并且设置应用程序池不回收,即“固定时间间隔”设置为0,“限制超时”也设置为0,但是过几个小时后,这个转发服务还是会“休息”,需要访问这个站点的一个页面,使服务“醒”过来。服务没有死,只是可能闲置了,被回收了。具体原因望高手支招。
后来把转发服务配置到了windows服务,这样不会有应用程序池被回收的问题。
数据消费者C需要公开一个接受“推送数据”的服务,转发服务将PULL得到的数据 转 给 该服务。
这样的完整流程我实现了,目前运行正常,但不知会有什么潜在问题?望高手支招。
以上叙述中,机器A是处于DMZ中的。
备用方案:
由于推送数据经过了两个中间机器,机器A和转发服务处于的机器,如果哪天不能用了,让数据消费者B临时主动请求外网API去获得数据,这样对消费者B是有压力的,所以不建议这样使用。
小插曲,就因为后期做了一个主动请求外网API的备用方案,上线测试的时候,没有考虑到生成环境的数据库有上万的历史数据,导致系统异常发了上万条异常邮件。因此被记过加现金处罚。
我的第一个DMZ方案实践的更多相关文章
- 网易云信技术分享:IM中的万人群聊技术方案实践总结
本文来自网易云信团队的技术分享,原创发表于网易云信公众号,原文链接:mp.weixin.qq.com/s/LT2dASI7QVpcOVxDAsMeVg,收录时有改动. 1.引言 在不了解IM技术的人眼 ...
- 第五十一个知识点:什么是基于ID的加密的安全模型,然后描述一个IBE方案
第五十一个知识点:什么是基于ID的加密的安全模型,然后描述一个IBE方案 在公钥密码学中,如果Alice想要给Bob发送一条消息,她需要Bob的公钥,一般来说公钥都很长,就像一个随机的字符串. 假设A ...
- 基于Github Actions + Docker + Git 的devops方案实践教程
目录 为什么需要Devops 如何实践Devops 版本控制工具(Git) 学习使用 配置环境 源代码仓库 一台配置好环境的云服务器 SSH远程登录 在服务器上安装docker docker技术准备工 ...
- 基于微前端qiankun的多页签缓存方案实践
作者:vivo 互联网前端团队- Tang Xiao 本文梳理了基于阿里开源微前端框架qiankun,实现多页签及子应用缓存的方案,同时还类比了多个不同方案之间的区别及优劣势,为使用微前端进行多页签开 ...
- Linux实战教学笔记39:Mha-Atlas-MySQL高可用方案实践(一)
一,mysql-mha环境准备 1.1 实验环境: 主机名 IP地址(NAT) 描述 mysql-db01 eth0:192.168.0.51 系统:CentOS6.5(6.x都可以) 安装:mysq ...
- redis-sentinel 高可用方案实践
近期公司的一块核心业务使用redis作为配置转发中心,存在单点问题,考虑服务的可靠性.针对业务需求,我们确定了我们的需求: 异地跨机房容灾 故障自动切换 尽可能高的保证数据不丢失 针对以上需求,我们分 ...
- docker监控方案实践(cadvisor+influxdb+grafana)
一.概要 1.1 背景 虚拟化技术如今已经非常热门,如果你不知道什么是虚拟化,那你应该了解虚拟机.虚拟化技术如同虚拟机一样,用于将某些硬件通过软件方式实现"复制",虚拟出" ...
- DevOps研发模式下「产品质量度量」方案实践
在当今互联网环境下,需求变更越来越快,交付周期却越来越短, 怎么判断一个系统是否测试充分? 产品质量满足什么样的条件才能投产? 如何判断测试工作.研发团队工作的效率是高还是低? 这些问题不能靠感觉.拍 ...
- 知识全聚集 .Net Core 技术突破 | 如何实现一个模块化方案一
简介 模块化的介绍一共2篇 这一篇我们实现一个功能非常简单的StartupModules模块化. 第二篇我们来实现一个ABP的模块化效果. 思考 其实来简单想一下模块化的实验思路,写个接口=>模 ...
随机推荐
- 制作OS X 10.9 Mavericks 安装U盘
转载:http://www.macx.cn/forum.php?mod=viewthread&tid=2094799 安装win7的话,在mac中使用bootcamp制作一个win7安装盘即可 ...
- 理解 OpenStack + Ceph (4):Ceph 的基础数据结构 [Pool, Image, Snapshot, Clone]
本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...
- Javascript的DOM操作 - 你真的了解吗?
摘要 想稍微系统的说说对于DOM的操作,把Javascript和jQuery常用操作DOM的内容归纳成思维导图方便阅读,同时加入性能上的一些问题. 前言 在前端开发的过程中,javascript极为重 ...
- Codeforces 715A. Plus and Square Root[数学构造]
A. Plus and Square Root time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- Thread对象的yield(),wait(),notify(),notifyall()
Thread类中的主要方法: join()方法:让一个线程强制运行,线程强制运行期间,其他线程无法运行,必须等到此线程完成之后才可以继续执行. setDaemon():设置线程为后台线程,这样即使Ja ...
- vijos1037搭建双塔(一维背包问题)
描述 2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷为平地,Mr. F曾亲眼目睹了这次灾难.为了纪念“9?11”事件,Mr. F决定自己用水晶来搭建一座双塔. Mr. F有N块水晶,每块 ...
- Fragment的startActivityForResult详细解决方案
由于要用到Fragment中startActivityForResult,所以一开始就直接用activity.startActivityForResult(intent, 0);发现这样用首先会跳转到 ...
- ip的划分,超详细
from:http://blog.liuts.com/post/128/ IP和子网掩码我们都知道,IP是由四段数字组成,在此,我们先来了解一下3类常用的IP A类IP段 0.0.0.0 到127.2 ...
- PhpExcel中文帮助手册|PhpExcel使用方法
下面是总结的几个使用方法 include 'PHPExcel.php'; include 'PHPExcel/Writer/Excel2007.php'; //或者include 'PHPExcel/ ...
- XAMPP中proftpd的简明配置方法
XAMPP中proftpd的简明配置方法 用LAMPP的安装方法可以开一个默认的nobody用户,用lampp security就可以初始设置相应的默认用户密码.如果要有多用户,又怎样管理.目录怎 ...