在Linux系统中,防火墙的管理通常依赖于不同的发行版和防火墙工具,常见的有iptables(传统工具)、firewalld(CentOS/RHEL 7+默认)以及nftables(较新版本),要使用命令进入防火墙配置模式,需根据具体工具和需求选择对应操作,以下将分场景详细说明各类防火墙的进入方式及基础配置逻辑。

基于iptables的防火墙进入与配置
iptables是Linux内核集成的包过滤工具,通过规则链控制数据流,进入配置模式实质是执行iptables命令进行规则管理,无需“进入”特定界面,而是直接在终端输入命令。
查看当前规则
sudo iptables -L -n -v
参数说明:-L列出规则,-n以数字形式显示地址和端口(避免DNS解析延迟),-v显示详细信息(如数据包计数、网络接口)。
配置规则示例
允许SSH连接(默认端口22):
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
-A表示添加规则到链尾,-p tcp指定协议,--dport 22目标端口,-j ACCEPT允许通过。
(图片来源网络,侵删)拒绝特定IP访问:
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
-s指定源IP,-j DROP直接丢弃数据包。
保存规则(防止重启失效)
不同发行版保存方式不同:
- CentOS 6/7:使用
iptables-service服务sudo service iptables save # CentOS 6 sudo /usr/libexec/iptables/iptables.init save # CentOS 7
- Debian/Ubuntu:安装
iptables-persistent后自动保存sudo apt install iptables-persistent sudo netfilter-persistent save
基于firewalld的防火墙进入与配置
firewalld采用区域(Zone)概念动态管理规则,支持运行时配置和永久配置分离,进入配置模式主要通过firewall-cmd命令实现。

检查服务状态
sudo firewall-cmd --state
若返回running,则服务已启动。
查看当前区域及默认区域
sudo firewall-cmd --get-active-zones sudo firewall-cmd --get-default-zone
动态添加规则(临时生效,重启后失效)
- 开放HTTP服务(端口80):
sudo firewall-cmd --add-service=http --zone=public
- 开放自定义端口:
sudo firewall-cmd --add-port=8080/tcp --zone=public
永久保存规则
添加规则时使用--permanent参数,或单独执行以下命令:
sudo firewall-cmd --runtime-to-permanent
交互式配置(可选)
通过firewall-config图形工具(需安装)进入可视化界面:
sudo firewall-config &
基于nftables的防火墙进入与配置
nftables是iptables的替代品,语法更简洁,在Ubuntu 20.04+、CentOS 8+等新版本中默认使用。
查看当前规则集
sudo nft list ruleset
添加基础规则
- 创建链表:
sudo nft add table inet filter sudo nft add chain inet filter input { type filter hook input priority 0 \; } - 允许SSH流量:
sudo nft add rule inet filter input tcp dport 22 ct state new,established accept
保存规则
nftables规则默认保存在/etc/nftables.conf,修改后需手动加载:
sudo nft -f /etc/nftables.conf
防火墙规则管理通用操作
| 操作 | iptables命令 | firewalld命令 | nftables命令 |
|---|---|---|---|
| 查看所有规则 | sudo iptables -L | sudo firewall-cmd --list-all | sudo nft list ruleset |
| 清空规则 | sudo iptables -F | sudo firewall-cmd --reload | sudo nft flush ruleset |
| 禁用防火墙 | sudo systemctl stop iptables | sudo systemctl stop firewalld | sudo systemctl stop nftables |
| 启用防火墙开机自启 | sudo systemctl enable iptables | sudo systemctl enable firewalld | sudo systemctl enable nftables |
注意事项
- 规则顺序:防火墙按规则顺序匹配,一旦匹配即停止,因此规则顺序至关重要(如拒绝规则应放在最后)。
- 远程管理安全:修改防火墙规则时,建议先通过本地终端操作,避免因SSH端口被误封导致远程连接断开。
- 日志记录:通过
-j LOG记录被拦截的包(如sudo iptables -A INPUT -j LOG --log-prefix "DROP: "),便于排查问题。
相关问答FAQs
Q1: 修改防火墙规则后如何立即生效?
A1: 不同工具生效方式不同:
- iptables:临时规则立即生效,永久规则需执行
sudo service iptables restart(CentOS)或sudo netfilter-persistent reload(Ubuntu)。 - firewalld:临时规则使用
sudo firewall-cmd --reload重新加载,永久规则需先添加--permanent参数再重载。 - nftables:执行
sudo nft -f /etc/nftables.conf重新加载配置文件。
Q2: 如何确认防火墙是否成功拦截了特定连接?
A2: 可通过以下方式验证:
- 日志检查:
- iptables:查看
/var/log/messages或/var/log/kern.log(需先配置-j LOG)。 - firewalld:执行
sudo journalctl -u firewalld查看服务日志。 - nftables:使用
sudo dmesg | grep nft查看内核日志。
- iptables:查看
- 测试连接:在客户端使用
telnet或nc测试目标端口,若连接失败且无防火墙放行规则,则说明拦截成功。telnet 192.168.1.10 80。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/387162.html<
