云网络:配置双向连通路径与访问规则 · 完整源码、配置与依赖至核对资料与相邻阅读
本篇以VPC 双向路径工作表为例;前置是子网/网卡关联、路由、安全组与 NACL。源码与输入与下文配置共用同一份文件,示例未执行。
核对日期2026-10-17;适用范围:以AWS VPC/EC2 2016-11-15 API对象模型为固定示例,核对2026-10-17官方中英文网络ACL/安全组资料;不是跨云通用配置或云端当前最新部署模板。示例未执行;真实环境仍需验证产品配置、权限、连通与恢复结果。先读起点理解前置,再按章节完成推演。
完整源码、配置与依赖
下列文件与README共用同一份仓库内容,保持输入、失败与清理合同一致。示例未执行;以下命令仅供读者在满足前置后自行运行。
dependencies.txt
text
No runtime or cloud SDK. JSON fixtures are a saved AWS VPC-style path worksheet, not provider API input.
AWS VPC/EC2 API conceptual contract: 2016-11-15; online references checked 2026-10-17.topology.json
json
{
"vpc": "10.40.0.0/16",
"subnets": [
{
"id": "app",
"cidr": "10.40.1.0/24",
"routeTable": "app-routes"
},
{
"id": "db",
"cidr": "10.40.2.0/24",
"routeTable": "db-routes"
}
],
"routes": [
{
"table": "app-routes",
"destination": "10.40.0.0/16",
"target": "local"
},
{
"table": "db-routes",
"destination": "10.40.0.0/16",
"target": "local"
}
],
"securityGroups": [
{
"id": "app-sg",
"egress": [
{
"protocol": "tcp",
"port": 5432,
"toGroup": "db-sg"
}
]
},
{
"id": "db-sg",
"ingress": [
{
"protocol": "tcp",
"port": 5432,
"fromGroup": "app-sg"
}
]
}
],
"nacl": [
{
"subnet": "app",
"inbound": [
{
"number": 100,
"action": "allow",
"protocol": "tcp",
"ports": "1024-65535",
"cidr": "10.40.2.0/24"
}
],
"outbound": [
{
"number": 100,
"action": "allow",
"protocol": "tcp",
"ports": "5432",
"cidr": "10.40.2.0/24"
}
]
},
{
"subnet": "db",
"inbound": [
{
"number": 100,
"action": "allow",
"protocol": "tcp",
"ports": "5432",
"cidr": "10.40.1.0/24"
}
],
"outbound": [
{
"number": 100,
"action": "allow",
"protocol": "tcp",
"ports": "1024-65535",
"cidr": "10.40.1.0/24"
}
]
}
],
"dns": {
"privateName": "db.lab.example.invalid",
"answer": "10.40.2.10",
"ttl": 60
}
}paths.json
json
[
{
"case": "app-to-db",
"source": "10.40.1.10:49152",
"destination": "10.40.2.10:5432",
"forward": [
"app-sg egress tcp5432 to db-sg",
"app NACL outbound tcp5432",
"app-routes local",
"db NACL inbound tcp5432",
"db-sg ingress tcp5432 from app-sg"
],
"return": [
"db-sg established",
"db NACL outbound tcp49152",
"db-routes local",
"app NACL inbound tcp49152",
"app-sg established"
],
"expected": "Allowed by this worksheet only; OS firewall, listener and live attachment not evaluated."
},
{
"case": "missing-return-nacl",
"change": "Remove app inbound ephemeral rule",
"expected": "Return packet denied by final implicit NACL deny; forward SYN permission is insufficient."
},
{
"case": "public-client",
"source": "192.0.2.10:49152",
"destination": "10.40.2.10:5432",
"expected": "No internet route/public address; no matching security group source; reject."
}
]README.md
md
# 云网络双向路径审阅工作表
示例未执行,不含云CLI、网络服务或模拟器,无需安装依赖。topology.json是完整教学拓扑,paths.json是逐跳正反向审阅与失败预期;它们是自定义工作表,不可提交给AWS API。私有地址需要读者映射到自己的隔离VPC;192.0.2.10和example.invalid是保留示例,必须替换,不能假称公网可达。
读者自跑方式是离线阅读JSON并画出双方五元组,无命令前置。app的10.40.1.10:49152连接db的10.40.2.10:5432;核对双方子网关联路由表,10.40.0.0/16 local匹配;app-sg出站与db-sg入站允许5432,安全组对已建立返回流量有状态。NACL自定义规则必须另放行app出站5432/db入站5432,以及db出站49152/app入站49152;示例以1024–65535覆盖课堂临时端口,实际须结合客户端OS端口范围缩窄。所有未匹配项隐式拒绝,规则号升序首匹配。
成功预期仅为静态规则允许此路径,不证明接口已关联、OS防火墙允许或数据库正在监听。失败推演:移除app的入站临时端口规则,返回包被NACL拒绝;把DNS答案写成旧私网地址,安全组再宽也不能修复目标错误;公网客户端没有公网地址/互联网路由/来源授权,不能访问DB。
DNS给出私有名称db.lab.example.invalid、10.40.2.10、TTL60;这只是工作表条目,尚未创建任何zone。读者应逐层核对解析器、zone关联、TTL和真实返回答案;VPC AmazonProvidedDNS有专门的过滤边界,NACL不能笼统当作DNS过滤器。
恢复清理:保留变更前路由/关联/规则号,按路径定位最小回退,不通过0.0.0.0/0入站放通排错。此工作表没有真实网络需清理;删除自行创建的副本即可。真实环境要先解除依赖再删除专属路由、接口、网关,防止误删共享VPC资源。
## 完整资源配置
network.yaml完整声明VPC、两个子网、专属路由表与关联、两组安全组、NACL及关联/四条规则、私有zone和A记录。路由表自动具有VPC local路由,不添加公网默认路由、IGW、NAT或计算实例。模板app安全组出站使用10.40.2.0/24目的网段,JSON工作表则用db-sg目标引用表达更窄的身份设计;两者是明确的替代形式,真实部署前应选择符合依赖关系的规则。db组只放行app组入站,显式回环限定出站规则用于防止自动放行全部出站,已建立回流仍依安全组状态;NACL另显式放行回包。
示例example.invalid私有名称与10.40网段必须由读者映射到自有隔离环境,确保地址不重叠。A记录中的10.40.2.10仅预留数据库位置,模板没有数据库或监听程序,所以部署网络后仍不可据此判断应用可达。成功预期仅是网络对象与关联建立;DNS权限/配额/冲突或错误区域会导致失败。日后读者用自有change set流程审阅后执行,本轮未调用;清理先删除专用记录/zone与接口依赖,再删除专用stack,禁止操作共享VPC。
[安全组属性与默认出站规则](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-securitygroup.html)本篇练习与参考解答
练习:部署network.yaml后访问db域名就能连数据库吗?
参考解答
不能。模板只建网络和私有A记录,没有数据库进程或计算网卡占用10.40.2.10;必须另外验证关联与监听。
核对资料与相邻阅读
继续阅读
- 知识专题
- 知识专题
- 开发与配置实践