在测试机上使用第三方短信API的时候遇到了一个问题,就是CURL超时。本机测试啥问题都没有,然后就开始一步一步的排查。

1,查代码。(代码排除)

2,查服务器防火墙。

服务器防火墙使用的是iptables。最后弄明白是因为iptables配置防火墙后本机无法访问外部网络。

OUTPUT和FORWORD没有任何限制,这有点想不通,只好google一把,发现有人也是遇到这样的问题,解决的办法是添加如下规则:

/sbin/iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

为何在没有添加上述规则就不能通信?因为建立一个通信连接需要服务器端和客户端交互才能完成。

举例来说,从本机使用ssh客户端去登陆外部的ssh 服务器,假设使用端口为12345,那么本就使用tcp端口号12345向服务器22端口发送一个请求,这个属于OUTPUT,由于OUTPUT规则没有 任何限制,所以可以顺利到达服务器,服务器收到请求后,服务器会回应本机的tcp 12345端口,此时回应属于INPUT,如果INPUT中配置放行此规则,那么连接就无法完成,也即是本机无法和外部通信。

外部的网络那么多,总不能逐 条去配置INPUT规则,所以为了能访问外部网络,必须要配置上述规则。

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="">

请选择吧!