我使用 VPC 向导创建了一个 VPC,它有两个子网(公共和私有),并且在私有子网前面有一个 NAT。
查看子网的 ACL,有一条规则允许所有入站流量0.0.0.0/0
。我想禁止任何不是来自 NAT(IP 为 10.0.0.8)的入站流量,因此我将 ACL 更改为Scenario 2
类似于http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Appendix_NACLs.html。
也就是说,ALLOW
所有端口上的所有协议10.0.0.0/16
,但不允许0.0.0.0/0
。
由于我的实例无法访问互联网,因此这似乎无法正常工作。我是否需要设置/更改其他内容才能使其正常工作?
答案1
公共可路由的 IP 地址在通过 NAT 实例时不会被重写。
您需要在网络 ACL 中将整个公共 Internet 地址空间保留为私有子网中允许的地址。如果私有子网缺少 Internet 网关,并且其默认路由指向 NAT 实例,则公共 Internet 地址将只能通过 NAT 实例间接到达。
VPC 网络 ACL 可用于限制 VPC 内部实例之间的访问,但是它们的无状态特性使其对于您描述的配置类型来说很麻烦:它不会跟踪与允许的出站规则匹配的连接以允许相应的入站流量,因此您被迫通过允许入站流量的临时端口范围来进行近似。
一种更灵活的方法是结合使用 VPC 路由、私有子网上没有 Internet 网关以及iptables
NAT 实例中的良好配置来控制往返于可公开路由 IP 空间的流量,同时默认允许私有子网实例的网络 ACL 允许公共可路由 IP 空间访问。在这样的环境中,将实例放置在私有子网中足以保护实例免受 NAT 实例未通过的任何外部流量的影响。