怎么实现两个网段的联通,两种情况

时间:2024-03-20 16:53:15

一、背景

最近在公司做一个平台项目,存在公司内网的两个网段的服务器和客户端的互联。例如服务器IP:10.70.48.250和多台客户端IP 172.22.68.***。
由于服务端需要使用客户端的IP地址来作为标识,这样方便从服务端存储的异常客户端的IP快速查找到对应的客户端,从而查看其本地日志。这就需要服务端能获取到的客户端的IP唯一了。

我以往没出现过这种内网网段不同的情况,按照之前的开发外网服务器的情况,因为服务器获取到的实际上是客户端的外网IP,又因为外网IP实际上很有限。所以我们家里的电脑基本都没有独享的外网IP,而是通过(同一个局域网的用户)共用同一个外网IP。

所以我就类比这种情况 ,以为,10.70.48.250上的服务器接受到的来自客户端的请求会是IP为网段10.***下面的。

实际上,10.70.48.250的机器上是可以直接ping通172.22.68.××下面的机器的。我网上查了一下,找到了原因。

一、两个网段的连通实现

首选,172和10网段都是私有IP,也就是非公网IP是大家局域网下都可以使用的IP段。那么如果两个局域网172和10。直接想实现互联,有两种方式。

1.直接连通(也就是172和10的机器能相互ping通)

这种方式是使用的网关,做静态路由。
比如,这篇文章的案例一(如下图)
怎么实现两个网段的联通,两种情况
要实现pc1和pc2的互通,实际上就是在R1上,设置静态路由,设置IP192.168.1.0,子网掩码255.255.255.0、网关192.168.0.100。
这样设置之后,的那个192.168.0.0想访问192.168.1.0这个IP时,首选会请求R1路由器,R1通过子网掩码与运算之后,192.168.1.0 & 255.255.255.0 = 192.168.1.0不属于192.168.0.0网段。但是静态路由上有所以,通过静态路由,转发给指定的网关192.168.0.100,而192.168.0.100接口上的路由器(也就是网关)路由表中能查到192.168.1.0的IP,所以直接发给了192.168.1.0。这样就是直接连通。

2.NAT网关,地址空间映射

NAT:网络地址转换协议
这种方式就是我们上面背景说的,外网服务器,内网客户共享一个外网IP的情况。实际上NAT网关实现的就是将一个网段的地址映射到另一个网段的另一个地址。这就有几种情况。
NAT网关有几转换方式。

2.1 静态转换,即一个IP直接映射为另一个网段里的一个IP。

2.2 动态转换,即一个IP随机映射到另一个网段里面的IP池中的一个。

2.3 端口多路复用,即一个IP会映射到另一个网段里面的某个IP的随机端口上。(也就是我们很多外网网关的实现,多个内外用户共享一个外网IP的随机的端口)

区别:之所以现在普通宽带都用的端口多路复用是因为,首选,通过这种方式,多个用户可以共享一个IP的不同端口,这样极大的扩大了一个IP的利用率,相比静态和动态更高。而且更加安全。因为,降低了外网的威胁攻击内网用户的风险,隐藏了内网的机器。

思考:不是有互信机制(内网IP:a访问外网IP:A后,A才可以直接给a发请求,而且是有有效期的,如果a没给A发过请求,A给a发请求,会被a的路由器直接抛弃)?为什么还要担心外网威胁。网觉得可能是因为,我们假设大家都经常使用某个网站,如果我现在构造假的数据包(源地址设置为那个网站)数据包里面携带漏洞利用负载。疯狂的发给某个外网IP,那么如果刚好外网IP采用静态转换,那么可能就直接能攻击到了 。如果用的动态转化,运气好也能攻击到。但是,端口多路复用,这个攻击到的概率就会降低,比较困难。【只是想法,可能不对】

三、两种方式的区别

1.直接连通的方式,那就不是通过地址映射机制。即10的和172的可以直接相互ping通。就跟在同一个地址空间一样。

2.第二种NAT协议的方式,显然,只能单向ping通(互信之前),比如是172的映射到10里面。
这里如果有服务器10.70.48.250,客户端172.22.68.2映射到10.70.48.2。这种情况下,客户端172.22.68.2请求10.70.48.250,服务端查看客户端IP时,IP会是10.70.48.2,而不是172.22.68.2。因为是映射,response时,NAT网关会把10.70.488.2收到的转发给172.22.68.2。

四、区别的实质

实质上,就是路由器在转发172网段的请求时是否会把源地址转换为10网段的地址。