CentOS iptables 使用详解
CentOS 7 默认的防火墙是 firewalld,但在某些情况下,可能需要使用 iptables 来替代 firewalld,本文将详细介绍如何在 CentOS 系统中安装、配置和管理 iptables。
一、简介
iptables 是 Linux 系统中的一个用户空间工具,用于定义和操作内核中的网络包过滤规则,它通过设置不同的链(如 INPUT、FORWARD、OUTPUT)来实现对进出流量的控制,每个链可以包含多个规则,每条规则定义了匹配某些条件的数据包应如何处理(ACCEPT、DROP、REDIRECT 等)。
二、安装与启动 iptables
1、检查是否安装了 iptables:
service iptables status
如果未安装,可以使用以下命令进行安装:
yum install y iptables yum update iptables
2、安装 iptablesservices:
yum install y iptablesservices
3、关闭 firewalld:
systemctl stop firewalld systemctl disable firewalld
4、启动 iptables:
systemctl start iptables systemctl enable iptables
5、查看 iptables 状态:
systemctl status iptables
三、查看与备份 iptables 规则
1、查看当前规则:
iptables L n
参数说明:
L
:列出规则
n
:以数字形式显示 IP 地址和端口号
2、备份现有规则:
cp a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
四、添加与修改规则
1、放行指定端口(例如放行 HTTP 的 80 端口):
iptables I INPUT p tcp dport 80 m state state NEW j ACCEPT
参数说明:
I
:插入规则到链的开头
p tcp
:匹配 TCP 协议
dport 80
:目标端口为 80
m state state NEW
:匹配新连接的状态
j ACCEPT
:接受数据包
2、查看规则是否生效:
iptables L
3、保存添加的规则:
iptablessave > /etc/sysconfig/iptables
4、设置开机自启动:
systemctl enable iptables.service
五、删除规则
1、删除指定规则:
iptables D INPUT p tcp dport 80 m state state NEW j ACCEPT
参数说明:
D
:删除规则
六、高级配置示例
1、允许特定 IP 访问 SSH(例如只允许 192.168.0.100 访问 SSH):
iptables D INPUT p tcp dport 22 j ACCEPT iptables A INPUT s 192.168.0.100 p tcp dport 22 j ACCEPT
2、保存并重启 iptables:
service iptables save systemctl restart iptables
七、常见问题及解答(FAQs)
1、如何更改 iptables 配置后不生效?
确保在修改规则后执行iptablessave > /etc/sysconfig/iptables
保存规则,并且使用systemctl restart iptables
重启服务使配置生效。
2、如何永久关闭防火墙?
可以通过执行以下命令永久关闭防火墙:
systemctl stop firewalld systemctl disable firewalld chkconfig level 35 iptables off /etc/init.d/iptables stop iptables P INPUT DROP