ChatGPT解决这个技术问题 Extra ChatGPT

AWS VPC - Internet 网关与 NAT [关闭]

关闭。此问题不符合 Stack Overflow 准则。它目前不接受答案。我们不允许在 Stack Overflow 上提出有关专业服务器或网络相关基础设施管理的问题。您可以编辑问题,使其成为 Stack Overflow 的主题。 4年前关闭。社区上个月审查了是否重新打开此问题并将其关闭:原始关闭原因未解决 改进此问题

什么是互联网网关?什么是 NAT 实例?他们提供什么服务?

阅读 AWS VPC 文档,我收集到它们都将私有 IP 地址映射到用于传出请求的 Internet 可路由地址,并将来自 Internet 的传入响应路由到子网上的请求者。

那么它们之间有什么区别呢?在哪些情况下我使用 NAT 实例而不是(或除此之外)互联网网关?它们本质上是运行某些网络应用程序的 EC2 实例,还是像路由器这样的特殊硬件?

除了简单地指向 AWS 文档链接之外,您能否通过添加一些关于什么是公共子网和私有子网的背景来解释这些内容,以便任何网络知识有限的初学者都可以轻松理解这些内容?还有什么时候应该使用 NAT 网关而不是 NAT 实例?

PS 我是 AWS VPC 的新手,所以我可能在这里比较苹果和橘子。


J
John Rotenstein

互联网网关

Internet 网关是 Amazon VPC 和 Internet 之间的逻辑连接。它不是物理设备。每个 VPC 只能关联一个。它不限制 Internet 连接的带宽。 (带宽的唯一限制是 Amazon EC2 实例的大小,它适用于所有流量——VPC 内部和 Internet 外的流量。)

如果 VPC 没有 Internet 网关,则无法从 Internet 访问 VPC 中的资源(除非流量通过公司网络和 VPN/Direct Connect 流动)。

如果子网具有将流量引导到 Internet 网关的路由表,则该子网被视为公共子网。

NAT 实例

NAT 实例是配置为将流量转发到 Internet 的 Amazon EC2 实例。它可以从现有的 AMI 启动,也可以通过用户数据进行配置,如下所示:

#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 0.0.0.0/0 -j MASQUERADE
/sbin/iptables-save > /etc/sysconfig/iptables
mkdir -p /etc/sysctl.d/
cat <<EOF > /etc/sysctl.d/nat.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.eth0.send_redirects = 0
EOF

私有子网中想要访问 Internet 的实例可以通过路由表配置将其 Internet 绑定流量转发到 NAT 实例。然后,NAT 实例将向 Internet 发出请求(因为它位于公共子网中),响应将被转发回私有实例。

发送到 NAT 实例的流量通常会发送到与 NAT 实例本身不相关的 IP 地址(它将发往 Internet 上的服务器)。因此,关闭 NAT 实例上的 Source/Destination Check 选项很重要,否则流量将被阻止。

NAT网关

AWS 引入了可以代替 NAT 实例的 NAT 网关服务。使用 NAT 网关服务的好处是:

它是一个完全托管的服务——只需创建它,它就会自动运行,包括故障转移

它可以突增到 10 Gbps(NAT 实例受限于与 EC2 实例类型相关的带宽)

然而:

安全组不能与 NAT 网关关联

每个 AZ 都需要一个,因为它们只在一个 AZ 中运行


你能在你的笔记中多加一点吗?如果您在公共子网上有 IGW,NAT 实例将起作用。它们还限制从 Internet 到子网中您的实例的反向查找。
现在在 2019 年,NAT gw 可以只在 VPC 中使用,在“公共”子网或具有“互联网网关”的子网中分配 EIP,在内部子网中,只需路由到 NAT gw。
这个答案仍然准确吗?从 AWS docs,我看到:An internet gateway is a horizontally scaled, redundant, and highly available VPC component that allows communication between instances in your VPC and the internet. It therefore imposes no availability risks or bandwidth constraints on your network traffic.。从描述中我得到的印象是它是一个实际的硬件设备,但由 AWS 管理。如果我的理解不正确,请纠正我。
@Sandeep NAT 实例和 NAT 网关存在于 VPC 中。因此,任何离开它并前往 Internet 的流量仍需要通过 Internet 网关。如果没有 Internet 网关,则无法访问 Internet。
这个答案显然被逐字复制到中等:stackoverflow.com/questions/38690012/…
e
error2007s

至于 NAT 网关与 NAT 实例,两者都可以。一个 NAT 实例可能会便宜一点,但 NAT 网关完全由 AWS 管理,因此它的优点是不需要维护一个 EC2 实例来进行 NATing。

但是,对于需要对 Internet 可用的实例,NAT 网关/实例并不是您要寻找的。 NAT 将允许私有实例(没有公共 IP)访问 Internet,但反之则不行。因此,对于需要访问 Internet 的 EC2 实例,您需要分配一个公共 IP。如果您确实需要将 EC2 实例保持私有,则有一种解决方法 - 您可以使用弹性负载均衡器来代理请求。

互联网网关

Internet 网关是您的 VPC 连接到 Internet 的方式。您使用带有路由表的互联网网关来告诉 VPC 互联网流量如何到达互联网。

Internet 网关仅作为名称出现在 VPC 中。亚马逊管理网关,您没有什么真正的发言权(除了是否使用它;请记住,您可能想要一个完全分段的子网,根本无法访问互联网)。

公共子网是指具有通过 AWS 的 Internet 网关路由的 Internet 流量的子网。公共子网中的任何实例都可以分配一个公共 IP(例如,启用“关联公共 IP 地址”的 EC2 实例)。

私有子网意味着实例不能从 Internet 公开访问。他们没有公共 IP 地址。例如,您不能通过 SSH 直接访问它们。不过,私有子网上的实例仍然可以自己访问互联网(即通过使用 NAT 网关)。


关于 NAT 与 Internet 网关的最佳答案。
很好的答案。只是一个后续问题:当公共子网上的 EC2 实例具有公共 IP 时,从逻辑上讲,它可以自给自足地接收来自 Internet 的入站请求或向 Internet 发出出站请求,因为它的 IP 是可路由且可访问的。那么互联网网关在这里做了哪些额外的工作呢?
@Sandeep EC2 实例没有任何真正的公共 IP,但在幕后,它被映射到一个私有 IP 地址。 Internet 网关有两个用途:在您的 VPC 路由表中为 Internet 可路由流量提供目标,以及为已分配公共 IPv4 地址的实例执行网络地址转换 (NAT)
这应该是公认的答案
G
GNK

Internet 网关用于将 vpc 连接到 Internet,NAT 网关用于将私有子网连接到 Internet(这意味着任何流量都将进入私有子网实例,该实例将转发到 NAT 网关)。您需要将路由表中的流量转发到 NAT

路由表 0.0.0.0/0


感谢您的示例-帮助我摆脱困境!
此页面上有一个图表:docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html,阐明了 NAT 网关和 IGW 的用途。私有子网需要两者才能访问互联网

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