什么是互联网通讯闸?什么是NAT实例?他们提供什么服务?
阅读AWS VPC文档,我收集到它们都将私有IP地址映射到用于传出请求的internet可路由地址,并将来自internet的传入响应路由到子网上的请求者。
那么它们之间有什么区别呢?在什么情况下我可以使用NAT实例而不是Internet网关?
它们本质上是运行一些网络应用程序的EC2实例,还是像路由器这样的特殊硬件?
不要简单地指向AWS文档链接,您能否解释这些链接,并添加一些关于什么是公共子网和私有子网的背景知识,以便任何对网络知识有限的初学者都能轻松理解这些内容?
什么时候我应该使用NAT网关而不是NAT实例?
附注:我是AWS VPC的新手,所以我可能在这里比较苹果和橘子。
就NAT网关和NAT实例而言,两者都可以。NAT实例可能稍微便宜一点,但NAT网关完全由AWS管理,因此它的优点是不需要仅为NAT维护EC2实例。
但是,对于需要对Internet可用的实例,NAT网关/实例并不是您要寻找的。NAT将允许私有实例(没有公共IP)访问Internet,但不允许其他方式。因此,对于需要对Internet可用的EC2实例,需要分配一个公共IP。如果您确实需要保持EC2实例的私有,有一个变通方法—您可以使用弹性负载均衡器来代理请求。
互联网网关
互联网网关是您的VPC连接到互联网的方式。您使用带有路由表的Internet网关告诉VPC Internet流量如何到达Internet。
Internet Gateway在VPC中只是一个名称。亚马逊管理着网关,你没有什么发言权(除了使用与否;请记住,您可能需要一个完全分段的子网,它根本无法访问Internet)。
公共子网是指通过AWS的internet网关路由internet流量的子网。公共子网中的任何实例都可以有一个公共IP分配给它(例如,启用了“关联公共IP地址”的EC2实例)。
私有子网意味着实例不能从internet公开访问。他们没有公共IP地址。例如,您不能通过SSH直接访问它们。私有子网上的实例仍然可以自己访问互联网(即通过使用NAT网关)。
互联网网关
Internet Gateway是Amazon VPC与Internet之间的逻辑连接。它不是物理设备。每个VPC只能关联一个VPC。它不限制互联网连接的带宽。(带宽的唯一限制是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实例上关闭源/目的检查选项非常重要,否则流量将被阻断。
NAT 网关
AWS引入了一个NAT网关服务,可以代替NAT实例。使用NAT Gateway服务的好处有:
它是一个完全托管的服务——只需创建它,它就会自动工作,包括故障转移
它可以突发到10 Gbps (NAT实例被限制为与EC2实例类型相关的带宽)
然而:
NAT网关不能关联安全组
每个AZ中都需要一个,因为它们只在单个AZ中运行