AWS VPC – 互联网网关与NAT

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

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

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

不要简单地指向AWS文档链接,可以请您解释一下这些内容,在公共和私有子网上添加一些背景知识,因此任何对networking知识有限的初学者都可以轻松理解这些知识。 另外,什么时候应该使用NAT网关而不是NAT实例?

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

互联网网关

互联网网关是亚马逊VPC和互联网之间的逻辑连接 。 这不是一个物理设备。 每个VPC只能有一个关联。 它不会限制Internet连接的带宽。 (对带宽的唯一限制就是Amazon EC2实例的大小,它适用于所有stream量 – 在VPC内部并stream向Internet。)

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

如果一个子网有一个将stream量引导到Internet网关的路由表,则认为该子网是公共子网

NAT实例

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

#!/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的私有子网中的实例可以通过路由表configuration将其Internet连接stream量转发到NAT实例。 然后,NAT实例将向Internet发出请求(因为它位于公共子网中),并且响应将被转发回到私有实例。

发送到NAT实例的stream量通常会发送到与NAT实例本身没有关联的IP地址(它将被发往Internet上的服务器)。 因此,closuresNAT实例上的源/目标检查选项非常重要,否则stream量将被阻塞。

NAT网关

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

  • 这是一个完全托pipe的服务 – 只需创build它即可自动运行,包括故障切换
  • 它可以高达10 Gbps(NAT实例仅限于与EC2实例types关联的带宽)

然而:

  • 安全组无法与NAT网关关联
  • 由于他们只在一个AZ中操作,因此每个AZ中都需要一个

至于NAT网关与NAT实例,要么工作。 NAT实例可以便宜些,但是NAT网关完全由AWSpipe理,所以它具有不需要维护仅用于NAT的EC2实例的优点。

但是,对于需要可用于Internet的实例,NAT网关/实例不是您正在寻找的。 一个NAT将允许私有实例(没有公共IP)访问互联网,但不是相反的方式。 因此,对于需要可用于Internet的EC2实例,您需要分配一个公共IP。 如果您确实需要保持EC2实例为私密状态,则有一种解决方法 – 您可以使用弹性负载平衡器来代理请求。

互联网网关

互联网网关是您的VPC如何连接到互联网。 您使用Internet网关与路由表来告诉VPC互联网stream量如何到达互联网。

Internet网关只出现在VPC中。 亚马逊pipe理的网关,没有什么你真的有发言权(除了使用它,不要记住,你可能需要一个完全分段的子网,根本无法访问互联网)。

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

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

互联网网关用于将vpc连接到互联网,并使用NAT网关将专用子网连接到互联网(这意味着有什么stream量正在进入到将转发到NAT网关的专用子网实例)。 您需要将路由表中的stream量转发到NAT

路由表0.0.0.0/0