亚马逊AWS学习——多网络接口下配置EC2实例连接公网的一个“bug”

摘要:
本篇说一下连接公网时会出现的一个小问题。如题所看到的,在一个EC2实例具有多个网络接口的环境下,假设为其配置公网连接会有一个“bug”。事实上也不能说是“bug”,而是AWS网络环境的限制。主网络接口,相应一个默认的子网,不能与EC2实例进行分离操作。当我们须要自己的EC2实例同一时候处于多个子网中时,就须要为其添加ENI。

转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/47667627
本文出自【我是干勾鱼的博客

之前在《亚马逊AWS学习——EC2的自己定义VPC配置》这篇文章中讲述了怎样设置自己定义VPC并使自己的EC2实例能够连接公网。本篇说一下连接公网时会出现的一个小问题。

如题所看到的,在一个EC2实例具有多个网络接口的环境下,假设为其配置公网连接会有一个“bug”。事实上也不能说是“bug”,而是AWS网络环境的限制。

1. 主网络接口

我们知道,非常多时候我们的一台主机须要有多个网络接口,以使其同一时候架设在不同的网络中。

EC2实例创建时会有一个主网络接口,默认描写叙述为“Primary network interface”,每台EC2实例至少有一个网络接口。就是这个主网络接口。主网络接口,相应一个默认的子网,不能与EC2实例进行分离操作。当然也就不能被删除。

2. 弹性网络接口(ENI)

“Elastic Network Interface”即弹性网络接口,简称ENI。

AWS的官网上对弹性网络接口(ENI)是这样解释的:弹性网络接口 (ENI) 是能够包括下面属性的虚拟网络接口:

  • 主要私有 IP 地址

  • 一个或多个次要私有 IP 地址

  • 每一个私有 IP 地址一个弹性 IP 地址

  • 一个公有 IP 地址。可在您启动实例时自己主动分配给 eth0 的网络接口。可是仅当您为 eth0 创建网络接口而不是使用现有的网络接口时才干实现此自己主动分配

  • 一个或多个安全组

  • MAC 地址

  • 源/目标检查标记

  • 描写叙述

说得太正规了啊。小鱼也有些望而生畏。

只是世间一切奇怪之物的第一特点不是奇怪。而是看起来奇怪。

大的是看起来好大。小的是看起来非常小。否则《冰河世纪》里的猛犸象妹妹也不用躲在小树后面以为自己是仅仅鼹鼠,蚂蚁看到自己的写真照片也要取代螳螂去做劫匪了。

这ENI再具有弹性,也还是个网络接口而已,说白了就是一块网卡。因为EC2是虚拟设备。网卡的环境也被虚拟了出来。当我们须要自己的EC2实例同一时候处于多个子网中时,就须要为其添加ENI。添加了ENI之后还要将其附加到EC2实例上,选择“EC2”服务,点击左导航“网络接口”,在列表中选中一项。再点击“附加”,如图:

这里写图片描写叙述

假设该网络接口是“in-use”状态,“附加”button就不能再点击。

3. EC2实例连接公网的必要条件

要让EC2实例连接公网有一些必要的条件:

  • 所在子网必须选择了”自己主动分配公有IP“
    设置步骤是这种:
    1.打开 Amazon VPC 控制台。
    2.在导航窗格中,单击 Subnets (子网)。

    3.选择您的子网,单击 Subnet Actions,并选择 Modify Auto-Assign Public IP(改动自己主动分配公有IP)。
    4.假设选中,则 Enable Auto-assign Public IP (启用自己主动分配公有 IP) 复选框会为在所选子网中启动的全部实例都请求公有 IP 地址。

    选中复选框。然后单击 Save (保存)。
    如图:
    这里写图片描写叙述

  • 必须创建了公网网关(igw)而且关联到VPC的路由表
    选中相应的路由表项。能够看到如图:
    这里写图片描写叙述

4. 多网络接口的限制

好了。卖关子卖了这么久,如今该说重点了。

