[AWS] NAT Gateway

NAT Gateway


基础知识

一、概念

  • 基本设置

NAT Gateway设置时,要指定处于哪个 public subnet 中。

只允许内网访问外网,比如进行升级。

 

  • 什么是 NAT

NAT网关作为一个网关设备,需要绑定公网IP才能正常工作。创建NAT网关后,您可以为NAT网关绑定弹性公网IP(EIP)。

Ref: 【折腾必懂·理论篇】第八期 NAT、内网穿透、SDN

NAT有三种:静态NAT动态NATPAT/NAPT。其中最后一种又可分为 SNAT 和 DNAT 

从定义上讲,SNAT是原地址转换,DNAT是目标地址转换。区分这两个功能可以简单的由服务的发起者是谁来区分,内部地址要访问公网上的服务时,内部地址会主动发起连接,将内部地址转换成公有ip。网关这个地址转换称为SNAT. 当内部需要对外提供服务时,外部发起主动连接,路由器或着防火墙的网关接收到这个连接,然后把连接转换到内部,此过程是由带公有ip的网关代替内部服务来接收外部的连接,然后在内部做地址转换,此转换称为DNAT.主要用于内部服务对外发布。
      • SNAT 可以为VPC内无公网IP的ECS实例提供访问互联网的代理服务。

云服务器看来,所有请求都是从路由器发出来的。

      • DNAT 可以将NAT网关上的公网IP映射给ECS实例使用,使ECS实例能够提供互联网服务。

再通过nginx的80端口,用到端口映射。

 

  • NAT 的缺陷

下面就是NAT的缺陷。

 

  • 内网穿透技术

STUN, Simple Traversal of UDP through NAT(打洞)

TURN, Traversal Using Relay NAT(转发),貌似就是这个,通过公网上NAT网关作为了 “媒婆”

 

 

二、创建 NAT网关

 小哥讲得很真诚 :) 

Ref: How to Create a NAT Gateway

  

1). 创建public子网和private子网,参见:[AWS] 09 - VPC。这里只配置了子网,其实还没有分配 IP。

 

2). 首先设置 vpc --> Two Elastic IP Address for 2 NAT Gateway.

弹性 IP 地址 是专为动态云计算设计的静态 IPv4 地址。使用弹性 IP 地址,您可以快速将地址重新映射到您的账户中的另一个实例,从而屏蔽实例故障。弹性 IP 地址会分配给您的 AWS 账户,并且在您释放它之前一直属于你。

 

3). 再开始配置 NAT Gateway,并为 NAT Gateway 指定上述刚设置的一个Elastic IP Address 为 自己的IP地址。

  

4). 打开 私有子网 的 Route Table,添加一条路由 指向 NAT Gateway。如此,就连通了 public subnet 与 private subnet 了嘛:)

下图表示:允许来自所有的 流量 指向 该网关的 Elastic IP Address。

 

 

三、升级为 Highly Available NAT Gateway 

Ref: Let's Create a Highly Available AWS NAT Gateway

如果 Public Subnet 1中的 NAT Gateway挂了,至少希望有另一个还活着的gateway。

其实就是设置了两个zone。

 

 

访问测试

一、内网 访问 Internet

Ref: Test Outbound Internet Access Through the NAT Gateways

  • 设置role

IAM --> roles

  --> create user case: ec2 --> choose policy

  --> Role name is "SSMRole"

 

  一个拥有该POLICY的ROLE,就准备好了。

 

  • 创建、配置 instance

Network,选择 VPC。

Subnet,选择 private subnet。

IAM role,配置好的role。

 

  • 测试 Outbound Internet Access

AWS Systems Manager --> run command

 

开机启动命令设置如下,通过升级指令测试访问外网效果。

sudo yum update -y

 

Choose instances manually,选择刚配置好的ec2 instance。

然后按照同样的步骤,创建另一个私有子网的另一台ec2。

 

 

二、Internet 访问 内网

  • Lambda function in a VPC

AWS Knowledge Center Videos: How do I give internet access to my Lambda function in a VPC?

个人实践经验:

先一同部署了api gateway + lambda function, 然后给lambda function 加上vpc,仍然是可以工作的。

下一步就是如何用该lambda function 去 invoke 属于同在一个subnet的lambda 即可。

 

End.

posted @ 2021-01-17 10:26  郝壹贰叁  阅读(1314)  评论(0编辑  收藏  举报