[AWS] NAT Gateway
NAT Gateway
基础知识
一、概念
-
基本设置
NAT Gateway设置时,要指定处于哪个 public subnet 中。
只允许内网访问外网,比如进行升级。
-
什么是 NAT
NAT网关作为一个网关设备,需要绑定公网IP才能正常工作。创建NAT网关后,您可以为NAT网关绑定弹性公网IP(EIP)。
Ref: 【折腾必懂·理论篇】第八期 NAT、内网穿透、SDN
NAT有三种:静态NAT、动态NAT、PAT/NAPT。其中最后一种又可分为 SNAT 和 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.