用于确定或计算 AWS 中 VPC 的 Cidr 的标准公式
Standard formula to determine or calculate Cidr for VPC in AWS
我正在学习 AWS CloudFormation。现在,我正在尝试为 VPC 和子网创建一个模板。我现在正在创建一个VPC。
这是我的模板:
AWSTemplateFormatVersion: '2010-09-09'
Description: "Template for Networks and IAM Roles"
Resources:
Vpc:
Type: AWS::EC2::VPC
Properties:
CidrBlock: '10.0.0.0/16'
EnableDnsHostnames: True
EnableDnsSupport: True
我在这里不明白的是CidrBlock。现在,我将其指定为 10.0.0.0/16。老实说,它是如何工作的。将其设置为 10.0.0.0/16 是否总是有效?那是做什么用的?该 IP 地址范围究竟如何工作?它有什么帮助?如何确定为其设置哪个值?有计算公式吗?如何?我在我的控制台中看到了一个现有的 VPC。 IP地址不同。
另外,如何计算拆分分配给子网?
我正在寻求对以下模板的理解,尤其是子网的 Cidr。
AWSTemplateFormatVersion: '2010-09-09'
Description: "Template for Networks and IAM Roles"
Parameters:
VpcCidr:
Default: '10.0.0.0/16'
Type: String
AllowedPattern: '(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})'
Resources:
Vpc:
Type: AWS::EC2::VPC
Properties:
CidrBlock: !Ref VpcCidr
EnableDnsHostnames: True
EnableDnsSupport: True
PublicSubnet1:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref Vpc
CidrBlock: !Select [ 0, !Cidr [ !Ref VpcCidr, 12, 8 ] ]
MapPublicIpOnLaunch: True
AvailabilityZone: !Select
- 0
- Fn::GetAZs: !Ref "AWS::Region"
PublicSubnet2:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref Vpc
CidrBlock: !Select [ 1, !Cidr [ !Ref VpcCidr, 12, 8 ] ]
MapPublicIpOnLaunch: True
AvailabilityZone: !Select
- 0
- Fn::GetAZs: !Ref "AWS::Region"
这里的子问题太多了,无法一一回答。相反,我可以写这个。
VPC 的 CIDR 选自三个 common ranges:
10.0.0.0 - 10.255.255.255(10/8 前缀)
172.16.0.0 - 172.31.255.255(172.16/12 前缀)
192.168.0.0 - 192.168.255.255(192.168/16 前缀)
使用这些范围是因为它们在互联网上不可路由。
10.0.0.0/16
- 是用于 VPC 的最常用的 CIDR。这为您提供了 65535 个私有 IP 地址,可在您的 VPC 中使用。
您通常将其 划分为大小为 /24
的子网,每个子网有 255 个私有地址。例如:
- 10.0.1.0/24
- 10.0.2.0/24
- 10.0.3.0/24
- 10.0.4.0/24
如果您对 VPC 和子网使用上述模式,则无需进行任何计算或记住任何形式。当然如果你想有更具体的子网,或者不同大小的子网,你就得学习如何计算子网。互联网上有许多资源和工具。例子是:
- http://www.subnet-calculator.com/cidr.php
- https://mxtoolbox.com/SubnetCalculator.aspx
- IPv4, CIDR, and VPC Subnets Made Simple!
更新
模板使用了固有函数Fn::Cidr。
结构:
!Cidr [ !Ref VpcCidr, 12, 8 ]
将创建一个包含 12 个 CIDR 范围 的列表,大小为 /24 (32-8)。每个子网将有 255 个地址。 Select
用于从列表中选择 个 个 CIDR:
!Select [ 0, !Cidr [ !Ref VpcCidr, 12, 8 ] ] # 10.0.0.0/24
!Select [ 1, !Cidr [ !Ref VpcCidr, 12, 8 ] ] # 10.0.1.0/24
!Select [ 2, !Cidr [ !Ref VpcCidr, 12, 8 ] ] # 10.0.2.0/24
!Select [ 11, !Cidr [ !Ref VpcCidr, 12, 8 ] ] # 10.0.11.0/24
问题一:
10.0.0.0/16 意味着您正在创建一个 VPC,它在您的 VPC 内部有 65,536 个可用的私有 IP,这样您就可以拥有 IP 为 10.0.0.4、10.0.0.5 ...的 EC2 实例.
Note:
AWS保留了5个IP
10.0.0.0: 网络地址。
10.0.0.1:AWS 为 VPC 路由器保留。
10.0.0.2:由 AWS 保留。 DNS 服务器的 IP 地址是 VPC 网络范围的基础加二。对于具有多个 CIDR 块的 VPC,DNS 服务器的 IP 地址位于主 CIDR 中。我们还为 VPC 中的所有 CIDR 块保留每个子网范围的基础加上两个。有关详细信息,请参阅 Amazon DNS 服务器。
10.0.0.3:由 AWS 保留以备将来使用。
10.0.0.255:网络广播地址。我们不支持在 VPC 中广播,因此我们保留此地址
计算可以使用网站计算和可视化,例如https://mxtoolbox.com/subnetcalculator.aspx(我只是随便捡的,我不是作者)
请阅读here了解更多详情
我正在学习 AWS CloudFormation。现在,我正在尝试为 VPC 和子网创建一个模板。我现在正在创建一个VPC。
这是我的模板:
AWSTemplateFormatVersion: '2010-09-09'
Description: "Template for Networks and IAM Roles"
Resources:
Vpc:
Type: AWS::EC2::VPC
Properties:
CidrBlock: '10.0.0.0/16'
EnableDnsHostnames: True
EnableDnsSupport: True
我在这里不明白的是CidrBlock。现在,我将其指定为 10.0.0.0/16。老实说,它是如何工作的。将其设置为 10.0.0.0/16 是否总是有效?那是做什么用的?该 IP 地址范围究竟如何工作?它有什么帮助?如何确定为其设置哪个值?有计算公式吗?如何?我在我的控制台中看到了一个现有的 VPC。 IP地址不同。
另外,如何计算拆分分配给子网?
我正在寻求对以下模板的理解,尤其是子网的 Cidr。
AWSTemplateFormatVersion: '2010-09-09'
Description: "Template for Networks and IAM Roles"
Parameters:
VpcCidr:
Default: '10.0.0.0/16'
Type: String
AllowedPattern: '(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})'
Resources:
Vpc:
Type: AWS::EC2::VPC
Properties:
CidrBlock: !Ref VpcCidr
EnableDnsHostnames: True
EnableDnsSupport: True
PublicSubnet1:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref Vpc
CidrBlock: !Select [ 0, !Cidr [ !Ref VpcCidr, 12, 8 ] ]
MapPublicIpOnLaunch: True
AvailabilityZone: !Select
- 0
- Fn::GetAZs: !Ref "AWS::Region"
PublicSubnet2:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref Vpc
CidrBlock: !Select [ 1, !Cidr [ !Ref VpcCidr, 12, 8 ] ]
MapPublicIpOnLaunch: True
AvailabilityZone: !Select
- 0
- Fn::GetAZs: !Ref "AWS::Region"
这里的子问题太多了,无法一一回答。相反,我可以写这个。
VPC 的 CIDR 选自三个 common ranges:
10.0.0.0 - 10.255.255.255(10/8 前缀)
172.16.0.0 - 172.31.255.255(172.16/12 前缀)
192.168.0.0 - 192.168.255.255(192.168/16 前缀)
使用这些范围是因为它们在互联网上不可路由。
10.0.0.0/16
- 是用于 VPC 的最常用的 CIDR。这为您提供了 65535 个私有 IP 地址,可在您的 VPC 中使用。
您通常将其 划分为大小为 /24
的子网,每个子网有 255 个私有地址。例如:
- 10.0.1.0/24
- 10.0.2.0/24
- 10.0.3.0/24
- 10.0.4.0/24
如果您对 VPC 和子网使用上述模式,则无需进行任何计算或记住任何形式。当然如果你想有更具体的子网,或者不同大小的子网,你就得学习如何计算子网。互联网上有许多资源和工具。例子是:
- http://www.subnet-calculator.com/cidr.php
- https://mxtoolbox.com/SubnetCalculator.aspx
- IPv4, CIDR, and VPC Subnets Made Simple!
更新
模板使用了固有函数Fn::Cidr。
结构:
!Cidr [ !Ref VpcCidr, 12, 8 ]
将创建一个包含 12 个 CIDR 范围 的列表,大小为 /24 (32-8)。每个子网将有 255 个地址。 Select
用于从列表中选择 个 个 CIDR:
!Select [ 0, !Cidr [ !Ref VpcCidr, 12, 8 ] ] # 10.0.0.0/24
!Select [ 1, !Cidr [ !Ref VpcCidr, 12, 8 ] ] # 10.0.1.0/24
!Select [ 2, !Cidr [ !Ref VpcCidr, 12, 8 ] ] # 10.0.2.0/24
!Select [ 11, !Cidr [ !Ref VpcCidr, 12, 8 ] ] # 10.0.11.0/24
问题一:
10.0.0.0/16 意味着您正在创建一个 VPC,它在您的 VPC 内部有 65,536 个可用的私有 IP,这样您就可以拥有 IP 为 10.0.0.4、10.0.0.5 ...的 EC2 实例.
Note: AWS保留了5个IP
10.0.0.0: 网络地址。
10.0.0.1:AWS 为 VPC 路由器保留。
10.0.0.2:由 AWS 保留。 DNS 服务器的 IP 地址是 VPC 网络范围的基础加二。对于具有多个 CIDR 块的 VPC,DNS 服务器的 IP 地址位于主 CIDR 中。我们还为 VPC 中的所有 CIDR 块保留每个子网范围的基础加上两个。有关详细信息,请参阅 Amazon DNS 服务器。
10.0.0.3:由 AWS 保留以备将来使用。
10.0.0.255:网络广播地址。我们不支持在 VPC 中广播,因此我们保留此地址
计算可以使用网站计算和可视化,例如https://mxtoolbox.com/subnetcalculator.aspx(我只是随便捡的,我不是作者)
请阅读here了解更多详情