CentOS7使用firewall-cmd打开关闭防火墙与端口

一、centos7版本对防火墙进行加强,不再使用原来的iptables,启用firewalld

1.firewalld的基本使用

启动: systemctl start firewalld
查状态:systemctl status firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed

2.配置firewalld-cmd

查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息: firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic

3.那怎么开启一个端口呢

添加
firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload # 重新载入,更新防火墙规则
firewall-cmd --zone= public --query-port=80/tcp #查看
firewall-cmd --zone= public --remove-port=80/tcp --permanent # 删除

firewall-cmd --list-services
firewall-cmd --get-services
firewall-cmd --add-service=
firewall-cmd --delete-service=
在每次修改端口和服务后/etc/firewalld/zones/public.xml文件就会被修改,所以也可以在文件中之间修改,然后重新加载
使用命令实际也是在修改文件,需要重新加载才能生效。

4.详细使用

firewall-cmd --permanent --zone=public --add-rich-rule=‘rule family=“ipv4” source address=“192.168.0.4/24” service name=“http” accept’ //设置某个ip访问某个服务
firewall-cmd --permanent --zone=public --remove-rich-rule=‘rule family=“ipv4” source address=“192.168.0.4/24” service name=“http” accept’ //删除配置
firewall-cmd --permanent --add-rich-rule ‘rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept’ //设置某个ip访问某个端口
firewall-cmd --permanent --remove-rich-rule ‘rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept’ //删除配置

firewall-cmd --query-masquerade # 检查是否允许伪装IP
firewall-cmd --add-masquerade # 允许防火墙伪装IP
firewall-cmd --remove-masquerade # 禁止防火墙伪装IP

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 # 将80端口的流量转发至8080
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将80端口的流量转发至192.168.0.1
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口

二、centos7以下版本

1.开放80,22,8080 端口

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

2.保存

/etc/rc.d/init.d/iptables save

3.查看打开的端口

/etc/init.d/iptables status

4.关闭防火墙

1) 永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop

<think>好的,我现在需要帮助用户解决在CentOS中通过firewall-cmd添加了8443端口,但查询时未显示的问题。首先,我需要回忆firewalld的相关知识,以及可能导致这种情况的常见原因。用户已经执行了正确的命令,包括添加端口到public区域并设置为永久,但查询时没有看到,这可能涉及几个方面。 首先,用户可能没有重新加载防火墙规则。因为使用--permanent参数后,必须执行firewall-cmd --reload才能使更改生效。如果没有重新加载,变更不会应用到当前运行的防火墙配置中。这是常见的问题点,需要首先检查。 其次,用户可能是在错误的区域中查询端口。默认情况下,firewall-cmd --list-ports会列出默认区域的开放端口,而默认区域可能不是public。如果用户将端口添加到public区域,但当前默认区域是其他区域(比如dmz或work),则用--list-ports时可能看不到。需要确认用户使用的区域是否正确,或者在命令中指定区域来查询,比如firewall-cmd --zone=public --list-ports。 第三,可能端口被添加到其他区域中。用户可能误将端口添加到不同的区域,而查询时没有指定该区域,导致看不到结果。需要检查所有区域的配置,或者使用firewall-cmd --list-all-zones来查看所有区域的设置。 另外,用户可能没有使用sudo权限运行查询命令。虽然添加端口时用了sudo,但查询时如果省略了sudo,可能无法正确显示结果,尤其是当防火墙配置需要管理员权限时。需要提醒用户检查是否在查询时也使用了sudo。 还有一种可能性是firewalld服务未运行。如果服务未启动,任何配置更改都不会生效,包括添加端口。需要确认firewalld的状态,使用systemctl status firewalld来查看服务是否正在运行。 此外,用户可能输入了错误的端口号或协议。比如,可能错误地添加了udp而不是tcp,或者在查询时拼写错误。需要确认添加和查询时的端口号和协议是否一致。 最后,可能是配置被其他工具覆盖,比如iptables或nftables直接修改了规则,导致firewalld的配置不生效。需要检查是否有其他防火墙管理工具在干扰。 总结下来,可能的解决步骤包括:检查是否重新加载防火墙,确认查询的区域是否正确,确保使用sudo权限,验证firewalld服务状态,检查端口和协议是否正确,以及排除其他工具的干扰。接下来需要将这些思路整理成结构化的回答,帮助用户逐步排查问题。</think>### 问题分析 您在 CentOS 中通过 `firewall-cmd` 添加了 8443 端口,但使用 `firewall-cmd --list-ports` 查询时未显示该端口。这通常由以下原因导致: --- ### 原因及解决方案 #### 1. **未重新加载防火墙规则** - **现象**:使用 `--permanent` 参数修改规则后,必须重新加载防火墙才能使配置生效。 - **验证修复**: ```bash # 重新加载防火墙规则(必须步骤) sudo firewall-cmd --reload # 再次查询开放端口 sudo firewall-cmd --list-ports ``` **注意**:未执行 `--reload` 时,`--list-ports` 仅显示当前临时规则,而非永久规则。 --- #### 2. **区域(Zone)配置错误** - **现象**:端口可能被添加到其他区域(如 `public`),但默认查询的是当前激活区域(可能是 `default` 或其他)。 - **验证修复**: ```bash # 查看当前默认区域 sudo firewall-cmd --get-default-zone # 明确指定查询 public 区域的端口 sudo firewall-cmd --zone=public --list-ports # 若需修改默认区域为 public sudo firewall-cmd --set-default-zone=public ``` --- #### 3. **未使用 `--permanent` 参数查询** - **现象**:`--list-ports` 默认仅显示临时规则,若需查看永久规则需显式指定。 - **验证修复**: ```bash # 查询永久规则中的端口(需先重新加载) sudo firewall-cmd --permanent --list-ports # 查询当前生效的临时+永久规则 sudo firewall-cmd --list-ports ``` --- #### 4. **端口未正确添加** - **现象**:操作过程中命令输入错误(如端口号、协议类型)。 - **验证修复**: ```bash # 检查所有区域的开放端口(包括永久和临时规则) sudo firewall-cmd --list-all-zones | grep 'ports' # 重新添加端口(确保协议为 tcp) sudo firewall-cmd --zone=public --permanent --add-port=8443/tcp sudo firewall-cmd --reload ``` --- #### 5. **防火墙服务未运行** - **现象**:`firewalld` 服务未启动,所有配置均无效。 - **验证修复**: ```bash # 检查防火墙状态 sudo systemctl status firewalld # 启动并启用防火墙 sudo systemctl start firewalld sudo systemctl enable firewalld ``` --- ### 排查流程总结 1. 执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值