1,问题背景。
在阿里ECS上调用第三方短信接口,始终无法成功。接口不是IP地址,而是一个带域名的 URL接口。
2,问题原因
网络调测,首先便是两头一掐,确认别人根本没有收到我的请求,于是开始分析我发出去的报文。
根据发送请求返回的错误码,说是主机名无法解析。我用curl发送的请求,首先是百度一番,还真有人同样的错误码,但细一瞅,就觉得大不同,别人是什么IPV6影响。
我这个都没启动IPV6了。我 寻思 ,既然短信包发不出去,就curl下其它域名网站,百度主页简单,就拿它测试吧。果然不行,证实所有的域名解析都无法成功。
我自然想到了端口限制,为 了安全,配置了server的iptables策略。先证实下是不是这个原因。直接如下命令停用防火墙:service iptables stop,再运行程序,OK啦。
知道原因后,心中也不慌了,找资料得知域名解析用的53端口,于是iptables命令加上53端口(如下UDP和TCP都加满)。
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p