为什么我的云服务器不能绑定公网 ip ?

写在前面:
昨天呢,在校招群里的小伙伴问了我们一个问题,让我们帮给看看:
在这里插入图片描述
一开始呢,博主按照经验呢跟他说是端口号被占用了,因为自己之前就遇到过这个问题。但是经过排查呢,实际上是ip地址绑定错误的问题。那么为什么不能绑定公网ip呢?

云服务器的部署:数据中心

要明白这个问题的原理,我们首先就需要明白你买的服务器(假设是腾讯云)在腾讯csig的机房是怎么布置的?

云服务器一般存放在腾讯csig的数据中心,其放在一个叫机架的地方。机架呢就是一个个的架子,每个架子中摆了好几台服务器,这个服务器就是你云服务器的主体。在机架的顶端呢,往往会存放一台交换机,又称TOR交换机。该机架上的所有的服务器都连在这个交换机上,构成一个子网

当一个机架放不下的时候,就需要多个机架,还需要有交换机将多个机架连接在一起。这些交换机对性能的要求更高,带宽也就越大,被称为汇聚交换机
在这里插入图片描述

汇聚交换机又称汇聚层,其将大量的计算节点相互连接在一起,形成集群。在这个集群中,服务器之间通过二层互通,这个区域常称为一个POD,有时候也称为一个可用区

当节点数据再多的时候,一个可用区放不下,需要将多个可用区连在一起,连接多个可用区的交换机称为核心交换机
在这里插入图片描述
核心交换机的吞吐量更高,高可用要求更高,遇到部署多组核心交换机。核心和汇聚交换机之间为了高可用,也是全互连模式的

核心交换机之外,就是边界路由器了。至此服务器到数据中心边界的层次情况已经清除了。当然,在核心交换机上面往往会挂载一些安全设备,例如入侵检测,DDOS防护等等。这是整个数据中心的屏障,防止外来的攻击。

就此来看,这个给数据中心的服务网络如下:
在这里插入图片描述
其中最底层的AZ1、AZ2、AZ3等等都是可用区。显示,这是一个三层网络结构。这里的三层指的是接入层、汇聚层和核心层三层。这种模式非常有利于外部流量请求到内部应用。

NAT协议

这里我为什么又要讲NAT协议呢?是因为NAT协议在你主机和数据中心云服务器交互的过程中扮演了很重要的角色。

NAT协议
NAT(Network Address Translation)是将IP数据报头中的IP地址转换为另一个IP地址的协议。在实际应用中,NAT主要用于实现私有网络访问公共网络的功能。这种通过使用少量的公网IP地址代表较多的私网IP地址的方式,将有助于减缓可用IP地址空间的枯竭。

一般来说,云服务器都是工作在数据中心的私网的,可以看一下博主的云服务器信息:
在这里插入图片描述
也就是,博主的云服务器所在的交换机的网段是172.17.x.x/x,这个是三层网络中的私网的网络号段。而公网ip 42.192.129.38呢,则是边界路由器的ip地址

假如说,这个时候有一个网络包从我的主机发往我的云服务器。其中NAT地址转换流程如下:
假设我的主机私网ip :192.168.10.2 公网ip:49.2.5.64

那么首先我的主机发送的网络包从6000端口会到达交换机192.168.10.10,交换机将这个网络包的ip地址拆开来看,发现是发给外网42.192.129.38:4000的,就会将这个网络包发给边界路由器49.2.5.64,这个时候边界路由器会根据NAT转换协议,在其NAT表中记录以下信息:

端口号发送ip目的ip转换后ip
6000192.168.10.242.192.129.38:400049.2.5.64:6000

经过转换之后,网络包的源地址就会从192.168.10.2:6000变成49.2.5.64:6000,而目的网络则是不变。同时路由器记录这一去一回的信息,当42.192.129.38:4000有网络包过来的时候,我路由器就知道应该往192.168.10.2:6000这个主机发送了。

注意
这里有个问题没有被解决,就是假如说在公网42.192.129.38下,有两个主机,它们是私网ip地址分别是172.17.0.2172.17.0.3,它们两个访问公网公用ip42.192.129.38。假如说,它们两个同时都开启本机的6000端口监听服务(它们提供不同的服务),那么它们是只有一个能映射到42.192.129.38:6000 还是两个都能呢?
目前来看答案有两种,一种是只能由一个映射,另一个服务器会报错。另一种则是都能映射,但是路由器会对其进行负载均衡
目前来说,支持负载均衡说法的人会多一些。
当然,这只是第一次建立连接的时候会出现这种情况。一旦连接建立,就会在NAT去维护这一来一回的信息。

然后当这个网络包到达公网42.192.129.38的时候,服务器肯定是开启了监听端口172.17.0.2:4000,然后公网根据其下的NAT表中信息,将这个网络包转发至172.17.0.2:4000

公网端口映射私网ip
6000172.17.0.2:4000

同时路由器也会记录一来一回的信息,表示从49.2.5.64:6000来的信息都会往172.17.0.2:4000发送,而172.17.0.2:4000的信息都会往49.2.5.64:6000发送。

至此,NAT协议彻底透彻。

开头问题的答案

所以说,开头问题的答案也就很简单了。

在这里插入图片描述

参考文献

[1] 刘超.趣谈网络协议.极客时间
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shenmingik

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值