互联网网关
Internet网关是Amazon VPC与Internet之间的逻辑连接。它不是物理设备。每个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实例上关闭Source / Destination Check选项,否则流量将被阻止。
NAT网关
AWS引入了可以代替NAT实例的NAT网关服务。使用NAT网关服务的好处是:
- 它是一项完全托管的服务-只需创建它即可自动运行,包括故障转移
- 它可以突发高达10 Gbps(NAT实例仅限于与EC2实例类型相关联的带宽)
然而:
- 安全组不能与NAT网关关联
- 您需要在每个可用区中使用一个,因为它们只能在单个可用区中运行