Linux云服务器防火墙开放80端口后无法访问公网
问题描述
Linux云服务器开启了防火墙并在配置中开放了80端口,但是无法访问公网,关闭防火墙后,可以正常访问网站。
原因分析
出现该问题的原因可能是防火墙规则与网卡接口不在同一区域zone。您可以按照以下步骤查看:
- 执行如下命令,查看防火墙规则指定区域及开放端口。
firewall-cmd --list-all
下图示例中防火墙规则指定区域为public,开放端口为80,网卡接口为eth0。
图1 查看防火墙信息
- 执行如下命令,查看网卡接口所在区域。
firewall-cmd --get-active-zones
下图示例中网卡接口指定区域为external。
图2 查看网卡接口所在区域
- 执行如下命令,查看external区域下是否开放了80端口,具体示例如图3所示。
firewall-cmd --zone=external --list-ports
external区域下暂未开放80端口。
- 执行如下命令,查看public区域下是否开放了80端口,具体示例如图4所示。
firewall-cmd --zone=public --list-ports
public区域下开放了80端口。
由此可知,防火墙规则与网卡接口不在同一区域,导致无法访问网站。
解决方法
方案一
在网卡接口指定区域增加防火墙规则,开放80端口,具体操作如下。
- 执行如下命令,开放80端口。
firewall-cmd --zone=external --add-port=80/tcp --permanent
图5 开放80端口
- 执行如下命令,更新防火墙规则。
firewall-cmd --reload
图6 更新防火墙规则
- 执行如下命令,查看防火墙规则。
firewall-cmd --zone=external --list-ports
图7 查看防火墙规则
方案二
修改网卡接口指定区域,使其与防火墙规则处于同一区域,具体操作如下。
- 执行如下命令,修改网卡接口指定区域。
firewall-cmd --zone=public --change-interface=eht0
图8 修改网卡接口指定区域
- 执行如下命令,查看网卡接口指定区域。
firewall-cmd --get-active-zones
图9 查看网卡接口指定区域