VPC创建好后会自动为我们创建一条默认路由,VPC当中子网内的所有的资源都可以通过这条主路由进行私网地址的访问。
分别创建三个子网,公有子网subnet-public,私有子网subnet-private,私有子网但是可以访问互联网subnet-private-access-web
查看创建好的互联网网关,状态为Detached
需要将该互联网网关与上述步骤创建的VPC进行关联
关联后,状态变为Attached
需要定义2个路由表,一个是为共有子网使用的,一个是为私有子网可上网的那个子网使用的
公有子网
公有子网
添加一条路由,让想上互联网的地址通过这条路由走到igw
补充:VPC的内部资源想通过私网地址访问的话走的是10.0.0.0/16
私有子网(可访问外部网络)
公有子网
到这步为止就实现了路由与公有子网的关联
私有子网(可访问外部网络)
私有子网
到此为止我们就创建好了一个VPC,包括三个子网,互联网网关,NAT网关,添加了两个路由条目,此时,我们可以在公有子网中部署我们的web服务器,在可上网的私有子网中部署我们的应用程序服务器,在私有子网中部署我们的数据库服务器,如果这三个服务器想通过内网地址访问的话,它走的就是我们这个主路由表,也就是默认路由10.0.0.0/16(创建VPC自动为我们创建的路由),目标指向local的这个路由,如果说公有子网中的服务器想去访问互联网的话,它走的是0.0.0.0/0 指向igw的那个路由条目,如果私有子网想去访问互联网的话,它走的是0.0.0.0/0 指向igw的那个路由条目
要注意网络设置部分,VPC选择我们创建好的VPC,子网选择公有子网,安全组选择上一步骤中创建的全流量的安全组即可
创建好的实例如下
为该EC2实例分配一个弹性IP地址
在私有子网中创建的EC2实例,只有一个私有IP,即使给它分配一个公网IP,也是不能访问互联网的,而我们在公有子网中创建的EC2实例是可以通过互联网进行访问的,那如果我们想连接到私有子网中的EC2实例,应该怎么做呢,我们可以将公有子网中的EC2实例作为一个跳板机进行访问
确认私有子网中的 EC2实例的私有IP地址,用ssh进行连接
[root@ip-10-0-0-223 ~]# vim key-seoul-new.pem
[root@ip-10-0-0-223 ~]# chmod 400 key-seoul-new.pem
[root@ip-10-0-0-223 ~]# ssh -i key-seoul-new.pem ec2-user@10.0.2.106
The authenticity of host '10.0.2.106 (10.0.2.106)' can't be established.
ED25519 key fingerprint is SHA256:FHymk7XVQtPcePlRB8j1tEHIQKiGA1JmLhyRH4nqwdY.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.0.2.106' (ED25519) to the list of known hosts.
, #_
~\_ ####_ Amazon Linux 2023
~~ \_#####\
~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
[ec2-user@ip-10-0-2-106 ~]$
EC2想要访问S3,必须有两个条件,第一个就是网络可达,EC2可以通过网络访问到S3的服务,另外一个就是EC2有相应的访问S3的权限
为EC2赋予访问S3权限的角色
公有子网中的EC2实例可以访问到外部网络
私有子网中的EC2实例是访问不了外部网络以及公共服务S3的
创建终端节点之后再次访问公共访问S3既可以访问
在终端节点上也可以添加存储桶策略,使得只允许委托者访问某个存储桶
仅允许委托者访问"arn:aws:s3:::s3-logo-0307"存储桶的List*,DeleteObject,GetObject权限
{
"Version": "2012-10-17",
"Id": "Policy1680423453373",
"Statement": [
{
"Sid": "Stmt1680423447384",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:List*"
],
"Resource": "arn:aws:s3:::s3-logo-0307"
}
]
}