zoukankan      html  css  js  c++  java
  • Linux中Curl命令couldn't connect to host解决方案 php操作Curl(http,https)无法获取远程数据解决方案

    本人在做百度账户第三方登录接口,获取百度token,利用php操作curl post方式发送请求token,出现couldn't connect to host错误。经过调试测试,最后终于成功。回头写了博客总结几点,供大家分享。下面就由我分别介绍:

    生产环境和问题阐述:

    linux+nginx+php+mysql+thinkphp

    一、在SHELL环境下,通过curl命令无法获取远程数据,出现error:couldn't connect to host找不到主机的解决方案。

    iptables -A OUTPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

    意思是,所有外出的请求目标的80端口授权。

    之后curl 远程url就肯定能成功。

    二、php操作Curl(http,https)无法获取远程数据解决方案

    iptables -A OUTPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

    如果在SHELL下curl是正常的,在php curl也必然正常,但是请求https SSH就未必正常,因为需要开启OUTPUT SSH端口443。

    三、最后贴上我的防火墙规则

    *filter
    :INPUT DROP [183:50261]
    :FORWARD DROP [0:0]
    :OUTPUT DROP [4:208]
    -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 8000 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 9123 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 843 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 5900:5903 -j ACCEPT
    -A INPUT -m state --state INVALID -j DROP
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
    -A INPUT -p udp -m udp --sport 53 -j ACCEPT
    -A INPUT -p udp -m udp --dport 53 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
    #-A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
    #-A FORWARD -i eth1 -o eh0 -j ACCEPT
    #-A FORWARD -f -m limit --limit 100/sec --limit-burst 100 -j ACCEPT
    #-A FORWARD -p icmp -m limit --limit 1/sec --limit-burst 10 -j ACCEPT
    #-A FORWARD -m state --state INVALID -j DROP
    -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
    -A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
    -A OUTPUT -p icmp -j ACCEPT
    -A OUTPUT -o lo -j ACCEPT
    -A OUTPUT -p tcp -m tcp --sport 8000 -j ACCEPT
    -A OUTPUT -p tcp -m tcp --sport 3306 -j ACCEPT
    -A OUTPUT -p tcp -m tcp --sport 9123 -j ACCEPT
    -A OUTPUT -p tcp -m tcp --sport 843 -j ACCEPT
    -A OUTPUT -p tcp -m tcp --sport 5900:5903 -j ACCEPT
    -A OUTPUT -m state --state INVALID -j DROP
    -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
    -A OUTPUT -p udp -m udp --sport 53 -j ACCEPT
    -A OUTPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
    -A OUTPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
    COMMIT
    # Completed on Tue Jun 10 09:20:48 2014
    


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    python面试
    Python 3.x--使用re模块,实现计算器运算实例
    Python 3.x--模块导入
    Python 3.x--序列化及反序列化
    Python 3.x--装饰器
    Python 3.x--函数的参数问题
    Python 3.x--文件seek、tell的用法
    Python 3.x--字典循环
    Python3.x--文件读写与list
    Python简介
  • 原文地址:https://www.cnblogs.com/stevin-john/p/4768995.html
Copyright © 2011-2022 走看看