本人在作百度帳戶第三方登陸接口,獲取百度token,利用php操做curl post方式發送請求token,出現couldn't connect to host錯誤。通過調試測試,最後終於成功。回頭寫了博客總結幾點,供你們分享。下面就由我分別介紹:php
生產環境和問題闡述:mysql
linux+nginx+php+mysql+thinkphplinux
1、在SHELL環境下,經過curl命令沒法獲取遠程數據,出現error:couldn't connect to host找不到主機的解決方案。nginx
iptables -A OUTPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
sql
意思是,全部外出的請求目標的80端口受權。thinkphp
以後curl 遠程url就確定能成功。curl
2、php操做Curl(http,https)沒法獲取遠程數據解決方案tcp
iptables -A OUTPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPTpost
若是在SHELL下curl是正常的,在php curl也必然正常,可是請求https SSH就未必正常,由於須要開啓OUTPUT SSH端口443。
測試
3、最後貼上個人防火牆規則
*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