如何理解AWS 网络,如何创建一个多层安全网络架构
一、要求
- 创建一个三层网络架构,服务器只能通过跳板机连接;
- web 服务器只能由跳板机连接,80 端口只能由 ELB 访问,服务器不分配公网IP,外网连接通过 NAT;
- 数据库服务器只能由 web 服务器连接 3306 端口;
- 服务器分布在多 AZ。
网络架构图

网络各组件关系
组件包括 NACL,Route,Security Group,Internet Gateway,NAT Gateway,Elastic IP等。

二、操作步骤
2.1、网络设置
- 创建 VPC,如果希望创建的 EC2 实例带有公网 DNS,请打开 VPC 的
DNS hostnames enable的设置; - 创建 IGW,附加到 VPC 上面;
- 创建需要的六个子网,放在创建的 VPC 下面;
- 创建三个路由,分别为私网,NAT,公网;
- 公网路由添加条目
0.0.0.0/0路由到 IGW,然后关联两个公有子网,两个公有子网开启自动分配公网IP; - 私网路由不需要添加路由条目,默认即可,关联到两个私有子网;
- 创建 NAT 网关,选择放置公有子网;
- NAT 路由添加路由条目
0.0.0.0/0路由到刚刚创建的 NAT 设备,然后关联两个私有子网;
2.2、安全设置
可以设置 NACL,为每个子网设置防火墙,我们这里为了简便,不再进行设置,只设置实例的安全组完成。
- 为跳板机实例创建安全组 bastion-sg,只允许特定的 IP 访问 22 号端口;
- 为 ELB 实例创建安全组 elb-sg,只允许访问 80 端口;
- 为 Web 实例创建安全组 web-sg,所有流量只允许 bastion-sg,elb-sg 组内的实例访问;
- 为数据库实例创建安全组 db-sg,只允许 web-sg 组内的实例访问 3306 端口。
2.3、创建实例
- 创建跳板机实例,选择第一个公有子网,配置好设定的安全组;
- 分别创建 Web 实例,选择三,四两个私有子网,配置好设定的安全组;
- 创建 RDS 子网租,选择五,六两个私有子网,创建实例,选择刚创建的子网组。
三、费用
3.1、NAT 网关费用
如果选择在 VPC 中创建 NAT 网关,您需要为 NAT 网关预置和可用的每个“NAT 网关小时”付费。通过 NAT 网关处理的每个 GB 都要收取数据处理费,与流量源或目的地无关。运行未满一小时的 NAT 网关小时将按一小时计费。通过 NAT 网关传输的所有数据也会产生标准的 AWS 数据传输费用。如果您不希望再支付 NAT 网关费用,只需使用 AWS 管理控制台、命令行界面或 API 删除 NAT 网关即可。
例如弗吉尼亚北部价格:
| 每 NAT 网关的价格(USD/小时) | 处理每 GB 数据的价格 (USD) |
|---|---|
| 0.045 USD | 0.045 USD |
如何理解AWS 网络,如何创建一个多层安全网络架构的更多相关文章
- visjs使用小记-1.创建一个简单的网络拓扑图
1.插件官网:http://visjs.org/ 2.创建一个简单的网络拓扑图 <!doctype html> <html> <head> <title> ...
- AWS探索及创建一个aws EC2实例
一.AWS登陆 1.百度搜索aws,或者浏览器输入:http://aws.amazon.com 2.输入账户及密码登陆(注册流程按照提示走即可) 二.创建EC2实例(相当于阿里云的ecs) 1.找到E ...
- 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包
MSBuild 的 Task 为我们扩展项目的编译过程提供了强大的扩展性,它使得我们可以用 C# 语言编写扩展:利用这种扩展性,我们可以为我们的项目定制一部分的编译细节.NuGet 为我们提供了一种自 ...
- 如何创建一个基于命令行工具的跨平台的 NuGet 工具包
命令行可是跨进程通信的一种非常方便的手段呢,只需启动一个进程传入一些参数即可完成一些很复杂的任务.NuGet 为我们提供了一种自动导入 .props 和 .targets 的方法,同时还是一个 .NE ...
- OpenStack 网络总结之:openstack中网络的基本概念
原文:openstack-install-guide-yum-icehouse.pdf/7. Add a networking service/Networking concepts OpenStac ...
- SQL Server创建、更改和删除架构
SQL Server创建架构 学习如何使用SQL Server CREATE SCHEMA在当前数据库中创建新架构. SQL Server中的架构是什么 架构是包括表,视图,触发器,存储过程,索引等在 ...
- Unity带有网络功能——创建服务,并连接到一个特定的服务
游戏本身需要在网络上创建服务,然后其他的游戏能够连接到这个服务,此外真实场景现在玩同样的游戏效果一起. 该方法是创建一个服务呼叫Network.InitializeServer( ): 是Networ ...
- [Swift通天遁地]四、网络和线程-(13)创建一个Socket客户端
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- [Swift通天遁地]四、网络和线程-(14)创建一个Socket服务端
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
随机推荐
- Django Forms的错误提示
1.error_messages={} 首先,在构建form表单时,可以用"error_messages={}"自定义错误信息,例如: # form.py 1 from djang ...
- Miniprofiler 监控ef执行详解
首先NuGet添加 相对应ef版本的Miniprofiler.ef引用 web.config文件中添加 <system.webServer> <handlers> <a ...
- Linux - 网络配置( CentOS 64 )
终于..今天我终于将linux的网络调试出来了,虽然之前看了一大堆教程,每一个都是一样的步骤,但是,在我这就是弄不好,所以经过不断尝试的我,今天发一个自己配置好的步骤,唉,太痛苦了. - 对了补充一句 ...
- javascript权威指南第12章DOM2 DOM3 示例代码
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> Example XHTML ...
- boost::swap
boost::swap是对标准库里的std::swap的增强和泛化,为交换两个变量的值提供便捷的方法. 为了使用需包含头文件: #include <boost/swap.hpp> 原理 c ...
- mysql kill所有Sleep/Execute进程
现查出需要kill的进程: SELECT GROUP_CONCAT(CONCAT('kill ',id) SEPARATOR '; ') AS cmd FROM information_schema. ...
- Mac 安装软件时,提示已损坏解决
"xxx.app已损坏,打不开.你应该将它移到废纸篓",并非你安装的软件已损坏,而是Mac系统的安全设置问题,因为这些应用都是破解或者汉化的,那么解决方法就是临时改变Mac系统安全 ...
- (4)打造简单OS-loader硬盘加载和C++写入文件
0.简要说明: 我们完全可以使用bochs创建映像文件,如https://blog.csdn.net/jadeshu/article/details/89046838 ,那么为什么还去用C++去模 ...
- TCP数据的传输过程
建立连接后,两台主机就可以相互传输数据了.如下图所示: 上图给出了主机A分2次(分2个数据包)向主机B传递200字节的过程.首先,主机A通过1个数据包发送100个字节的数据,数据包的 Seq 号设置为 ...
- Java 8:掌握 Lambda 表达式
本文将介绍 Java 8 新增的 Lambda 表达式,包括 Lambda 表达式的常见用法以及方法引用的用法,并对 Lambda 表达式的原理进行分析,最后对 Lambda 表达式的优缺点进行一个总 ...