=== 什么是 NAT 网关?
- NAT 代表 网络地址转换。
- NAT 网关是一种设备,用于使私有子网中的实例能够连接到互联网或其他 AWS 服务。
- 它阻止互联网启动与私有子网中存在的实例的连接。
- 它将流量从私有子网中的实例转发到互联网或其他 AWS 服务,然后将响应发送回实例。
- 当流量转到互联网时,使用 NAT 设备的地址更改实例 IP 地址。
- 我们有 2 种 NAT 设备:
- NAT 实例
- NAT 网关
- NAT 实例使用 Amazon Linux AMI。
- NAT 实例限制取决于您针对该区域的实例类型限制。
- NAT 实例不支持 IPv6 流量。
- NAT 网关的使用量按小时向客户收费。
- NAT 网关不支持 IPv6 流量。
- AWS 建议使用 NAT 网关,因为它们比 NAT 实例提供更好的可用性和带宽。
=== 架构图
== 实验步骤
=== 创建新的VPC
- 请确保您位于美国东部(弗吉尼亚北部)us-east-1 区域
- 顶部菜单导航到 VPC
- 单击左侧菜单中的您的 VPC
- 在这里,您可以看到所有 VPC 的列表,无需对现有和默认 VPC 执行任何操作,我们将创建一个新的 VPC。
- 单击
创建 VPC
按钮。
- 名称标签: 输入用于向您的 VPC 标识的 VPC 名称。例如:MyVPC
- IPv4 CIDR 块: 输入 10.0.0.0/16
- IPv6 CIDR 块: 无需更改此设置,请确保选中"无 IPv6 CIDR 块"
- 租期: 无需更改此设置,请确保选中"默认"。
- 现在单击
创建 VPC
按钮
- 创建VPC后,它将显示详细信息,如下所示:
=== 创建公有子网和私有子网
- 对于公有子网,单击左侧菜单中的子网,然后单击创建子网。
** VPC ID :从您之前创建的列表中选择 MyVPC。
** 子网名称 :输入名称 MyPublicSubnet
** 可用区 : 选择 无首选项
** IPv4 网段:输入范围 10.0.0.0/24
** 单击"创建子网"。- 让我们启用自动将公有 IP 分配给在此子网中创建的实例,
** 选择 MyPublicSubnet ,单击"操作"。
** 单击"编辑子网设置"。
** 启用自动分配公有 IPv4 地址:选中
** 点击保存。- 现在,默认情况下,在 MyPublicSubnet 中启动的实例将分配公有 IP。
- 对于私有子网,再次单击"创建子网"。
** VPC ID :从您之前创建的列表中选择 MyVPC。
** 子网名称 :输入名称 MyPrivateSubnet
** 可用区 : 选择 无首选项
** IPv4网段:输入范围10.0.1.0/24
** 单击"创建子网"。
=== 创建和配置互联网网关
- 单击左侧菜单中的互联网网关,然后单击创建互联网网关。
- 名称标签:MyInternetGateway。
- 单击创建互联网网关。
- 从列表中选择您创建的互联网网关
- 单击"操作"。
- 单击附加到VPC
- 从列表中选择您创建的MyVPC,然后单击连接互联网网关。
=== 创建公有路由表
- 从左侧菜单中转到路由表,然后单击创建路由表。
- 名称: 输入"PublicRouteTable"。
- VPC: 从列表中选择"MyVPC"。
- 单击创建路由表。
- 现在,将子网关联到路由表。
- 单击 PublicRouteTable,单击
操作
。
- 然后转到"子网关联"选项卡
- 从列表中选择"MyPublicSubnet"。
- 单击保存关联。
=== 更新路由表并配置公网网关
- PublicRouteTable:添加允许公网流量流向 VPC 的路由。
- 选择"PublicRouteTable"。
- 转到"路由"选项卡,然后单击
编辑路由
按钮。- 然后单击
添加路由
按钮。- 指定以下值:
- 目标:输入 0.0.0.0/0
- 目标:从下拉菜单中选择互联网网关,选择
MyInternetGateway
。- 点击保存更改。
- 现在,在MyPublicSubnet中启动的实例将可以访问互联网。
- MyVPC 提供了另一个现有路由表。它是在创建 VPC 时创建的主路由表。我们将在创建 NAT 网关时使用它。
=== 在公有子网中启动 EC2 实例
- 请确保您位于美国东部(弗吉尼亚北部)us-east-1 区域。
- 顶部菜单导航到 EC2
- 左侧面板,单击"实例",然后单击"启动新实例"。
==== (1)控制台启动实例
==== (2)选择系统镜像
==== (3)选择实例类型
==== (4)配置实例
- 实例数:输入 1
- 网络 : 选择MyVPC
- 子网 :选择"MyPublicSubnet"
- 自动分配公共 IP:使用子网设置(启用)
- 将所有其他设置保留为默认值。单击"下一步:添加存储"
==== (5)添加存储
==== (6)添加标签
==== (7) 配置安全组
- 添加 SSH:
. 选择类型: 选择 SSH
. 协议:TCP
. 端口范围:22
- 点击下一步 `审核和启动
==== (8) 审核启动
- 检查所有选定的设置,无误点击启动
- 选择现有密钥对,确认并单击启动实例
=== 在私有子网中启动 EC2 实例
- 请确保您位于美国东部(弗吉尼亚北部)us-east-1 区域。
- 顶部菜单导航到 EC2
- 左侧面板,单击"实例",然后单击"启动新实例"。
==== (1)控制台启动实例
==== (2)选择系统镜像
==== (3)选择实例类型
==== (4)配置实例
- 实例数:输入 1
- 网络 : 选择MyVPC
- 子网 :选择"MyPrivateSubnet"
- 自动分配公共 IP:使用子网设置(禁用)
- 将所有其他设置保留为默认值。单击"下一步:添加存储"
==== (5)添加存储
==== (6)添加标签
==== (7) 配置安全组
- 分配安全组:选择"选择现有安全组"
- 从列表中选择刚刚创建的安全组
- 点击下一步
审核和启动
==== (8) 审核启动
- 检查所有选定的设置,无误点击启动
- 选择现有密钥对,确认并单击启动实例
image::/图片/07图片/现有密钥.png[现有密钥]
- 然后单击每个实例,然后输入名称为 MyPublicEC2Server 和 MyPrivateEC2Server 以便分辨EC2
=== SSH 进入公有和私有 EC2 实例并测试互联网连接
- SSH 进入 MyPublicEC2Server 实例。
- 切换到 root 用户:sudo su
- 使用以下命令运行更新:
- yum -y update
- 由于互联网网关MyInternetGateway连接到MyPublicSubnet,因此更新将成功完成。
- 让我们从MyPublicEC2Server 进入 MyPrivateEC2Server。
- 为了通过SSH进入到 MyPrivateEC2Server 中,首先,我们需要在公共EC2(即MyPublicEC2Server)中创建PEM文件,并从本地计算机中的test1.pem复制密钥数据。
- 我们需要 test1.pem 才能SSH。我们将从您的本地计算机(之前在启动 EC2 实例时下载)复制 test1.pem 中的密钥数据。
- 要复制 test1.pem 的内容,请在文本编辑器中打开该文件并复制整个内容。
- 要在 MyPublicEC2Server 中创建 test1.pem,请运行
- 现在按以下键插入数据(您可以看到插入在最后一个弹出,然后您可以粘贴键)。
- 单击"i"
- 注意:在编辑器中,复制并粘贴类似于以下示例的密钥:
- 保存文件
- 点击esc,输入以下命令保存退出
- 检查文件是否已正确创建。
- 更新 test1.pem 的权限
- 使用 MyPrivateEC2Server 的私有 IP 地址进行连接。
- 切换到根用户
- 使用以下命令运行更新:
- 由于私有子网中的 EC2 实例不提供互联网访问,因此您将无法获得更新。
- 一段时间后,它将失败,并显示以下消息。
=== 创建 NAT 网关
- NAT 网关用于提供对私有子网内实例的互联网访问。
- **导航到 VPC **页面。
- 确保您仍在弗吉尼亚北部地区。
- 在左侧面板中,单击 NAT 网关。
- 单击"创建 NAT 网关"。
- 名字: MyNATGateway
- 子网 :在 MyVPC 中选择 MyPublicSubnet
- 弹性 IP 分配 ID:单击分配弹性 IP。
- 分配新弹性公网IP后,单击创建NAT网关。
- 请注意,NAT 网关始终在公有子网中创建。
- NAT 网关将在几分钟内创建。创建后,状态将更改为"可用"。
=== 更新路由表并配置 NAT 网关
- 导航到左侧面板中的路由表。
- 您可以看到两个可用于 MyVPC 的路由表
- 要附加 Nat 网关,请选择主路由表(与您创建的路由表不同)。
- 转到"路由"选项卡,然后单击
编辑路由
按钮。- 然后单击
添加路由
按钮。- 指定以下值:
- 目标:输入 0.0.0.0/0
- 目标:选择 NAT 网关,加载NAT 网关后,选择您创建的 NAT 网关。
- 点击保存更改。
- 完成所有配置后,应如下所示。
- 现在,在 MyPrivateSubnet 中启动的实例可以通过 NAT 网关访问互联网。
=== 从私有子网内的实例测试互联网连接
- SSH 回到 MyPrivateEC2Server
- 使用以下命令运行更新:
- 您可以看到更新已在终端中成功完成。
- 这表明MyPrivateEC2Server可以访问互联网