我有一个包含两个子网的 AWS VPC:公共子网和私有子网。我可以从公共子网访问互联网(通过 NAT 网关),但不能从私有子网访问,我不知道出了什么问题。
- 两个子网都有允许所有流量进出的 NACL。
- 我用于测试的两个 EC2 实例(每个子网中一个)具有完全相同的安全组:(允许 https 退出,ssh 进入)
我已启用流日志来尝试查看问题所在。这是我从公共子网中的框连接到 YouTube 时看到的内容:
216.58.210.206 10.0.129.171 443 40682 6 9 4760 1596476113 1596476173 ACCEPT OK
10.0.129.171 216.58.210.206 40682 443 6 11 1218 1596476113 1596476173 ACCEPT OK
在这里我们可以看到出站请求和响应都允许通过。
当从私有子网中的盒子重复相同的测试时,我看到的是以下内容:
10.0.40.146 216.58.210.206 46398 443 6 2 120 1596469555 1596469612 ACCEPT OK
上面一行显示了从我的私有子网 EC2 实例到https://youtube.com- 允许通信。未记录任何响应。
因为我可以从公网 ssh 到私网,所以我可以推断路由存在且正确。那么响应在哪里?为什么流量被阻止了?
两个盒子之间的安全组相同,并且它们允许 443 上的 tcp 到 0.0.0.0/0
有趣的是,从公共子网到互联网的路由指向互联网网关,但从私有子网的路由指向 NAT 网关。
我该如何进一步调试它?
答案1
这是一个简单的配置错误案例——我已将 NAT 网关放入私有子网(以检查某些东西)但忘记将它们放回去……