文章目录
- 分配子网
- 给Public子网分配互联网网关
- 创建互联网网关
- 附加到VPC
- 给Public子网创建路由表
- 关联子网
- 打通Public子网和互联网网关
- 创建Public子网下的EC2进行测试
- 配置Private子网路由
- 给Private子网创建路由表
- 附加在Private子网
- 创建Private子网下的EC2进行测试
- 创建实例
- 在跳板机上配置“密钥对”文件
- 连接测试
- 知识点
现实场景中,我们希望一些服务器不可以被外网SSH登录上去,但是可以通过某一台跳板机登录。这样只用加固这台跳板机的安全性,就可以在一定程度上保障整个集群的安全。
在AWS场景下,我们一般使用子网去做IP地址段的分割,然后限制子网的访问性来达到这样的目的。
回顾下《AWS攻略——使用ACL限制访问》,其架构通过主ACL或者子网ACL来实现安全访问。
如果我们不用子网,也可以直接使用复杂的ACL规则来达成。但是这就要求EC2实例不能新增,因为新增的EC2会在子网IP/CIDR下自动分配一个IP,而该IP不能指定。已编辑好的ACL不能预先知道IP的存在,于是就需要再次编辑ACL来满足新机器的情况。
举个例子:假如目前只有两台机器,一台是100.0.0.10,一台是100.0.0.11。我们规定100.0.0.10这台机器可以被外网访问,而100.0.0.11不能,则可以配置两条规则。如果后续新增一台100.0.0.121的机器,则需要在ACL中再新增一条针对其的记录。这样的设计是非常不友好的,而通过子网划分就可以很好解决这个问题。因为EC2创建过程中要选择子网,这样就可以通过子网的IP/CIDR将规则一次性写好。
我们删除掉《AWS攻略——创建VPC》创建的子网和机器,以及《AWS攻略——使用ACL限制访问》中创建的ACL。设计两个子网来满足上述需求。
分配子网
在子网创建页面,选择VPC后,按下图分配两个子网。
名字为test-vpc-private的子网IP/CIDR是100.0.0.0/25,地址长度是2(32-25)=128,即100.0.0.0~100.0.0.127。于是名字为test-vpc-public的子网只能从100.0.0.128开始分配,为了填满VPC,其长度是2(32-24)-2(32-25)=2(32-25)=128,于是它的IP/CIDR是100.0.0.0128/25。
给Public子网分配互联网网关
创建互联网网关
附加到VPC
给Public子网创建路由表
在路由表创建页面,
关联子网
打通Public子网和互联网网关
在上述路由表中配置
创建Public子网下的EC2进行测试
如下图,我们将机器分配在test-vpc-public子网下,并选用之前博文中创建的密钥对,以便后续测试。
配置Private子网路由
给Private子网创建路由表
附加在Private子网
创建Private子网下的EC2进行测试
创建实例
我们将该实例放在test-vpc-private子网中。
注意需要选择“密钥对”。
我们没有给其分配共有IP,于是它的共有IPv4地址是没有的。这样这台实例就不能通过外网ssh上去了。但是其终极原因是它处在Private子网里。
我们也可以给其开启“自动分配共有IP”,让其有一个出口IP。
但是由于其所在Private子网没有将互联网网关配置到路由上,导致其不能在外部通过ssh登录。
在跳板机上配置“密钥对”文件
在test-vpc-public-instance实例上新建一个pem文件,然后将“密钥对”文件内容粘贴进去。
通过chmod 400 your.pem文件来修改文件权限。
连接测试
执行 ssh -i “your.pem” ec2-user@your-private-instance-ip来测试登录
知识点
Public subnet(共有子网) 和 Private subnet(私有子网)区别在于Public Subnet的路由配置了连接互联网的网关。