背景
在浏览器输入ip地址访问我的linux机器(CentOS 7)
显示被拒绝,第一次猜想就是网络防火墙的问题,但是解决了半天就是不好使。特此记录下(耐心看哈)。
解决过程
第一种情况:如果是阿里云的机器
1.确认实例所在安全组里已经添加如下安全组规则:
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
- 查看网络防火墙是否放行 TCP 80 端口:运行命令
firewall-cmd --add-port=80/tcp --permanent
。返回结果为 success 即表示已经放行 TCP 80 端口。
好了现在用http://IP地址
访问下试试。如果还不行请继续看下面的情况
第二种情况:常规机器
重复第一种的2、3、4
步骤,若果还不行就有可能没有把80端口添加到zone
中
服务器上可能会有多张网卡,每张网卡可能有多个网口。firewalld 最细可以控制每个网口的进出流量。所以配置前需要知道要控制的网口的名字,用ifconfig
命令获取
一般买来的云服务器,只有一张网卡一个网口,这种情况下ifconfig会列出两个网口,比如这里是eth0
和lo
。lo
是本地回路,是用于调试的,不是真正的网口。
如果发现机器上除了lo
网口,还是有多个网口,说明服务器上有多张网卡或多个网口。这时候要自己判断开操作哪个网口。
知道了要操作哪个网口。还需要了解下下firewalld
中zone
的概念。
关于zone
简单介绍下概念:firewalld
将服务器网络环境划分为几个zone
,一般是9个,如下:
# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
一个网口必须处在某一个zone
之内,zone
有一套流量进出的规则,网口的进出流量就得遵循这套规则。如果把网口从一个zone
移动到另一个zone
后,该网口的流量进出规则就会改变。
关于
zone
的详细概念请看后续整理的文章linux防火墙管理Firewall
- 先确保防火墙是运行着的:
# 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
中。
网友评论