CentOS 7 使用 firewalld 开启端口
在 CentOS 7 中,防火墙默认使用 firewalld 进行管理,相较于 CentOS 6 的 iptables,firewalld 支持动态配置,无需重启服务即可生效。以下是查看防火墙状态、端口列表以及开启端口的详细步骤。
1. 查看防火墙状态
检查 firewalld 服务是否正在运行。
firewall-cmd --state输出说明:
running:防火墙服务正在运行。not running:防火墙服务未运行,需先启动服务:sudo systemctl start firewalld
2. 查看当前端口列表
查询当前防火墙规则中的开放端口和相关配置。
firewall-cmd --list-all输出示例:
public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh dhcpv6-client ports: 80/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:说明:
- 显示当前区域(默认
public)的配置,包括已开放的端口和服务。
- 显示当前区域(默认
3. 开启端口并应用配置
通过以下命令添加端口规则,并确保配置持久化。
3.1 开启单一端口
例如,开启 TCP 协议的 11400 端口:
sudo firewall-cmd --zone=public --add-port=11400/tcp --permanent参数说明:
--zone=public:指定操作的防火墙区域,默认使用public。--add-port=11400/tcp:指定要开启的端口和协议(tcp或udp)。--permanent:确保规则持久化,重启后依然生效。
3.2 开启端口范围
例如,开启 TCP 协议的 11400 至 11410 端口段:
sudo firewall-cmd --zone=public --add-port=11400-11410/tcp --permanent说明:
- 使用连字符(
-)指定端口范围,适用于需要批量开放连续端口的场景。
- 使用连字符(
3.3 重新加载防火墙配置
使上述配置立即生效:
sudo firewall-cmd --reload说明:
--reload命令会应用所有更改,无需重启firewalld服务。- 若不执行此命令,新增的规则仅在当前会话有效,重启后将丢失。
4. 验证端口是否开启
重新查看端口列表,确认规则已生效:
firewall-cmd --list-all预期输出:
- 包含新增的端口(例如
11400/tcp或11400-11410/tcp)。
- 包含新增的端口(例如
5. 特点与 CentOS 6 的区别
CentOS 7 (
firewalld):- 支持动态配置,执行
firewall-cmd --reload后无需重启服务。 - 使用区域(zone)管理规则,灵活性更高。
- 支持动态配置,执行
CentOS 6 (
iptables):- 修改
/etc/sysconfig/iptables配置文件后,需重启iptables服务(service iptables restart)使规则生效。
- 修改
6. 注意事项
确保
firewalld服务启用:
如果防火墙未运行,需启用并设置为开机自启:sudo systemctl enable firewalld sudo systemctl start firewalld- 权限要求:
所有firewall-cmd命令需使用sudo执行,确保具有管理员权限。 验证端口可用性:
使用telnet或nc测试端口是否可访问,例如:nc -zv localhost 11400- 区域选择:
默认使用public区域,若需操作其他区域,可通过--zone=<zone_name>指定。