公有云如何将大量IP地址分配给各个虚拟机?
是拿下一整个段直接分配公网地址,还是做映射? 根据是否有80端口的需求决定是单独分配地址还是共享地址分配指定端口?
1楼(未知网友)
公有ip都是直接分配到虚机的,它会动态绑定一个公有ip到虚机,所以你可以使用EIP这样的功能。这也是为什么在虚机中运行`ifconfig`只有private ip没有公有ip的信息。
楼主问这个问题可能是因为我们总觉得公有IP是如何如何金贵,以至于发现公有云可以每个虚机挂个public IP觉得不可思议。
其实只是地址已经被分配完了,至于是否紧缺就要看在哪里了。有很多地方地址大把大把富余。我以前在新西兰,每家的宽带其实就直接分配一个共有IP。你在家直接用电脑拨号,你电脑就可以拿到一个公有IP了。这也是为什么他们的家庭宽带还可以申请静态IP的服务。
现在AWS手里有大量的IP地址,通过它发布的ip地址(https://ip-ranges.amazonaws.com/ip-ranges.json),很容易就算出(https://gist.github.com/wbinglee/d903ee7e059d5b742f96)它在使用的地址将近三千万个,那手里 预留的就不知道有多少了。
这个世界资源分配从来都是极不均匀的。
2楼(未知网友)
提供IAAS的云服务商,比如Amazon,应该拿下了很大的公有IP网段,不排除搞到了大量16位掩码的网段(甚至一个8位的)。它的每个用户都可以为自己的EC2分配IP,目前似乎还没有限制(虽说今年全球的IPv4地址已经告罄)。但更普遍的做法都是每个用户独享私有网段(10.0.0.0/8, 192.168.0.0/16),规划他们自己的网络,然后需要的时候为特定的服务器分配公有IP或者使用ELB。
Azure应该也是如此。
3楼(未知网友)
Azure里面你部署一个cloud service,获得一个public endpoint,这个是有公网ip的。但是这个endpoint背后可能有几百台虚拟机,前面通过一个dispatcher来分发请求。所以这个ip是绑在前端dispatcher这里的。
虚机会拿到一个内部ip,这个可以用来内部互相通讯。