linux,防火墙,firewall,常用命令
文章目录
- 1. 查看防火墙状态
- 2. 查看当前开放的端口和服务
- 查看所有开放的端口
- 查看所有允许的服务
- 查看所有区域的详细信息
- 3. 开放指定端口
- 开放端口(临时生效)
- 开放端口(永久生效)
- 开放指定端口范围
- 4. 删除指定端口
- 删除端口(临时生效)
- 删除端口(永久生效)
- 5. 开放指定服务
- 开放服务(永久生效)
- 删除服务
- 查看所有可用服务
- 6. 其他常用命令
- 查看防火墙帮助信息
- 查看防火墙版本
- 查看所有可用的区域
- 设置默认区域
- 查看默认区域的设置
- 7. 示例操作流程
- 8. 注意事项
1. 查看防火墙状态
要检查 firewalld
是否正在运行,可以使用以下命令:
sudo firewall-cmd --state
• 输出示例 :
• running
:防火墙正在运行。
• not running
:防火墙未运行。
2. 查看当前开放的端口和服务
查看所有开放的端口
sudo firewall-cmd --list-ports
• 示例输出 :
80/tcp 443/tcp 6379/tcp
查看所有允许的服务
sudo firewall-cmd --list-services
• 示例输出 :
ssh http https mysql
查看所有区域的详细信息
如果你想查看特定区域的详细信息(默认区域通常是 public
),可以使用:
sudo firewall-cmd --get-active-zones
这将显示当前活动的区域及其对应的接口和源地址。例如:
public
interfaces: eth0
sources:
然后,查看特定区域的详细信息:
sudo firewall-cmd --zone=public --list-all
• 示例输出 :
public (active)
target: default
interfaces: eth0
sources:
services: ssh http https
ports: 80/tcp 443/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
3. 开放指定端口
开放端口(临时生效)
如果你希望开放某个端口(例如 6379/tcp
),但不希望重启防火墙,可以使用 --add-port
选项:
sudo firewall-cmd --add-port=6379/tcp
• 说明 :此设置在防火墙重启后会失效。
开放端口(永久生效)
为了使端口开放设置在防火墙重启后依然有效,需要添加 --permanent
选项:
sudo firewall-cmd --permanent --add-port=6379/tcp
然后,重新加载防火墙配置以应用更改:
sudo firewall-cmd --reload
开放指定端口范围
如果你需要开放一个端口范围,可以使用 CIDR 表示法。例如,开放 5000
到 5100
的端口:
sudo firewall-cmd --permanent --add-port=5000-5100/tcp
sudo firewall-cmd --reload
4. 删除指定端口
删除端口(临时生效)
如果你希望临时删除某个端口(例如 6379/tcp
),可以使用 --remove-port
选项:
sudo firewall-cmd --remove-port=6379/tcp
• 说明 :此设置在防火墙重启后会恢复,除非同时进行了永久删除。
删除端口(永久生效)
要永久删除某个端口,需要添加 --permanent
选项:
sudo firewall-cmd --permanent --remove-port=6379/tcp
然后,重新加载防火墙配置以应用更改:
sudo firewall-cmd --reload
5. 开放指定服务
除了直接开放端口,firewalld
还支持通过服务名称来管理端口。例如,开放 ssh
服务:
开放服务(永久生效)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
删除服务
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload
查看所有可用服务
sudo firewall-cmd --get-services
• 示例输出 :
ssh http https ftp mysql redis ...
6. 其他常用命令
查看防火墙帮助信息
sudo firewall-cmd --help
查看防火墙版本
sudo firewall-cmd --version
查看所有可用的区域
sudo firewall-cmd --get-zones
设置默认区域
将默认区域设置为 public
(通常默认就是 public
):
sudo firewall-cmd --set-default-zone=public
查看默认区域的设置
sudo firewall-cmd --get-default-zone
7. 示例操作流程
假设你想开放 Redis 的默认端口 6379/tcp
,并确保在防火墙重启后依然有效,可以按照以下步骤操作:
-
查看当前防火墙状态
sudo firewall-cmd --state
-
查看当前开放的端口
sudo firewall-cmd --list-ports
-
开放端口 6379/tcp(永久生效)
sudo firewall-cmd --permanent --add-port=6379/tcp
-
重新加载防火墙配置以应用更改
sudo firewall-cmd --reload
-
验证端口是否已开放
sudo firewall-cmd --list-ports
你应该能在输出中看到
6379/tcp
。
8. 注意事项
• 确保命令以 sudo
开头 :大多数 firewall-cmd
操作需要超级用户权限。
• 区分临时和永久设置 :仅使用 --add-port
或 --add-service
而不加 --permanent
的更改在防火墙重启后会丢失。建议在确认配置正确后,使用 --permanent
并重新加载配置。
• 检查服务名称 :如果使用服务名称开放端口,确保服务名称正确。例如,Redis 的服务名称通常是 redis
,但需要确认你的系统中是否已定义该服务。
• 安全性考虑 :仅开放必要的端口,并限制访问来源,以减少潜在的安全风险。例如,可以指定允许的 IP 地址或子网访问特定端口。