ip访问linux机器显示被拒绝

《ip访问linux机器显示被拒绝》

背景

在浏览器输入ip地址访问我的linux机器(CentOS 7)显示被拒绝,第一次猜想就是网络防火墙的问题,但是解决了半天就是不好使。特此记录下(耐心看哈)。

解决过程

第一种情况:如果是阿里云的机器

1.确认实例所在安全组里已经添加如下安全组规则:

《ip访问linux机器显示被拒绝》

2.查看 nginx 服务是否已经开启:运行命令 systemctl status nginx。如果返回以下结果,说明 nginx 已经启动。如果未开启,运行命令 systemctl start nginx

3.查看端口在实例中是否正常被监听:运行命令 netstat -an | grep 80。如果返回以下结果,表明 TCP 80 端口正在被正常监听

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
  1. 查看网络防火墙是否放行 TCP 80 端口:运行命令 firewall-cmd --add-port=80/tcp --permanent。返回结果为 success 即表示已经放行 TCP 80 端口。

好了现在用http://IP地址访问下试试。如果还不行请继续看下面的情况

第二种情况:常规机器

重复第一种的2、3、4步骤,若果还不行就有可能没有把80端口添加到zone

服务器上可能会有多张网卡,每张网卡可能有多个网口。firewalld 最细可以控制每个网口的进出流量。所以配置前需要知道要控制的网口的名字,用ifconfig命令获取

一般买来的云服务器,只有一张网卡一个网口,这种情况下ifconfig会列出两个网口,比如这里是eth0lolo是本地回路,是用于调试的,不是真正的网口。

如果发现机器上除了lo网口,还是有多个网口,说明服务器上有多张网卡或多个网口。这时候要自己判断开操作哪个网口。
知道了要操作哪个网口。还需要了解下下firewalldzone的概念。

关于zone简单介绍下概念:firewalld将服务器网络环境划分为几个zone,一般是9个,如下:

# firewall-cmd --get-zones
block dmz drop external home internal public trusted work

一个网口必须处在某一个zone之内,zone有一套流量进出的规则,网口的进出流量就得遵循这套规则。如果把网口从一个zone移动到另一个zone后,该网口的流量进出规则就会改变。

关于zone的详细概念请看后续整理的文章 linux防火墙管理Firewall

  1. 先确保防火墙是运行着的:
# firewall-cmd --state
running

如果是running则表示已开启,如果未开启的话则需要开启

# service firewalld start
Redirecting to /bin/systemctl start  firewalld.service

2.给public这个zone添加规则:允许80端口的流量通过

#firewall-cmd --zone=public --add-port=80/tcp  --permanent
success

permanent表示永久生效,否则机器重启则会失效。设置完后我们reload下来让它生效。

#firewall-cmd --reload
success

然后查看下是生效

#firewall-cmd --zone=public --query-port=80/tcp
yes

好了,访问下http://IP地址是否生效。

总结

这种状况一般都是网络防火墙的安全策略,首先需要排查是否防火墙进行了端口的放行,然后看下端口是否被添加到相应的网口所在的zone中。

    原文作者:不得不爱XIN
    原文地址: https://www.jianshu.com/p/9792e36d5a95
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