通俗解读“AWS VPC子网”

关键要点:

  • AWS VPC现在是运行云VM的默认方案。
  • 你的VPC依然可以像传统的本地部署网络一样,只是会有更多的自动化和缩放功能。
  • VPC可以包含所有公共子网或公/私子网的组合。

Amazon VPC是AWS云主机的核心,它是一个比较难理解的复杂概念,尤其是对于那些缺乏基础设施运维经验的开发者来说。开发者是云项目涉及最多的队伍成员,但在大多数的项目里,他们还是缺乏基础设施运维知识。

在本文中,我们将讨论AWS中可用的、不同类型的VPC设置。然后,我们将一起理解VPC中的技术用语,并将这些技术用语翻译成非专业用语,以便于大家更容易理解VPC。

AWS通过引进“EC2经典版”开始了“虚拟网络”之旅,这是AWS在“虚拟网络”中创建EC2实例的第一代方法。然而最终,AWS不再支持EC2经典版。AWS停止支持EC2经典版转而引进“EC2 VPC”(也就是AWS VPC网络)。

AWS抛弃“EC2经典版”的原因之一是:你的AWS网络是与其他AWS租户共享的。这意味着“虚拟网络”并不是你的私人网络(针对你的账户来说)。对于那些在本地托管服务器时习惯于独立运维自己网络的团队来说,这种限制有点违背实际需求。这一需求促使AWS提出了他们的第二代“虚拟网络”:EC2-VPC。

当你在AWS账户中启动一个实例时,默认情况下它将在一个默认的VPC上启动,并获得公共IP和私有IP。这是怎么实现的呢?

什么是EC2-VPC?

Amazon VPC使你能够在你自己的逻辑隔离区域里(AWS云中)定义一个虚拟网络,即所谓的虚拟私有云(VPC)。你可以在你的VPC中启动AWS资源(例如实例)。你的VPC和一个传统的网络非常相似,你可以在自己的数据中心中操作(有了使用AWS可伸缩基础设施的好处之后)。

如果你的AWS账户是在2013年12月04日之后创建的,它仅支持EC2-VPC。在这种情况下,AWS会为你在每个AWS区域中创建一个默认的VPC。因此,除非你自己创建了一个非默认的VPC,并在启动一个实例时指定它,否则AWS将在默认的VPC中启动你的实例。

在默认的VPC创建过程中会发生什么?

AWS创建默认的VPC时,它会:

  • 创建IPv4 CIDR块大小为/16的VPC(172.31.0.0/16),最多可提供65,536个私有IPv4地址。
  • 在每个可用区中创建一个大小为/20的默认子网,还将为每个子网提供多达4,096个地址,其中一些被预留下来供我们使用。
  • 创建一个Internet网关,并将其连接到你的默认VPC。
  • 为你的默认VPC创建一个主路由表,设置将所有的IPv4流量发送到Internet网关的规则。设置将所有前往Internet的IPv4流量发送到Internet网关的规则。
  • 创建一个默认安全组并将其与你的默认VPC相关联。
  • 创建一个默认的网络访问控制列表(ACL),并将其与你的默认VPC相关联。
  • 将你的AWS账户的默认DHCP选项与你的默认VPC相关联。

VPC可以有公共子网或私有子网。你可以从这儿了解更多关于这些场景的信息。

子网是VPC的关键组件。VPC可以包含所有公共子网或公/私子网的组合。私有子网是一个没有路由到Internet网关的子网。通过虚拟专用网关路由流量,子网可以配置成仅限VPN的子网。你可以从这儿了解更多关于启用VPN的信息。

EC2实例启动时,VPC如何连上子网?

如上所述,分配到你账户的VPC是一个逻辑隔离的网络。每个计算资源(换句话说,就是AWS EC2实例)将会在“一个”VPC中启动。

在VPC中启动实例:

当你启动一个实例并指定一个VPC时,首先要做的是,确定启动该实例需要的子网。如果没有选择子网,AWS将在选定的VPC中选择默认子网。一旦确定出你的子网,下一步是确定一个可用区。用户可以自己选择这个区域,或让AWS为其选择一个区域。

一旦在VPC/子网/可用区中创建了一个实例,该子网IPv4地址范围内的一个主私有IP地址将被分配给该实例的默认网络接口(eth0)。每个实例还被赋予一个私有的(内部)DNS主机名(解析后是该实例的私有IP地址)。如果你没有指定主私有IP地址,我们将为你选择一个子网范围内的可用IP地址。

