跳到正文 Lab学后总结 · Jimmy Huang's Blog
是可以通过 Internet Gateway 和公网连接的区域,适合放需要对外提供服务的资源,比如 Web Server。
Private Subnet 是不应该被公网直接访问的区域,适合放数据库、内部服务、后台组件等更敏感的资源。
对外开放的服务和内部敏感服务要分开,不要把数据库直接暴露到公网。
2.3 创建 WebServer01:对外服务入口 WebServer01 被放在 Public Subnet 中。
它的作用类似真实项目中的 Web 后端服务器、API 服务器或前端入口服务器。
因为它需要接收来自互联网用户的请求,所以它需要能被公网访问。
在这个 Lab 的设计里,外部用户可以通过互联网访问 WebServer01。
但这并不代表外部用户可以直接访问整个 VPC,也不代表外部用户可以直接访问数据库。
WebServer01 更像是一个“前台窗口”:用户只能先找它,不能直接进后台仓库。
2.4 创建 DatabaseServer:放在 Private Subnet 的内部数据库服务器 DatabaseServer 被放在 Private Subnet 里。
在真实项目里,数据库通常是最不应该直接暴露的资源之一。
如果数据库直接在公网可访问,一旦密码泄露、规则配置错误或软件有漏洞,就可能造成严重数据泄露。
所以这个 Lab 通过把 DatabaseServer 放到 Private Subnet,让你理解“数据库应该躲在后面”。
2.5 配置 Internet Gateway:让 Public Subnet 能连接互联网 页面可见内容显示该 Lab 涉及 Internet Gateway。
Internet Gateway 可以理解成 VPC 通向公网的大门。
如果一个 Subnet 想成为真正意义上的 Public Subnet,通常需要满足这些条件:
VPC 连接了 Internet Gateway;
该 Subnet 的 Route Table 有到 Internet Gateway 的默认路由;
资源本身有公网 IP 或弹性公网 IP;
Security Group / NACL 允许相关流量。
在这个 Lab 的语境中, WebServer01 之所以能从公网访问,核心原因之一就是 Public Subnet 通过 Internet Gateway 和公网连通。
页面中具体 Route Table 配置细节是否完整展示: 材料未显示/不确定 。
2.6 使用 Bastion Host:安全地进入 Private Subnet 页面可见内容显示该 Lab 涉及 Bastion Host。
它的作用是:管理员先 SSH 到公网可访问的 Bastion Host,然后再从 Bastion Host 进入 Private Subnet 里的内部服务器。
为什么不直接 SSH 到 DatabaseServer?
因为 DatabaseServer 在 Private Subnet 中,不应该有公网入口。
如果为了方便管理而给数据库服务器直接开放公网 SSH,就会破坏 Private Subnet 的安全意义。
页面中 Bastion Host 的具体 EC2 命名、密钥、SSH 命令细节: 材料未显示/不确定 。
2.7 配置 NAT Instance:让 Private Subnet 可以“出公网”,但不允许公网主动进来 页面可见内容显示该 Lab 涉及 NAT Instance。
这是这个 Lab 里最容易搞混、但也最重要的部分之一。
Private Subnet 里的 DatabaseServer 默认不能访问公网。
apt update
安装软件包
下载系统更新
访问外部软件源
允许 Private Subnet 里的服务器主动访问互联网,但不允许互联网主动访问 Private Subnet 里的服务器。 它解决的是“私有服务器需要出去下载东西,但不能被外面直接找上门”的问题。
页面中 NAT Instance 是否配置了关闭 Source/Destination Check、绑定路由表等具体细节: 材料未显示/不确定 。
但从 AWS VPC 常见实验逻辑看,这类配置通常是 NAT Instance 能正常工作的关键步骤;本文不把这些作为已确认实验步骤,只作为概念理解。
2.8 配置 Security Group:控制 EC2 实例级别的访问 页面可见内容显示该 Lab 涉及 Security Group。
Security Group 是绑定在 EC2 等资源上的“实例级防火墙”。
哪些来源可以访问这台服务器;
哪些端口可以被访问;
这台服务器可以访问哪些外部目标。
WebServer01 允许公网 HTTP/HTTPS 访问;
WebServer01 允许管理员 SSH;
DatabaseServer 只允许 WebServer01 或 Bastion Host 访问特定端口;
DatabaseServer 不允许公网直接访问。
Security Group 是 有状态(stateful) 的。
意思是:如果你允许一个请求进来,它的返回流量通常会自动被允许出去,不需要单独写一条回程规则。
2.9 配置 Network ACL:控制 Subnet 级别的访问 页面可见内容显示该 Lab 涉及 Network ACL,简称 NACL。
NACL 是作用在 Subnet 层级的网络访问控制。
它不像 Security Group 那样绑定到某一台 EC2,而是控制整个 Subnet 的流量进出。
作用范围是 Subnet;
可以设置 Allow 和 Deny;
是无状态(stateless)的;
入站和出站规则都要分别考虑;
规则按编号顺序匹配。
NACL 更像是小区大门的总门禁,而 Security Group 更像每户房门上的门锁。
页面中具体 NACL 规则编号和端口配置: 材料未显示/不确定 。
3. 每个核心组件有什么用 下面按组件逐个解释:它是什么、在 Lab 里负责什么、没有它会怎样、它和其他组件的关系。
3.1 VPC-demo
它是什么 VPC-demo 是你在 AWS 中创建的一个 Virtual Private Cloud,也就是虚拟私有云网络。
它在这个 Lab 里负责什么 Public Subnet;
Private Subnet;
WebServer01;
DatabaseServer;
Route Table;
Internet Gateway;
Security Group;
NACL;
Bastion Host;
NAT Instance。
没有它会发生什么
和其他组件的关系 Subnet、EC2、路由、安全规则都在 VPC 的范围内工作。
3.2 Public Subnet
它是什么 Public Subnet 是 VPC 中可以和公网通信的子网区域。
它在这个 Lab 里负责什么 WebServer01
Bastion Host
NAT Instance
这些资源要么需要被外部访问,要么需要作为外部和内部之间的中转点。
没有它会发生什么
和其他组件的关系 Public Subnet 通过 Route Table 指向 Internet Gateway,从而获得公网连接能力。
它里面的 Bastion Host 和 NAT Instance 又可以帮助 Private Subnet 实现受控访问和出网。
3.3 Private Subnet
它是什么 Private Subnet 是 VPC 中不直接暴露给公网的子网区域。
它在这个 Lab 里负责什么 它用于放置更敏感的内部资源,比如 DatabaseServer。
没有它会发生什么 如果没有 Private Subnet,数据库可能就会和 Web Server 一样暴露在公网区域。
和其他组件的关系 Private Subnet 不直接连 Internet Gateway。
它通常通过 NAT Instance 主动访问外部网络,通过 Bastion Host 被管理员间接管理,通过 Security Group 和 NACL 限制访问来源。
3.4 WebServer01
它是什么 WebServer01 是放在 Public Subnet 中的 Web 服务器。
它在这个 Lab 里负责什么
没有它会发生什么 如果没有 WebServer01,外部用户就没有可以访问的应用入口。
DatabaseServer 也不应该直接对外承担这个角色。
和其他组件的关系
3.5 DatabaseServer
它是什么 DatabaseServer 是放在 Private Subnet 中的数据库服务器或内部数据服务器。
它在这个 Lab 里负责什么 它负责模拟真实项目中的数据库层,存放不应该直接暴露给互联网的数据。
没有它会发生什么 如果没有 DatabaseServer,这个 Lab 就无法体现典型的 Web + Database 分层架构。
你也不容易理解为什么要区分 Public Subnet 和 Private Subnet。
和其他组件的关系 DatabaseServer 通常只允许来自 WebServer01 或 Bastion Host 的特定访问。
如果需要访问互联网更新系统,它应通过 NAT Instance 出去。
3.6 Internet Gateway
它是什么 Internet Gateway 是 VPC 连接公网的网关。
它在这个 Lab 里负责什么 它让 Public Subnet 中的资源可以和互联网通信。
没有它会发生什么 没有 Internet Gateway,即使 WebServer01 放在 Public Subnet,也无法真正和公网通信。
和其他组件的关系 Internet Gateway 连接 VPC 和 Internet。
Public Subnet 的 Route Table 需要把默认路由指向 Internet Gateway。
3.7 Route Table
它是什么 Route Table 是路由表,用来决定网络流量下一跳去哪里。
它在这个 Lab 里负责什么
没有它会发生什么 没有正确的路由表,服务器即使配置了安全组,也可能完全无法访问目标。
例如 Private Subnet 如果没有指向 NAT Instance 的默认路由,就不能通过 NAT 出公网。
和其他组件的关系
3.8 Bastion Host
它是什么 Bastion Host 是跳板机,是管理员进入私有网络的受控入口。
它在这个 Lab 里负责什么 它让管理员可以先连接到 Public Subnet 的 Bastion Host,再从它进入 Private Subnet 的 DatabaseServer。
没有它会发生什么 如果没有 Bastion Host,管理员可能无法安全地 SSH 到 Private Subnet 内的服务器。
如果为了方便直接给 DatabaseServer 开公网 SSH,则会降低安全性。
和其他组件的关系 Bastion Host 位于 Public Subnet。
它能被管理员访问,同时可以访问 Private Subnet 中被允许的服务器。
3.9 NAT Instance
它是什么 NAT Instance 是运行 NAT 功能的 EC2 实例。
它在这个 Lab 里负责什么 它让 Private Subnet 的 DatabaseServer 可以主动访问公网,例如更新系统或下载软件包。
没有它会发生什么 DatabaseServer 可能无法访问外部软件源,执行系统更新时可能失败。
和其他组件的关系 NAT Instance 通常位于 Public Subnet。
Private Subnet 的 Route Table 需要把出公网流量指向 NAT Instance。
NAT Instance 再通过 Internet Gateway 出公网。
页面中 NAT Instance 的完整配置步骤: 材料未显示/不确定 。
3.10 Security Group
它是什么
它在这个 Lab 里负责什么 它控制每台 EC2 实例允许哪些来源、哪些端口访问。
没有它会发生什么
和其他组件的关系 Security Group 直接绑定到 EC2。
3.11 Network ACL(NACL)
它是什么
它在这个 Lab 里负责什么
没有它会发生什么 没有自定义 NACL 时,可能仍使用默认 NACL。
但你就少了一层 Subnet 级别的网络控制能力。
和其他组件的关系 Security Group 作用在 EC2 上。
4. 用初学者类比解释 可以把这个 Lab 想象成你在 AWS 上建了一个“有前台、有仓库、有门卫、有快递通道的小公司”。
4.1 VPC-demo = 整个公司园区 这个园区是你自己的,里面的楼、门、通道、仓库、前台都由你规划。
4.2 Public Subnet = 公司前台大厅 所以 WebServer01 放在这里,因为它就是客户最先接触到的服务窗口。
4.3 Private Subnet = 公司内部仓库 / 财务室 Private Subnet 像公司内部仓库或财务室。
所以 DatabaseServer 放在这里,因为数据库保存的是敏感数据,不应该让外部用户直接接触。
4.4 WebServer01 = 前台接待员 前台可以根据业务需要去后面的仓库查信息,但客户不能自己冲进仓库。
4.5 DatabaseServer = 仓库 / 资料室
4.6 Internet Gateway = 公司大门 Internet Gateway 像公司园区和外面世界之间的大门。
没有这个门,公司里的前台也无法和外部客户正常交流。
4.7 Bastion Host = 保安登记室 / 管理员入口 管理员不能直接从外面冲进仓库,而是先到保安处登记,然后再进入内部区域。
4.8 NAT Instance = 代收代发快递窗口 NAT Instance 像一个代收代发快递窗口。
仓库里的员工不能直接对外开门,但他们可以把“我要下载更新包”这个请求交给快递窗口。
4.9 Security Group = 每个房间门上的锁 Security Group 像每个房间门上的锁。
前台门允许客户进入;
仓库门只允许前台员工和管理员进入;
其他陌生人不能进仓库。
4.10 NACL = 小区大门门禁规则 哪些车辆能进;
哪些车辆不能进;
哪些方向的通道开放;
哪些方向的通道禁止。
5. 重点区分容易混淆的概念 这一部分非常重要,因为 AWS VPC 初学者最容易混的就是“公网 / 私网 / 路由 / 安全组 / NACL / NAT / Bastion”。
5.1 Public Subnet 和 Private Subnet 的区别 Public Subnet 是前台,Private Subnet 是后台仓库。
5.2 WebServer01 和 DatabaseServer 的区别 Web Server 是门面,Database Server 是保险柜。
5.3 Internet Gateway 和 NAT Instance 的区别 Internet Gateway 是大门;NAT Instance 是代跑腿。
5.4 Bastion Host 和 NAT Instance 的区别 Bastion 是“人进去管理”的跳板;NAT 是“机器出去上网”的出口。
5.5 Security Group 和 NACL 的区别 Security Group 管“这台机器能不能被访问”;
5.6 Route Table 和 Security Group 的区别 路由是通的;
Security Group 允许;
NACL 允许;
目标服务本身正在运行。
5.7 “不能被公网访问”和“不能访问公网”不是一回事 DatabaseServer 放在 Private Subnet 后,通常有两个不同问题:
问题 A:公网能不能主动访问 DatabaseServer? 这就是 Private Subnet 的安全意义。
问题 B:DatabaseServer 自己能不能主动访问公网? 如果要让它更新系统或下载软件,需要 NAT Instance 或类似 NAT Gateway 的出口。
不让公网进来,是安全要求;
允许它主动出去,是运维需要;
NAT 的价值就是在二者之间取得平衡。
6. 这个 Lab 有什么实际用途 这个 Lab 的价值非常实际,因为它不是只学一个 AWS 按钮,而是在学真实云架构里最基础的安全网络设计。
6.1 真实 Web 应用架构 这个 Lab 让你理解为什么 Web Server 和 Database Server 要分层放置。
6.2 后端开发部署 作为后端开发者,你以后部署服务时不能只关心代码能不能跑,还要知道:
API 服务应该放在哪里;
数据库应不应该暴露公网;
哪些端口需要开放;
SSH 管理入口应该如何设计;
系统更新和外部依赖下载如何完成。
这个 Lab 帮你从“写代码的人”过渡到“理解部署环境的人”。
6.3 DevOps 和云平台运维 如果不理解这些概念,很容易出现“机器明明开着,但就是访问不了”的情况。
6.4 云安全设计 最小暴露原则:只把必须对外的资源放到公网区域。
分层防护原则:公网层、应用层、数据库层分开。
最小权限原则:Security Group 只开放必要端口。
受控管理入口:通过 Bastion Host 管理私有服务器。
私有资源出网隔离:通过 NAT 允许主动出网,但不允许公网主动进来。
6.5 排错能力 为什么 WebServer01 从公网访问不了?
为什么 DatabaseServer 不能 apt update?
为什么 SSH 进不了 Private Subnet?
为什么 Security Group 开了端口还是不通?
为什么 Route Table 没配好会导致网络失败?
为什么 NACL 会挡住回程流量?
你要记住的核心区别
补充提醒:本 Lab 最核心的学习目标 学完这个 Lab,你不需要一开始就记住所有 AWS 网络术语,但至少要能说清楚这句话:
我们创建了一个 VPC,把 Web Server 放在 Public Subnet 作为公网入口,把 Database Server 放在 Private Subnet 保护起来;公网通过 Internet Gateway 访问 Web Server,管理员通过 Bastion Host 管理私有服务器,Private Subnet 通过 NAT Instance 主动访问公网更新系统;Security Group 和 NACL 分别从实例级和子网级控制访问权限。 如果你能把这句话讲明白,就说明你已经抓住了这个 Lab 的主线。
用户 → Web/API Server → DatabaseInternet
↓
Public Subnet: Web/API Server
↓
Private Subnet: Database┌─────────────────────────────────────────────────────────────┐
│ 你要记住的核心区别 │
├─────────────────────────────────────────────────────────────┤
│ 1. Public Subnet = 前台大厅:可以接公网,放 Web/Bastion/NAT。 │
│ 2. Private Subnet = 内部仓库:不直接暴露公网,适合放数据库。 │
│ 3. Internet Gateway = 公司大门:让 Public 区域连接互联网。 │
│ 4. NAT Instance = 代跑腿窗口:让 Private 主动出网,但不让外部进来。 │
│ 5. Bastion Host = 保安登记室:管理员先到跳板机,再进私有服务器。 │
│ 6. Security Group = 房间门锁:控制某台 EC2 的端口和来源。 │
│ 7. NACL = 小区门禁:控制整个 Subnet 的进出流量。 │
│ 8. Route Table = 导航地图:决定流量下一跳走 IGW 还是 NAT。 │
└─────────────────────────────────────────────────────────────┘