什么是互联网网关?什么是NAT实例?他们提供什么服务?
阅读AWS VPC文档,我收集他们都将私有IP地址映射到传出请求的Internet路由地址,并将来自Internet的传入响应路由到子网上的请求者。
那么它们之间有什么区别?我使用NAT实例代替(或除此之外)Internet网关的场景是什么? 它们本质上是运行某些网络应用程序的EC2实例,还是像路由器这样的特殊硬件?
除了简单地指向AWS文档链接之外,您能否通过添加一些关于公共和私有子网的背景来解释这些内容,以便任何对网络知识有限的初学者都可以轻松理解这些内容? 我何时应该使用NAT网关而不是NAT实例?
P.S。我是AWS VPC的新手,所以我可能会在这里将苹果与橙子进行比较。
答案 0 :(得分:173)
互联网网关
Internet Gateway是Amazon VPC与Internet之间的逻辑连接。它不是物理设备。每个VPC只能关联一个。它不限制Internet连接的带宽。 (带宽的唯一限制是Amazon EC2实例的大小,它适用于所有流量 - VPC内部和Internet外部。)
如果VPC 不具有Internet网关,则无法从Internet访问VPC 中的资源(除非流量通过公司网络和VPN流动) /直接连接)。
如果子网具有将流量定向到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实例上的源/目的地检查选项非常重要,否则流量将被阻止。
NAT网关
AWS引入了一个 NAT网关服务,它可以取代NAT实例。使用NAT网关服务的好处是:
然而:
答案 1 :(得分:93)
就NAT网关与NAT实例而言,两者都可行。 NAT实例可以稍微便宜一点,但NAT网关完全由AWS管理,因此它的优点是不需要为NATing维护EC2实例。
但是,对于需要可用于Internet的实例,NAT网关/实例不是您要查找的。 NAT将允许私有实例(没有公共IP)访问Internet,但不允许其他方式访问Internet。因此,对于需要可用于Internet的EC2实例,您需要分配公共IP。如果您确实需要将EC2实例保密,则可以使用弹性负载均衡器代理请求。
互联网网关
Internet Gateway是您的VPC连接到互联网的方式。您使用带有路由表的Internet网关来告知VPC互联网流量如何到达互联网。
Internet网关在VPC中仅作为名称出现。亚马逊管理网关,没有任何你真正的发言权(除了使用与否之外;请记住,你可能想要一个根本无法访问互联网的完全分段的子网。)
公有子网是指通过AWS的Internet网关路由互联网流量的子网。公有子网内的任何实例都可以分配一个公共IP(例如,启用了“关联公共IP地址”的EC2实例)。
私有子网意味着无法从Internet公开访问实例。他们没有公共IP地址。例如,您无法通过SSH直接访问它们。私有子网上的实例仍然可以自己访问互联网(即使用NAT网关)。
答案 2 :(得分:6)
Internet网关用于将vpc连接到互联网,NAT网关用于将私有子网连接到互联网(这意味着流量将转发到将转发到NAT网关的私有子网实例)。您需要将路由表中的流量转发到NAT
路线表 0.0.0.0/0