本文详细介绍了 CentOS 7 系统下防火墙的配置步骤,通过开放指定端口解决了服务无法连接的常见问题;详细讲解了如何设置 IP 访问权限,包括允许特定 IP 访问或拒绝特定 IP,帮助用户灵活管理网络流量,从而有效提升系统的安全性与稳定性。
在使用 CentOS 7 系统时,很多管理员会遇到“连接不上”的问题,这通常是因为系统默认开启了防火墙(Firewalld),如果你刚配置好 IP 地址,却发现无法通过 SSH、Web 服务或其他端口进行连接,那么问题很可能出在防火墙的设置上。
本文将详细介绍如何排查连接问题,以及如何正确设置防火墙以允许特定 IP 访问。
检查防火墙服务状态
我们需要确认防火墙服务是否正在运行,如果服务未启动,你需要先启动它。

- 查看防火墙状态:
systemctl status firewalld
- 如果显示
active (running),说明防火墙正在工作。 - 如果显示
inactive (dead),请运行systemctl start firewalld启动它。
- 如果显示
如何设置允许特定 IP 访问
默认情况下,CentOS 7 的防火墙是拒绝所有外部连接的,如果你只想允许特定的 IP 地址(例如你本机的固定 IP)访问服务器,而不是允许所有人访问,应该使用“富规则”。
命令格式:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="允许的IP地址" accept'
示例:
假设你希望只允许 168.1.100 这个 IP 访问服务器的 22 端口(SSH):
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'
开放端口
除了限制 IP,你通常还需要开放具体的端口(如 80 用于 HTTP,22 用于 SSH)。
开放单个端口:
firewall-cmd --permanent --add-port=22/tcp
开放端口范围:
firewall-cmd --permanent --add-port=6000-6010/tcp
重载防火墙并验证
配置修改(--permanent)是永久生效的,但不会立即生效,你需要重载防火墙。
-
重载配置:
firewall-cmd --reload
-
查看当前生效的规则:
firewall-cmd --list-all
在输出中检查
services(服务)和ports(端口)以及rich rules(富规则)是否已添加。
常见问题排查
如果你按照上述步骤操作后仍然连接不上,请检查以下几点:
- 确认 IP 配置正确: 使用
ip addr或ifconfig确认网卡配置正确,且 IP 地址没有冲突。 - 检查网络模式: 确保虚拟机(如果是虚拟化环境)的网络模式设置为“NAT”或“桥接”,并且宿主机网络正常。
- 检查 SELinux: 有时 SELinux 会阻止网络连接,你可以暂时关闭它进行测试(不推荐生产环境长期关闭):
setenforce 0
如果关闭 SELinux 后能连接,说明是 SELinux 策略问题,需要调整策略而非直接关闭。
CentOS 7 连接不上通常是因为防火墙拦截了流量,通过 firewall-cmd 命令,你可以精确地设置允许特定 IP 访问,或者开放必要的端口,修改配置后务必执行 --reload 命令才能使更改生效。

