概述
OTA上传场景,脚本需要使用curl请求服务器的一个接口传递信息.但是在源码服务器上一直卡在请求阶段,本地机器却可以请求成功.
分析解决
背景信息
主机IP信息:
OTA服务器IP地址:10.10.7.40
源码服务器地址:10.10.7.83
本地地址:10.10.9.68
请求:
curl -d "newtime=$timestamp&number=$1&md5=$md5" https://niot.com:8091/api/edition/firmwareedition_add
源码服务器请求
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:25 --:--:-- 0
一直卡在请求,没有响应;但是本地机器请求是成功.
使用wget尝试
本地尝试成功:
--2020-05-22 17:13:20-- https://niot.com:8091/api/edition/firmwareedition_add
正在解析主机 niot.com (niot.com)... 10.10.7.40
正在连接 niot.com (niot.com)|10.10.7.40|:8091... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 45 [application/json]
正在保存至: “firmwareedition_add.1”
firmwareedition_add.1 100%[=======================>] 45 --.-KB/s 用时 0s
2020-05-22 17:13:20 (9.68 MB/s) - 已保存 “firmwareedition_add.1” [45/45])
源码服务器尝试失败
--2020-05-22 17:29:01-- https://niot.com:8091/api/edition/firmwareedition_add
Resolving niot.com (niot.com)... 218.17.115.123
Connecting to niot.com (niot.com)|218.17.115.123|:8091...
但是发现本地和源码服务器解析的IP地址不一样;本地机器解析的是内网地址;而源码服务器解析的是外网地址.
修改hosts
怀疑是该接口无法从外网访问,于是修改hosts文件.
/etc/hosts
增加下面一行
10.10.7.40 niot.com
重新测试发现源码服务器可以访问成功,那就说明确实是外网无法访问该接口.
所以对于具有外网IP的域名,内部访问最好使用内网IP地址解析.