假设你为自己的一台EC2实例事先设置好了多个网络接口,又把什么”自己主动分配公有IP“啊,igw啊都设置好了。实例一启动,呀!居然还是没有公有IP。当然也就不能上网,这是为嘛呢?

因为这是AWS EC2的一个限制,正常情况下一个实例仅仅会分配一个公网IP,除非使用EIP。
对于多个网卡的实例,启动的时候,一个公网IP不能分配给两个网卡ENI,因此分配IP失败。

有的同学说,我尽管有两块网卡,但仅仅有一个设置了公网IP。但实例启动之后发现还是没有成功。是的。这也是不行的。因为虚拟化和底层架构的设计,AWS EC2会限制仅仅要网络接口有多个就不去分配公网IP,而无论你是不是仅仅有一个网络接口设置了公网IP。

5. 解决的方法

非常多时候我们就是须要一台实例相应多个网络接口(要不然要ENI干嘛),这该怎么办呢?

  • 方法一——投机取巧法
    有一个稍稍取巧的办法,在EC2实例启动之前,先仅仅保留一个网络接口,并保证其设置了公有IP。然后启动实例。这时候你会发现实例公有IP设置成功!

    这时候再将其它ENI附加上去,就能够啦!

    只是这种方法另一个限制。假设你停止。然后启动了实例。这时候AWS会尝试又一次分配公有IP,可是检測到多个ENI,所以仍然不能分配公有IP。

    公有IP分配又会失败。

  • 方法二——土豪法
    配置EIP。

    是的就这么简单。只是停机是要付费的。

    哎。这让我又爱又恨的AWS。。

免责声明:文章转载自《亚马逊AWS学习——多网络接口下配置EC2实例连接公网的一个“bug”》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇cscope的用法Python3 pymysql 访问MySql数据库下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

InfluxDB学习(二):InfluxDB数据库、database、measurement、tag、field等基本操作

一. InfluxDB命令介绍 InfluxDB安装完成后,在安装目录的usr/bin下包含InfluxDB的日常使用和管理的二进制文件 $ ls -lh usr/bin/ total 164M -rwxr-xr-x 1 tnuser dba 51M Apr 12 15:56 influx -rwxr-xr-x 1 tnuser dba 63M Apr 1...

这4件事,让你了解边缘计算的真实面貌

作者简介 James Falkoff,位于波士顿的风险投资公司Converge的投资者。 边缘计算已在技术时代精神中占据一席之地,具备创新力和前沿性。几年来,人们一直认为边缘计算一定会成为未来的一种计算方式。但实际上,讨论仍然只是假设性的,因为支持边缘计算所需的基础设施仍然有很大的发展空间。 现在,随着各种边缘计算资源(从微数据中心到专用处理器,再到必...

【网络开发】多播参数设置

原文:http://blog.chinaunix.NET/uid-28458801-id-5085099.html 11.3  多播 单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信。单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网上的主机进行通信。实际情况下,经常需要对一组特定的主机进行通信,...

LwIP协议栈(2):网络接口

  在LwIP中,物理网络硬件接口结构保存在一个全局链表中,它们通过结构体中的 next 指针连接。 struct netif { /// pointer to next in linked list */ struct netif *next; /// IP address configuration in network byte o...

AWS 收费体制

作为初次使用者,要守住钱包,就必须得了解一下AWS的收费体制。 AWS收费对象基本上有三种: compute storage data transfer out:1)对于所有服务,所有region来说,传入的数据都不收费,这样就可以在instance上无顾虑的下载安装软件,使用scp往instance上传代码;2)对于同一region内的AWS服务间的传...

CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解(转)

摘要:KVM虚拟机网络配置的两种方式:NAT方式和Bridge方式。Bridge方式的配置原理和步骤。Bridge方式适用于服务器主机的虚拟化。NAT方式适用于桌面主机的虚拟化。 NAT的网络结构图: Bridge的网络结构见图: 一、Bridge方式 问题 客户机安装完成后,需要为其设置网络接口,以便和主机网络,客户机之间的网络通信。事实上,如果要在安...