AWS网络acl阻止nginx dns解析

AWS网络acl阻止nginx dns解析

我正在尝试锁定子网上的端口,但在 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 解析就会有效。

我的问题是:

  1. 当我的网络 acl 应用时,我需要做什么才能使 nginx 解析器正常工作?
  2. 我知道每个 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),这些也必须开放。

当然,它们代表了很大的端口范围,但正如文档所述,您始终可以拒绝来自恶意端口的流量。

相关内容