当你将一个实例启动到一个已经启用了公共IP地址属性的子网时,一个公共IP地址将被分配给为该实例创建的主网络接口(eth0)。一个公共IP地址通过网络地址转换(NAT)映射到主私有IP地址。当你停止EC2实例并重新启动时,之前分配的公共地址将会发生变化。

当我们讨论IP地址时,需要理解的一个细节是,公共IP地址不同于AWS弹性IP地址(EIP)。分配给一个实例的公共IP地址来自于Amazon的公共IPv4地址池。当你停止和启动(或终止)一个实例时(但不是在重启期间),分配给该实例的公共IP地址将会发生变化。EIP先被分配给一个用户账户,再被分配给一个实例。除非你将它从实例中分离或将其从你的帐户中释放出来,否则EIP将保持不变。在使用EIP时,你需要知道,如果这个IP没有分配给正在运行的实例,你也需要付费。你可以从这儿了解更多的细节。

除非你有配置或搭建数据中心网络的前期经验,否则理解所有这些潜在的工作细节会让你觉得难于上青天。如果你不信,那请继续读下去。

既然我们已经了解了VPC的内部工作原理,以及如何启动一个实例,现在就让我们试着理解技术定义,然后尝试用办公大楼的类比将这些定义转换为非专业术语。

以下是我们目前讨论的AWS资源的技术定义:

VPC定义

Amazon VPC允许你在AWS云中获得一个逻辑隔离的部分,你可以在你定义的虚拟网络中启动AWS资源。你对你的虚拟网络环境有完全控制权,包括你自己的IP地址范围的选择、子网的创建以及路由表和网络网关的配置。你可以在VPC中同时使用IPv4和IPv6,以确保安全方便地访问资源和应用程序。

区域和可用区

Amazon EC2托管在全球多个位置。这些位置由区域和可用区构成。每个区域 都是一个独立的地理区域。每个区域都有多个相互隔离的位置,称为可用区。

子网

子网是“网络的一部分”,换句话说,它是整个可用区的一部分。每个子网必须完全托管在一个可用区中,并且不能跨区。

IP地址

一组由时间间隔来分离的独特的数字:通过使用互联网协议在网络上进行通信来识别每台计算机。AWS中的每个实例都有2个IP地址,一个私有IP地址和一个公共IP地址。

安全组

一个安全组相当于一个虚拟防火墙,它可以控制一个或多个实例的流量。当你启动一个实例时,你将一个或多个安全组与实例关联起来。你可以为每个安全组设置规则,以控制进出它的相关实例的流量。

非专业术语

为了使这些概念更容易理解,我们将使用一个办公大楼进行类比:

  • 把你的办公室想象成一个多层建筑
  • 每个楼层都有多个套房
  • 每个部门(比如人力资源部门,工薪部门)可以在同一层楼或多层楼
  • 每个套房都有几个房间
  • 每个房间都有几张员工们用于办公的办公桌

**区域:**把办公楼想象成一个区域。就像AWS区域如何包含其他组件一样,办公大楼是一个包含许多东西的建筑主体。

**可用区:**把每一层想象成一个可用区。就像一个区域可以有多个可用区一样,我们的建筑也不止一层。

**VPC:**办公室里的每个部门都像一个VPC。如同VPC中跨区域的可用区,办公室的每个部门都可以跨越不同的楼层。

**子网:**每个套间代表一个子网。就像每个子网在一个可用区的情况一样,每个套间都只是该层的一部分,并且它不会跨楼层。

**IP地址:**套间中的一个桌子代表一个IP地址。

当公司给员工分配办公桌时,他们首先会判断:

  • 这个员工属于哪个部门
  • 然后确定部门跨哪些楼层
  • 然后确定哪些套间有可用的桌子
  • 向员工分配一个可用的办公桌

同样,当人们启动AWS EC2实例时:

  • 我们需要选择这个实例应该部署到哪个VPC上
  • 然后我们选择用哪个可用区(如果未选择,就是默认可用区)
  • 接着我们选择子网(如果未选择,就是默认子网)
  • 最后这个子网的IP被分配给我们的EC2实例(作为私有IP)

其他相关的术语

在学习AWS VPC和启动EC2实例时,你需要理解的术语其实不多。

安全组:

