温馨提示×

centos iptables如何管理链和表

小樊
47
2025-07-20 14:53:37
栏目: 智能运维

在 CentOS 系统中,iptables 是一个用于配置 Linux 内核防火墙(netfilter)规则的工具。它允许系统管理员定义表(tables)、链(chains)和规则(rules)来控制网络数据包的流向和处理。以下是如何使用 iptables 管理链和表的基本指南:

表(Tables)

iptables 包含几种不同的表,每个表包含一组特定的链。主要的表有:

  • filter:默认表,用于控制数据包的访问控制。
  • nat:用于网络地址转换(NAT)。
  • mangle:用于特殊的数据包修改。
  • raw:用于配置免除连接跟踪的规则。

链(Chains)

每个表包含预定义的链,这些链对应于数据包处理的不同点:

  • INPUT:处理进入本机的数据包。
  • FORWARD:处理经过本机转发的数据包。
  • OUTPUT:处理从本机发出的数据包。
  • PREROUTING:用于目标地址转换(DNAT)的规则,在路由决策之前处理数据包。
  • POSTROUTING:用于源地址转换(SNAT)的规则,在路由决策之后处理数据包。

规则(Rules)

规则定义了对特定数据包应该执行的操作,如接受(ACCEPT)、拒绝(DROP)、丢弃(REJECT)等。

基本命令

以下是一些基本的 iptables 命令,用于管理链和表:

  • 查看所有规则:

    sudo iptables -L
    
  • 查看特定表的所有规则:

    sudo iptables -t nat -L
    
  • 查看特定链的所有规则:

    sudo iptables -L INPUT
    
  • 添加规则:

    sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    

    这条命令会在 INPUT 链的末尾添加一条规则,允许所有进入的 TCP 流量到端口 80(通常是 HTTP)。

  • 插入规则到链的顶部:

    sudo iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
    

    这条命令会在 INPUT 链的顶部插入一条规则,允许所有进入的 SSH 流量。

  • 删除规则:

    sudo iptables -D INPUT -p tcp --dport 80 -j ACCEPT
    

    这条命令会删除 INPUT 链中匹配的规则。

  • 清空所有链:

    sudo iptables -F
    
  • 设置默认策略:

    sudo iptables -P INPUT DROP
    

    这条命令会将 INPUT 链的默认策略设置为 DROP,即拒绝所有未明确允许的进入流量。

持久化规则

iptables 规则在系统重启后不会自动保存。要使规则持久化,可以使用 servicesystemctl 命令来停止和启动 iptables 服务,或者使用 iptables-saveiptables-restore 命令来保存和恢复规则。

例如,保存规则到文件:

sudo iptables-save > /etc/sysconfig/iptables

恢复规则:

sudo iptables-restore < /etc/sysconfig/iptables

请注意,CentOS 7 及更高版本默认使用 firewalld 作为防火墙管理工具,而不是传统的 iptables。如果你使用的是 firewalld,则需要使用 firewall-cmd 命令来管理防火墙规则。

0