AWS NAT网关与公共IP用于出站互联网连接
AWS NAT网关与公共IP用于出站互联网连接
我正在学习AWS以及如何为EC2实例配置网络,并有几个问题。我在t2.micro实例中使用CentOS 7。
- 私有IP与实例中的NIC绑定,可以通过
ifconfig -a
命令查看。它的作用似乎是为服务器提供单点联系。添加另一个网络接口并不会像ifconfig -a
所示那样添加另一个NIC。由于主要网络接口不能为静态IP,大多数配置都需要一个辅助网络接口。例如,要将应用程序连接到数据库服务器,请使用分配给第二个网络接口的静态IP。我理解得对吗? - 公共IP在AWS控制台中显示,并提供通过SSH连接到实例的方式,前提是您配置了SG。公共IP还提供了访问互联网进行系统更新的方式。这似乎与AWS的NAT文档相矛盾。如果公共IP已经提供了互联网访问,为什么还需要NAT(实例或网关)?这是指文档中提到的系统更新。
您可以使用NAT设备使私有子网中的实例能够连接到互联网(例如,用于软件更新)或其他AWS服务,但防止互联网与实例建立连接。NAT设备将来自私有子网中实例的流量转发到互联网或其他AWS服务,然后将响应发送回实例。
- 每个实例总是分配一个公共IP和私有IP吗?我还没有完成创建一个新AMI的过程来验证是否有不分配公共IP的选项。如果实例没有公共IP,AWS控制台的
Connect
按钮是否仍然允许您连接到它以管理服务器?在什么情况下实例不会有公共IP?如何连接到该实例进行管理?
我已阅读NAT网关文档并理解其中的大部分内容。我在理解需要NAT网关或互联网网关来启用互联网访问的部分遇到了困难,因为似乎这已经默认启用了。我错过了什么?
AWS NAT网关与公共IP地址用于出站Internet连接的比较
有时候,我们可能会对AWS NAT网关和公共IP地址的使用产生困惑。实际上,公共IP地址并不总是分配给实例。在公共VPC子网中,你可以选择启用或禁用公共IP地址,在私有VPC子网中则没有公共IP地址选项。对于没有公共IP地址的EC2实例,需要使用NAT网关(或NAT实例)才能访问VPC之外的资源。
有时候,我们可能希望将数据库服务器放置在私有子网中,以确保VPC之外的任何东西都无法访问它。然而,你可能希望数据库服务器能够访问Internet以下载补丁等内容,或者可能希望它能够访问AWS API以将备份复制到S3等。这种情况下,你需要通过NAT网关为服务器提供访问VPC之外资源的能力。
在启动实例时,公共IP地址的选项是在第3步中设置的。当再次阅读文档时,"Testing the Internet Connection"部分对此进行了解释。具有公共IP地址的实例位于公共子网中,而没有公共IP地址的实例位于私有子网中。公共/私有IP地址只能在启动实例时分配。我阅读的教程似乎没有明确说明这一点。谢谢-B!
另外,关于你的第一个问题,我认为你过于复杂化了。对于大多数配置,你绝对不需要添加第二个网络接口。我不确定你为第二个网络接口分配的"静态IP"是什么,但是这是不必要的。在VPC中,私有IP是静态的。对于连接VPC内的其他资源,你应该始终使用私有IP,并且应该使用安全组ID而不是IP地址来打开安全组以访问其他VPC资源。
关于我的第二个问题,我没有意识到所有新实例默认都与VPC关联。在阅读实例IP地址分配文档时,我理解"对于在EC2-Classic中启动的实例,当实例停止或终止时,我们会释放私有IPv4地址。如果您重新启动已停止的实例,则会分配一个新的私有IPv4地址。"意味着我需要提供另一个在重新启动时不会改变的IP地址。然而,这并不适用,因为我现在明白我正在使用VPC,并且使用VPC的实例保持相同的私有IP,直到该实例被销毁。
总结一下,为了方便未来的访问者,"Supported Platforms"文档解释了如何确定您的帐户是EC2-VPC仅还是EC2-Classic和EC2-VPC。"VPC Introduction"文档解释了EC2-VPC仅帐户具有自动配置的一些默认值,无需任何操作即可进行配置。其中一些默认值(例如私有子网)无法更改,需要创建另一个"非默认VPC"。