过网闸无法打开客户通信软件,组网简化如下:
客户端---内端机(网闸)内端机---软件服务器
对比而言,如果客户端在外端机侧,直接登录软件,可以正常通信。
不涉及
网闸通道映射如下,业务逻辑很简单(据现场所说)。从下图可以看出,监听地址和目的地址一样,可以理解为网闸将内网客户端----11.11.155.98的请求摆渡到外端机侧,转换为10.242.57.100---11.11.155.98。
针对此类应用不通的问题,排查流程一般是先查看网络连通性,可以参考案例:
https://zhiliao.h3c.com/Theme/details/223161
实际测试发现连通性没有问题,在网闸上抓包也可以看出,网闸内外端机报文一样。没有丢包情况。
此类情况,要从应用的特性下手。因此比较外端机侧直接打开软件的抓包进行对比,发现经过网闸以及应用测试正常(正常的客户端)的请求对比如下:
显而易见,Host字段存在很大区别。那么是否有可能服务器侧对请求有校验呢?发现APP上配置有关于域名的设置如下:
于是,让现场取消域名设置后测试。发现结果并没有什么不同。
问题分析到这里陷入僵局,从网络层面看并没有看出网闸问题,怀疑和应用特性有关。
于是仔细对比了正常和异常的抓包,发现虽然服务器都是响应了200 OK。但是请求报文还是略有不同,如下。
过网闸都是这样:
POST /cgi-bin/unkey HTTP/1.1
Host: 11.11.155.98
Accept: */*
HeadHex: CAEQBhgAIIGABCi7CTABOABCJDJmMDhhODAxLWIzMjUtNDk5ZS05Zjk4LWRiMDY1ODkzN2U3MUoMMy4wLjMwMDAwLjc1UABaAGABcgB4AIABAMo+C1dYV29ya0xvY2Fs2j4kM2ExNTVlNmQtNmNiMC00MGZmLWJiZjktMzFjODY5ODgzYzE1+D4A
Content-Length: 144
Content-Type: application/x-protobuf
LOG-TASK-ID: 1FB24D90_1703063344
Tag: LocalProxyService
不过网闸:
POST /cgi-bin/key HTTP/1.1
Host: ***.***
Accept: */*
HeadHex: /GMECfMM/MPJGxm8TSmNeqON509OdiKhOhIVI2hSPBE0WDfhvSNAaMt8o+Q3EriQXhFAn9YoKRIgVg0rBQtTHcEAeUT22p8NrJ69/QXZxaH0NUDVPriuG36ZYIqbsPUkiO1xZaIEt543GLsz1AK2/v3O3qbAK5+GlXa7ST4mlfnbhyE41RaXpNQX/WhUD3TKmC8KFitATqizJV4dBZfB+rMG6eusqHbk3VWG/iHU0X0=
Content-Length: 230
Content-Type: application/x-protobuf
细心地同学可以发现,同样是POST请求,对应的路径却不一样。那么为什么过了网闸客户端没有发起对应的请求呢(POST /cgi-bin/key HTTP/1.1)?
该异常现象令人百思不得其解,让我一度怀疑两台电脑设置是不一样的。
看内端机抓包,发现针对域名Name: ***.***,没有对应的回包。
难道应用实际依赖于域名解析,内网侧客户端没有解析到域名,所以没有发起连接?
抱着测试的态度,内网PC配置静态域名解析测试。配置方法为针对C:\Windows\System32\drivers\etc 路径下hosts添加静态域名。具体方式可以参考百度。
配置好之后业务测试正常。
后续经过和现场确认应用内置域名,需要解析到对应的地址才能建立连接。
内端机侧没有没有dns服务器,外端机侧有dns服务器可以正常解析。
后续网闸配置dns通道,问题解决。
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作