大家好,又见面了,我是你们的朋友全栈君。
这几天在公司的路由器上做了Aliddns,对公司的内部网络的一些服务映射到公网,在家里就可以访问到公司的一些服务。 出现了一个问题:在外网利用域名 端口号可以正常访问到公司的服务,在公司内网的时候访问却没办法利用域名访问,只能用IP才能访问到相关服务 找了一些资料,总结原因如下: 例:在公司内网访问: 访问者:代号A 被访问者:代号B 路由器:代号R 由于在做DDNS时,在路由器上会把B绑定为公网IP,所以在访问者A访问域名时,解析出来的公网IP,这时候发送的包: 源地址为:A的内网IP,目的地址为:公网IP。SYN为1 在路由器上路由表对应的设备为访问者B,所以路由器会把包丢到被访问者B上,B收到包后会回应一个包: 源地址为:B的内网IP,目的地址为:A的内网IP。SYN=1,ACK=1 这时候,A就收到了一个源地址为:B的内网IP,目的地址为:A的内网IP的包,在A的请求记录中没有发送给B的内网IP的包,所以A认为这是一个错误的包,于是A就把包丢弃,继续等待公网IP回应的包,直到等待超时, 在B上,也一直等待A回应的TCP包,直到等待超时 如下图:
由于TCP三次握手没有完成,所以内网通过域名访问不到内网资源,造成了NAT回流 (NAT回环) 解决方法如下所示: 在路由器上把NAT loopback设置成asus NAT loopback在路由器—防火墙设置—一般设置里面
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/134347.html原文链接:https://javaforall.cn