2016-08-01 67 views
62

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

阅读AWS VPC文档,我推测他们俩地图上的子网的请求的传出请求和路线从互联网进入的反应私有IP地址的互联网可路由的地址。

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

而不是简单地指向AWS文档链接,可以请你加什么是公共和私人子网,以便与网络知识有限的任何初学者可以很容易地理解这些的一些背景解释这些? 另外,何时应该使用NAT网关而不是NAT实例?

P.S.我是AWS VPC的新手,所以我可能会在这里比较苹果和橙子。

回答

70

互联网网关

因特网网关是一个Amazon VPC和因特网之间的逻辑连接。它是而不是一个物理设备。每个VPC只能有一个关联。它确实不是限制了互联网连接的带宽。 (对带宽的唯一限制是Amazon EC2实例的大小,它适用于所有流量 - 内部到VPC并流向互联网。)

如果VPC 具有Internet网关,然后在VPC 的资源不能从互联网访问(除非通过通信公司网络和VPN /直连)流。

如果一个子网有一个将流量指向Internet网关的路由表,则该子网被视为公共子网

NAT实例

一个NAT实例是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可以有自己的互联网绑定流量转发到NAT实例通过路由表配置。然后,NAT实例将向Internet发送请求(因为它位于公共子网中),并且响应将被转发回私有实例。

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

NAT网关

AWS推出了NAT网关服务,可以采取一个NAT实例的地方。使用NAT网关服务的好处是:

  • 这是一个完全管理服务 - 只需创建它,它会自动工作,包括故障切换
  • 它可以爆高达10 Gbps(一NAT实例仅限于与EC2实例类型相关联的带宽)

但是:

  • 安全组不能与关联NAT网关
  • 你需要在每一个AZ,因为他们只在一个AZ
37

只要NAT网关与NAT实例一起工作。 NAT实例可能便宜一点,但NAT网关完全由AWS管理,因此它具有不需要仅为NAT维护EC2实例的优势。

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

互联网网关

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

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

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

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

+10

最佳答案VS Internet网关的NAT的条款。 – Tagar

0

互联网网关操作用于VPC的连接到互联网和NAT网关用于私人子网连接互联网(这意味着什么流量来到专用子网实例,将转发到NAT网关)。你需要将这些流量发送路由表到NAT

路由表 0.0.0.0/0