一台服务器请求另一台时,用公网IP和内网IP访问时的区别?
来源:Leah 时间:2022-08-04 09:17:01阅读:0
假定服务器A的IP=10.1.1.2/24
服务器B的IP=10.1.1.3/24,内部服务10.1.1.3:80
对互联网提供的服务1.1.1.1:80
NAT设备LAN=10.1.1.1/24,WAN=1.1.1.1,NAT设备兼任局域网网关
内网IP访问
服务器A访问服务器B内网IP=10.1.1.3:80,直接通信,流量不通过NAT设备,真的没什么值得写的。
互联网用户访问服务器B公网IP
服务器B提供的服务在互联网呈现形式为1.1.1.1:80。
当互联网用户访问1.1.1.1:80流量到达NAT设备时,NAT设备需要提前完成NAT静态(static)映射表准备好了,应该是这样的:
StaticEntry1.1.1.1:80-10.1.1.3:80
既然有这个静态表项,那么NAT设备可以达到目的IP从1.1.1.1改写为10.1.1.3,然后依据DestinationIP=10.1.1.查找路由表,转发DestinationIP=10.1.1.3的IP报文,这是小菜一碟,服务器B收到该IP报文。
然后B当回复到达时,正常回复消息NAT设备时,NAT然后根据静态映射表SourceIP从10.1.1.3改写为1.1.1.1.改写完成IP查询查询路由表,将IP报文转发到互联网上去。这是一个标准的过程,相信大多数大家都能理解。
为了更好地回答下一个问题,我写了这长段。
服务器A访问服务器B公网IP
SourceIP=10.1.1.2
DestinationIP=1.1.1.1
1.A要访问1.1.1.1:80,查询路由表,发现要发给网关10.1.1.1
2.网关10.1.1.1发现A发给自己的IP报文需要NAT,源IP=10.1.1.2需要做动态NAT映射,A使用随机端口56012,动态生成一个NAT表项:
DynamicEntry1.1.1.1:56012-10.1.1.2:56012
3.NAT设备将IP报文的SourceIP做了以上修改,SourceIP=1.1.1.1
SourceIP=1.1.1.1
DestinationIP=1.1.1.1
4.NAT发现目的IP=1.1.1.实际上与上述静态表项相匹配,毫不犹豫地将目的IP替换,替换后IP报文:
SourceIP=1.1.1.1
DestinationIP=10.1.1.3
5.继续查询路由表IP报文转发给服务器B
6.返程流量处理方法与1-4相似,也经过两次NAT地址变更(源IP、目的IP),最终到达服务器A
Hairpin技术
上文的两次NAT转换使用了Hairpin技术。
一般情况下,从LAN接口收到的流量只会转发到WAN而不是转发到界面上LAN界面,这种限制是为了避免流量环路的可能性。
但是服务器A与服务器B都处于LAN接口上,A使用公网IP访问服务器B,必然先将流量通过LAN接口发给NAT设备,NAT做了两次设备NAT变化后,流量必须从LAN为了实现这种访问,这里打破了上述限制,称这种技术为Hairpin,分叉技术。
如果服务器完成了这个答案,给大家留下一个问题B主动访问互联网上一台服务器2.2.2.2:443,NAT只有静态设备NAT表项:StaticEntry1.1.1.1:80-10.1.1.3:80
NAT设备上没有动态配置NAT,请问服务器B可以访问互联网吗?
服务器无法访问互联网,服务器只使用静态映射表B被动提供服务。
服务器B端口80可以用作源端口吗?
著名的80端口(well-known)对于被动响应端口,操作系统禁止应用程序使用80端口作为源端口,而应用程序使用49152-65535(privateport)随机端口在端口范围内。
如果应用程序使用49152-65535端口中的任何端口作为源端口,则不会与静态匹配NAT表项,加上NAT设备没有动态配置NAT,所以服务器B访问互联网的报文将以SourceIP=10.1.1.3被转发到互联网但是因为10.1.1.3是私有IP,即使到达互联网最后,服务器无法返回。
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:shawn.lee@vecloud.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
本站原创内容未经允许不得转载,或转载时需注明出处:https://news.kd010.com/fwqjs/12321.html
TAG标签:NAT