一个安全相当于一个虚拟防火墙,它控制一个或多个实例的流量。当你启动一个实例时,你将一个或多个安全组与实例关联起来。你可以为每个安全组设置规则,以控制进出它的相关实例的流量。

针对“安全组”,我们可以联想到办公室的门禁卡。根据你预期的安全系数,你可以在AWS中中应用不同级别的安全组。同样类比到办公大楼。你可以将门禁卡设为入楼级别、入层级别或应用到其他一些安全措施上。

开放安全组的公共VPC:

在这种情况下,你将实例放入VPC之后,VPC/实例关联的安全组将允许开放所有端口,这是一种非常糟糕的做法。类比到我们的办公楼,就是一栋没有任何门禁的建筑。每个人都可以到任何楼层或套间。

公共VPC与受限安全组:

在这种情况下,你在VPC中启动实例时,VPC/实例关联的安全组将限制开放端口,这是一个很好的举措。类比到我们的办公大楼,类似一个有访问卡的建筑。只有拥有门禁卡的人才能进入大楼,并在里面四处走动。

私有VPC:

私有VPC是一个只有私有子网的VPC。如果没有特殊工具或VPC窥视,那么在一个私有的VPC中,这些资源都是不可访问的。

虽然这不是一个完美的类比,但我们可以把你办公楼里的“洗手间”想象成私有VPC(换句话说,就是带私有子网的VPC)。不能进入大楼的人就不能进入洗手间。

总而言之,VPC+可用区+子网+私有/公共IP地址+安全组的组合就是AWS资源,这些AWS资源组成了基础设施,以提供用户在安全可伸缩环境中运行EC2实例所需的支持。了解这些资源的工作原理将帮助用户正确配置和利用这些资源。

网络安全成长路线图

这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成hei客大神,这个方向越往后,需要学习和掌握的东西就会越来越多,以下是学习网络安全需要走的方向:

# 网络安全学习方法

​ 上面介绍了技术分类和学习路线,这里来谈一下学习方法:
​ ## 视频学习

​ 无论你是去B站或者是油管上面都有很多网络安全的相关视频可以学习,当然如果你还不知道选择那套学习,我这里也整理了一套和上述成长路线图挂钩的视频教程,完整版的视频已经上传至CSDN官方,朋友们如果需要可以点击这个链接免费领取。网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要连接 AWS VPC,您可以使用 AWS 提供的 AWS SDK for Java。以下是一些步骤: 1. 首先,您需要在 AWS 控制台上创建一个 VPC,并在其中创建一个或多个子网。 2. 然后,您需要创建一个 Amazon EC2 实例,并确保该实例位于您创建的 VPC 中的某个子网中。 3. 接下来,您需要在您的 Java 项目中添加 AWS SDK for Java 依赖项。 4. 在您的 Java 代码中,您可以使用 AWS SDK for Java 提供的 AmazonEC2Client 类来连接您的 VPC。 5. 请确保在您的代码中使用正确的 AWS 访问密钥和密钥 ID。 以下是一个简单的示例代码,演示如何连接 AWS VPC: ``` import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.regions.Regions; import com.amazonaws.services.ec2.AmazonEC2; import com.amazonaws.services.ec2.AmazonEC2ClientBuilder; import com.amazonaws.services.ec2.model.DescribeVpcsRequest; import com.amazonaws.services.ec2.model.DescribeVpcsResult; import com.amazonaws.services.ec2.model.Vpc; public class AwsVpcConnectionExample { public static void main(String[] args) { // AWS 访问密钥和密钥 ID AWSCredentials credentials = new BasicAWSCredentials("ACCESS_KEY", "SECRET_KEY"); // 创建 AmazonEC2Client 实例 AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(credentials)) .withRegion(Regions.US_WEST_2) .build(); // 查询 VPC DescribeVpcsRequest request = new DescribeVpcsRequest(); DescribeVpcsResult result = ec2.describeVpcs(request); for (Vpc vpc : result.getVpcs()) { System.out.println(vpc.getVpcId()); } } } ``` 在此示例中,我们使用 AWSStaticCredentialsProvider 类来提供 AWS 访问密钥和密钥 ID。我们还指定了 AWS 区域(在此示例中为 US_WEST_2)。最后,我们使用 describeVpcs 方法查询 VPC,并打印出每个 VPC 的 ID。 请注意,此示例仅用于演示如何连接 AWS VPC,并查询其中的 VPC。您可以根据自己的需求修改此示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值