AWS里面默认配置了4种场景的配置向导。通过这些向导可以很轻松的配置VPC网络。从学习的角度出发,豆子打算手动配置一下第二种场景,这样更能清楚的知道每一个服务组件的功能和关系。


场景拓扑如下

http://docs.aws.amazon.com/zh_cn/AmazonVPC/latest/UserGuide/VPC_Scenario2.html

情景 2 配置

下表展示了此情景配置的主要组成部分。

AWS - 手动创建VPC 公网,子网和NAT实例_ Nat


简单的说就是需要创建两个子网,公网(或者更传统的更准确的说法是DMZ网)里面是网页服务器和NAT服务器,都可以访问互联网,内网里面是数据库服务器,网页服务器需要从数据库上读取信息,数据库服务器只有通过NAT服务器才能访问互联网。


配置向导1分钟就全都配完了,如果全手动操作,需要按顺序配置以下服务:

  1. VPC

  2. VPC下面配置两个子网

  3. 配置互联网的网关

  4. 给3种类型的服务器,Web Server, NAT Server 和DB Server 分别创建Security Group (防火墙)

  5. 安装服务器

  6. 每个子网需要配置对应的路由表

  7. 测试



首先创建一个VPC

AWS - 手动创建VPC 公网,子网和NAT实例_ vpc_02


分配一个地址池

AWS - 手动创建VPC 公网,子网和NAT实例_ Nat_03

创建好了

AWS - 手动创建VPC 公网,子网和NAT实例_aws_04


然后需要在VPC的地址池内再创建2个子网

AWS - 手动创建VPC 公网,子网和NAT实例_ Nat_05



创建一个公网(DMZ)地址范围,这个网络是可以直接和互联网相连的

AWS - 手动创建VPC 公网,子网和NAT实例_aws_06


然后创建一个私网范围,这个网络通过NAT才能访问外网资源,但是外网无法直接访问他

AWS - 手动创建VPC 公网,子网和NAT实例_aws_07


建好以后的样子

AWS - 手动创建VPC 公网,子网和NAT实例_ vpc_08


然后需要给Public网络创建一个网关,这样才能去互联网

AWS - 手动创建VPC 公网,子网和NAT实例_ Nat_09


创建互联网网关

AWS - 手动创建VPC 公网,子网和NAT实例_ vpc_10


创建之后需要关联到指定的VPC,注意关联的是VPC而不是子网哦

AWS - 手动创建VPC 公网,子网和NAT实例_aws_11

AWS - 手动创建VPC 公网,子网和NAT实例_ Nat_12


然后接下来创建3个安全组。每个虚拟机都会关联到某个安全组,在安全组上可以自定义防火墙的访问策略


AWS - 手动创建VPC 公网,子网和NAT实例_aws_13

我需要创建3个不同的安全组,分别对应Pubic Web server, NAT Server和 Private DB Server

AWS - 手动创建VPC 公网,子网和NAT实例_ Nat_14

AWS - 手动创建VPC 公网,子网和NAT实例_aws_15

AWS - 手动创建VPC 公网,子网和NAT实例_ Nat_16


创建完毕之后就可以配置防火墙的策略了。如下所示是最最基本的需求,也可以根据自己情况修改

AWS - 手动创建VPC 公网,子网和NAT实例_aws_17

AWS - 手动创建VPC 公网,子网和NAT实例_ vpc_18

AWS - 手动创建VPC 公网,子网和NAT实例_ vpc_19

AWS - 手动创建VPC 公网,子网和NAT实例_ vpc_20

AWS - 手动创建VPC 公网,子网和NAT实例_ Nat_21

AWS - 手动创建VPC 公网,子网和NAT实例_ Nat_22




配置完安全组,就来配置实例吧。搜索NAT的镜像文件,找一个最新的Launch即可



AWS - 手动创建VPC 公网,子网和NAT实例_aws_23

AWS - 手动创建VPC 公网,子网和NAT实例_aws_24

AWS - 手动创建VPC 公网,子网和NAT实例_ Nat_25

AWS - 手动创建VPC 公网,子网和NAT实例_ vpc_26

AWS - 手动创建VPC 公网,子网和NAT实例_aws_27



具体的步骤不需要赘述,就是创建了3个AMI Linux实例,注意选择安全组和子网就行了。


3个实例里面最关键的是NAT实例,创建完了以后可以查看一下配置文件是否齐全,IPTable 是否已经配置了


AWS - 手动创建VPC 公网,子网和NAT实例_ vpc_28


AWS - 手动创建VPC 公网,子网和NAT实例_ Nat_29


下面是个截图,简单的解释了一下IPtables 的转发配置

AWS - 手动创建VPC 公网,子网和NAT实例_aws_30


创建了实例之后,需要给不同的子网创建路由表。我不打算使用默认的路由表,于是分别创建了2个路由表


AWS - 手动创建VPC 公网,子网和NAT实例_aws_31

AWS - 手动创建VPC 公网,子网和NAT实例_ Nat_32


这个是公网的路由

AWS - 手动创建VPC 公网,子网和NAT实例_ vpc_33


这个是私网的路由

AWS - 手动创建VPC 公网,子网和NAT实例_aws_34

AWS - 手动创建VPC 公网,子网和NAT实例_ vpc_35


配置完之后别忘记Disable NAT实例的 S/D 测试。


AWS - 手动创建VPC 公网,子网和NAT实例_ vpc_36


okay,最后我们来测试一下


首先连接到公网的服务器看看



AWS - 手动创建VPC 公网,子网和NAT实例_ Nat_37

试试看wget -p www.google.com, 发现不通,嗯,正常,因为outbound的规则里面本来就没有包括http/https


AWS - 手动创建VPC 公网,子网和NAT实例_ Nat_38


然后我们拿这个机器作为跳板,链接到私网的服务器试试看,把证书拷贝到/tmp路径下,更改一下权限

AWS - 手动创建VPC 公网,子网和NAT实例_ vpc_39


然后ssh链接,成功登录内网服务器

AWS - 手动创建VPC 公网,子网和NAT实例_ Nat_40


可以Ping 外网

AWS - 手动创建VPC 公网,子网和NAT实例_ vpc_41

也可以http 外网资源

AWS - 手动创建VPC 公网,子网和NAT实例_aws_42


实验成功!