AWS VPC - 互联网网关与 NAT
AWS VPC - Internet Gateway vs. NAT
什么是互联网网关?什么是 NAT 实例?他们提供什么服务?
阅读 AWS VPC 文档,我了解到它们都将私有 IP 地址映射到用于传出请求的 Internet 可路由地址,并将来自 Internet 的传入响应路由到子网上的请求者。
那么它们之间有什么区别呢?我在哪些情况下使用 NAT 实例而不是(或除此之外)Internet 网关?
它们本质上是 EC2 实例 运行 一些网络应用程序还是像路由器这样的特殊硬件?
除了简单地指向 AWS 文档链接之外,您能否通过添加一些关于什么是 public 和私有子网的背景来解释这些内容,以便任何网络知识有限的初学者都能轻松理解这些内容?
另外,我什么时候应该使用 NAT 网关而不是 NAT 实例?
P.S。我是 AWS VPC 的新手,所以我可能在这里比较苹果和橘子。
就 NAT 网关与 NAT 实例而言,两者都可以。 NAT 实例可以便宜一点,但是 NAT 网关完全由 AWS 管理,所以它的优点是不需要为 NATing 维护一个 EC2 实例。
但是,对于需要在 Internet 上可用的实例,NAT gateway/instances 并不是您要寻找的。 NAT 将允许私有实例(没有 public IP)访问互联网,但反之则不行。所以,对于需要在互联网上可用的EC2实例,你需要分配一个public IP。如果您确实需要将 EC2 实例保持私有,则有一种解决方法 - 您可以使用弹性负载均衡器来代理请求。
互联网网关
互联网网关是您的 VPC 连接到互联网的方式。您使用带有路由 table 的互联网网关来告诉 VPC 互联网流量如何到达互联网。
互联网网关在 VPC 中仅作为名称出现。 Amazon 管理网关,您没有任何发言权(除了使用与否;请记住,您可能想要一个完全分段的子网,它根本无法访问互联网)。
public 子网是指具有通过 AWS 互联网网关路由的互联网流量的子网。 public 子网中的任何实例都可以分配一个 public IP(例如启用 "associate public ip address" 的 EC2 实例)。
私有子网意味着无法从 Internet public 访问实例。他们没有 public IP 地址。例如,您不能通过 SSH 直接访问它们。私有子网上的实例仍然可以自己访问互联网(即通过使用 NAT 网关)。
互联网网关
Internet 网关是 Amazon VPC 和 Internet 之间的逻辑连接。它不是物理设备。每个 VPC 只能关联一个。它不会限制互联网连接的带宽。 (带宽的唯一限制是 Amazon EC2 实例的大小,它适用于所有流量——VPC 内部和互联网外。)
如果 VPC 没有 Internet 网关,则无法从 Internet 访问 VPC 中的资源(除非流量通过企业网络和 VPN/Direct 连接)。
一个子网被认为是一个 Public 子网 如果它有一个路由 Table 将流量引导到 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 的实例可以通过路由 Table 配置将其 Internet 绑定流量转发到 NAT 实例。然后 NAT 实例将向 Internet 发出请求(因为它位于 Public 子网中),响应将转发回私有实例。
发送到 NAT 实例的流量通常会发送到与 NAT 实例本身无关的 IP 地址(它将发往 Internet 上的服务器)。因此,关闭 NAT 实例上的 Source/Destination 检查 选项很重要,否则流量将被阻止。
NAT网关
AWS 引入了可以替代 NAT 实例的 NAT 网关服务。使用 NAT 网关服务的好处是:
- 这是一个完全托管的服务 -- 只需创建它,它就会自动运行,包括故障转移
- 它可以突发高达 10 Gbps(NAT 实例仅限于与 EC2 实例类型关联的带宽)
但是:
- 安全组不能与 NAT 网关关联
- 每个可用区都需要一个,因为它们只在一个可用区内运行
Internet 网关用于将 vpc 连接到 Internet,NAT 网关用于将私有子网连接到 Internet(这意味着任何流量都将到达将转发到 NAT 网关的私有子网实例)。您需要将路由 table 中的流量转发到 NAT
路线table
0.0.0.0/0
什么是互联网网关?什么是 NAT 实例?他们提供什么服务?
阅读 AWS VPC 文档,我了解到它们都将私有 IP 地址映射到用于传出请求的 Internet 可路由地址,并将来自 Internet 的传入响应路由到子网上的请求者。
那么它们之间有什么区别呢?我在哪些情况下使用 NAT 实例而不是(或除此之外)Internet 网关? 它们本质上是 EC2 实例 运行 一些网络应用程序还是像路由器这样的特殊硬件?
除了简单地指向 AWS 文档链接之外,您能否通过添加一些关于什么是 public 和私有子网的背景来解释这些内容,以便任何网络知识有限的初学者都能轻松理解这些内容? 另外,我什么时候应该使用 NAT 网关而不是 NAT 实例?
P.S。我是 AWS VPC 的新手,所以我可能在这里比较苹果和橘子。
就 NAT 网关与 NAT 实例而言,两者都可以。 NAT 实例可以便宜一点,但是 NAT 网关完全由 AWS 管理,所以它的优点是不需要为 NATing 维护一个 EC2 实例。
但是,对于需要在 Internet 上可用的实例,NAT gateway/instances 并不是您要寻找的。 NAT 将允许私有实例(没有 public IP)访问互联网,但反之则不行。所以,对于需要在互联网上可用的EC2实例,你需要分配一个public IP。如果您确实需要将 EC2 实例保持私有,则有一种解决方法 - 您可以使用弹性负载均衡器来代理请求。
互联网网关
互联网网关是您的 VPC 连接到互联网的方式。您使用带有路由 table 的互联网网关来告诉 VPC 互联网流量如何到达互联网。
互联网网关在 VPC 中仅作为名称出现。 Amazon 管理网关,您没有任何发言权(除了使用与否;请记住,您可能想要一个完全分段的子网,它根本无法访问互联网)。
public 子网是指具有通过 AWS 互联网网关路由的互联网流量的子网。 public 子网中的任何实例都可以分配一个 public IP(例如启用 "associate public ip address" 的 EC2 实例)。
私有子网意味着无法从 Internet public 访问实例。他们没有 public IP 地址。例如,您不能通过 SSH 直接访问它们。私有子网上的实例仍然可以自己访问互联网(即通过使用 NAT 网关)。
互联网网关
Internet 网关是 Amazon VPC 和 Internet 之间的逻辑连接。它不是物理设备。每个 VPC 只能关联一个。它不会限制互联网连接的带宽。 (带宽的唯一限制是 Amazon EC2 实例的大小,它适用于所有流量——VPC 内部和互联网外。)
如果 VPC 没有 Internet 网关,则无法从 Internet 访问 VPC 中的资源(除非流量通过企业网络和 VPN/Direct 连接)。
一个子网被认为是一个 Public 子网 如果它有一个路由 Table 将流量引导到 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 的实例可以通过路由 Table 配置将其 Internet 绑定流量转发到 NAT 实例。然后 NAT 实例将向 Internet 发出请求(因为它位于 Public 子网中),响应将转发回私有实例。
发送到 NAT 实例的流量通常会发送到与 NAT 实例本身无关的 IP 地址(它将发往 Internet 上的服务器)。因此,关闭 NAT 实例上的 Source/Destination 检查 选项很重要,否则流量将被阻止。
NAT网关
AWS 引入了可以替代 NAT 实例的 NAT 网关服务。使用 NAT 网关服务的好处是:
- 这是一个完全托管的服务 -- 只需创建它,它就会自动运行,包括故障转移
- 它可以突发高达 10 Gbps(NAT 实例仅限于与 EC2 实例类型关联的带宽)
但是:
- 安全组不能与 NAT 网关关联
- 每个可用区都需要一个,因为它们只在一个可用区内运行
Internet 网关用于将 vpc 连接到 Internet,NAT 网关用于将私有子网连接到 Internet(这意味着任何流量都将到达将转发到 NAT 网关的私有子网实例)。您需要将路由 table 中的流量转发到 NAT
路线table 0.0.0.0/0