问题标签 [aws-nat-gateway]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - 如何在 AWS 中创建 NAT 网关?
因此,我应该(理想情况下)为每个 AZ 创建 1 个 NAT 网关,并与每个 AZ 中的私有子网相关联。NAT 网关采用allocation_id
:
与 NAT 网关关联的弹性 IP 地址的分配 ID。如果弹性 IP 地址与其他资源关联,您必须先解除关联。
EIP 附加到Instance 或 Network Interface。
那么我需要创建什么来创建 NAT 网关?
- 一个EIP...
- ...与实例或网络接口相关联。
我关联的这个实例或网络接口是什么?我不太明白。
我想象我有一堆也需要访问互联网的私有子网网络服务器。这些网络服务器是他们谈论的与 EIP 关联的实例吗?或者是什么?
我可以只创建一个 NAT 网关和一个 EIP 而没有其他东西将 EIP 连接到实例/网络接口吗?
amazon-web-services - VPC 流日志和 Nat 实例
我的 VPC 中有两个子网:
- 具有 Nat实例的公共子网
不允许来自 Internet 的传入连接。 - 具有私有子网的应用程序服务器
路由表的私有子网将 Nat 实例的 eni 用于 0.0.0.0/0 目标,因此我的应用程序服务器可以通过 Nat 实例向某个外部服务器发送请求。
VPC Flow 日志格式如下:
因此,在应用程序服务器的流日志中,我看到了:
似乎,外部主机 31.220.24.x 正在尝试连接我的私有实例 172.30.4.205,不是吗?但是,根据这个文档,18作为tcp-flag表示 SYN-ACK,所以它是外部主机对来自内部主机的 SYN 数据包的响应。我对在没有之前的 SYN 数据包的情况下获得 SYN-ACK 感到困惑,所以我尝试模拟这种情况并通过tcpdump记录所有数据包。我从 172.30.4.205 向 31.220.24.x 发送了一些数据,并在 CloudWatch 中获得了相同的日志,但 WireShark 中的所有三个数据包 - SYN、SYN-ACK、ACK:
所以,问题是为什么我在应用服务器的 CloudWatch 日志中看不到第一个 SYN 数据包。提前致谢!
amazon-web-services - Lambda 函数无法访问 Secrets Manager
我编写了一个 lambda 函数来访问数据库,因此第一步是从 AWS Secrets Manager 获取密钥。我有一个私有 VPC 以及与 lambda 函数关联的子网、NAT 网关和安全组。我也有secretsmanager.Secret.grantRead(lambda_exec_role)
,所以 lambda 应该可以访问 Secrets Manager。
由于某种原因,当我在 API Gateway 中测试它时,我在 CloudWatch 中得到了 "errno": "ETIMEDOUT" 和 "code": "NetworkingError"。从我在 API 中的打印日志来看,获取秘密失败了。
我还尝试为 Secrets Manager 添加一个 VPC 端点,如此处所示,但仍然出现相同的错误。
感谢这里的任何人可以帮助我或提供一些提示。
非常感谢!
java - 通过 AWS Nat Gateway 的连接问题
我在私有子网中有一个带有 Spring Boot 应用程序的 Amazon Linux 2 应用程序服务器。在公共子网中,该应用程序服务器前面有一个 Nat 网关。应用程序向远程主机发送带有Connection: keep-alive标头的请求,远程主机使用相同的标头发送回响应。所以我可以通过 netstat 看到已建立的连接。
由于 350 秒内没有流量,Nat 网关根据本文档关闭连接:https ://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-troubleshooting.html#nat-gateway-troubleshooting-timeout 但是应用程序服务器上的连接仍处于已建立状态,因此对远程服务器的下一个请求给了我:
我试图在sysctl.conf中的应用程序服务器上进行更改,以几乎与 Nat 网关同时关闭连接:
但是什么都没有发生,并且通过 tcpdump 将流量从应用程序服务器转储到远程服务器不会给我任何保持活动的数据包。那么除了删除应用程序中的 Connection 标头之外,我能做些什么来避免这个问题呢?
amazon-web-services - 私有子网中的 AWS EC2 实例无法通过 NAT 网关连接到 Internet
我有两个 EC2 实例,一个在公共子网 (10.1.1.0/24) 上,一个在私有子网 (10.1.2.0/24) 上,公共子网中的 EC2 实例与 Internet 连接和配置的服务正常工作。
在公有子网 10.1.1.0/24 中配置了一个具有弹性 IP 的 NAT 网关。私有子网上的默认路由是 [0.0.0.0/0 --> 公有子网中的 NAT 网关]。我在私有子网上有一个自定义网络 ACL,我观察到当入站/出站规则的源和目标设置为 10.1.1.0/24(公共子网)外部连接中断,但 ssh 有效。只有当源/目标设置为“任何”时,互联网连接才会恢复。我试图了解在私有子网上的网络 ACL 中应该使用什么确切的源/目标,以使 Internet 连接正常工作。
amazon-web-services - 我们可以将 Web 层中的 EC2 实例设为私有吗?
我们有典型的 3 层架构,包括 Web、App 和 DB。我们可以将 Web 层中的 EC2 实例设为私有吗?并只允许通过 ALB 传入流量?AFAIK 我们可以应用一个只允许来自 ALB 的 SG 的连接的 SG。但是,如果我们的私有 EC2 实例必须将响应返回给客户端怎么办?它将如何通过 ALB 路由,因为 ALB 主要用于管理传入流量。同样对于传出流量,我们可以配置私有 EC2 实例 -> ALB -> Internet 之类的东西吗?如果是,那怎么办?那么,私有 EC2 实例有没有办法在不分配公共 IP 的情况下与 Internet 通信?
amazon-web-services - Nat Gateway 数据传输成本分析
根据 AWS 计费仪表板,我认为“EC2:NAT 网关 - 已处理数据”的成本更高,有没有办法让我了解这一点,哪个实例或哪个用户或哪个 s3 存储桶或哪个 emr 集群?
amazon-web-services - Terraform NAT 网关设置路由表
我正在尝试在我的路由表中设置我的私有多个 NAT 网关,但我对我缺少的东西感到困惑。有人可以帮助我了解我所缺少的代码吗?
这是我的路由表:
这是我的 NAT EIP 和 NAT 网关:
我以前想将每个 NAT 网关附加到我的路由表,目的地为 0.0.0.0/0,但无法做到。有没有办法让您的 NAT 网关在您的架构中具有高可用性,或者您应该只附加一个 NAT 网关?如果是这种情况,我需要输入什么才能使其仅在 Terraform 中附加一个 NAT 网关?将不胜感激任何帮助。
更新:对于任何对此场景有疑问的人,我为正在寻找答案的其他人更新了代码。
amazon-web-services - 从 elb 访问私有子网中的 ASG 时出现问题
我在 ALB 中有 502 错误。
我的 vpc 和路由。
每个安全组都为端口 80 443 和 22 的传入流量打开。出站为 0.0.0.0
电子负载均衡器
ASG
user_data 脚本只是安装 apache web-server 并启动它
我阅读了这篇文章链接,我的代码对我来说看起来一样,有人可以解释我在哪里犯了错误。
如果没有 nat-gateway(并且 ASG 在公共子网中),一切正常,但使用 ALB 访问 Internet 中已经可见的实例是没有意义的。