![AWS网络acl阻止nginx dns解析](https://linux22.com/image/768110/AWS%E7%BD%91%E7%BB%9Cacl%E9%98%BB%E6%AD%A2nginx%20dns%E8%A7%A3%E6%9E%90.png)
我正在尝试锁定子网上的端口,但在 ECS 上运行的 nginx 实例出现了问题。
流量进入系统并:443
进入 ELB,ELB 将其中一部分流量路由到 ECS 上运行的 nginx 实例,然后proxy_pass
将其发送到外部 www 地址。
nginx 设置proxy_pass
为域名,并使用 nginx 解析器配置:resolver 8.8.8.8 ipv6=off valid=10s
将其解析为 IP 地址。IP 不是静态的,所以我必须这样做。
但是,当我应用网络 acl 时,除了此 dns 解析之外,其他一切都正常。nginx 返回 Bad Gateway 响应,抱怨我的域名could not be resolved (110: Operation timed out)
。
网络 acl 设置为允许所有协议的所有出站流量,但将入站流量限制到特定的一组端口。
我尝试将 53(UDP 和 TCP)添加到入站规则中,但解析仍然失败。
值得注意的是,如果我允许所有入站流量,那么 DNS 解析就会有效。
我的问题是:
- 当我的网络 acl 应用时,我需要做什么才能使 nginx 解析器正常工作?
- 我知道每个 VPC 都配有 DNS 服务器,以便将 AWS DNS 名称路由到虚拟机。我可以将其用作我的解析器吗?
答案1
一个可能的答案是允许所有来自 8.8.8.8 的流量。
不过,需要注意的是,一些 AWS 服务(如 ELB)使用临时端口(https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports),这些也必须开放。
当然,它们代表了很大的端口范围,但正如文档所述,您始终可以拒绝来自恶意端口的流量。