我尝试访问curl
流行的网站,例如curl google.com
或curl google.com:80
,但总是出现超时错误。
执行的一些故障排除步骤:
- 能够
curl localhost
响应 - 能够
ping google.com
响应 - 尝试将 DNS 更改为 google DNS 但无济于事
- 尝试过
wget
,它也不适用于外部网站
问题:
- 我可以知道正在使用的默认端口是什么吗
curl
? - 这与防火墙阻止有关吗?据我所知,我正在使用的服务器开放了 80 端口。
- 我还能做什么来进一步排除故障?
答案1
如果这是一个托管网络服务器,我会怀疑它是以经典网络服务器方式配置的。这意味着它允许端口 80 上的传入连接,但为了安全起见,他们可能不允许端口 80 上的传出连接。我猜这就是问题所在。 curl 和 wget 通常开箱即用,没有任何问题。 curl 根据给定的 URI 选择端口(http 为 80、https 443、ftp 21 等);当您使用时没有给出协议时,它将使用 80。 要解决此问题,只需禁用您的防火墙一秒钟(或者如果您担心它会关闭几秒钟,请编辑设置)。
更新:
我想知道是否有一种简单的方法来确认端口 80(传出)被阻止?
我想说你已经这样做了。 wget 特别难搞乱。如果它不起作用,我会说这是一个安全的选择。更好的方法是查看您的防火墙设置并确认情况确实如此。
启用端口 80(传出)是否需要注意任何安全问题?
哦是的。这并不是说这样做会降低你的安全感;而是因为这样做会降低你的安全感。就是说,通过打开这个,这意味着如果有人确实有能力说,向您的网站数据库中注入一点 JavaScript 代码,他们就可以利用您的网站进行犯罪,而这将很难追溯到他们(因为所有迹象都表明)攻击者是谁,表明您是罪魁祸首)。唯一能真正为你洗清罪名的是你自己的日志,这些日志并不是很有说服力,因为你一开始就向法庭提供了这些日志。
我认为我无权禁用防火墙,请告知需要编辑哪些设置?是否将防火墙配置为允许80端口出站?
也许你是对的。我无法真正告诉您这个问题的答案,因为您显然正在使用某种托管解决方案。 iptables 是最流行的 Linux 防火墙的名称。如果安装了它,您应该会在 /etc/init.d 中看到它列出。如果没有,您需要访问您的网络托管服务商的网站并了解如何管理它。