iptables命令详解

iptables 是 Linux 系统中用于配置防火墙规则的命令行工具,它是 netfilter 框架的一部分,用于控制进出系统的网络流量。下面是一些常用的 iptables 命令及其解释:

基本命令

  • iptables -L:列出所有规则。

  • iptables -F:清空所有规则。

  • iptables -P:设置默认策略。

  • iptables -A:添加规则到指定链的末尾。

  • iptables -D:从指定链中删除规则。

  • iptables -I:在指定链的开头插入规则。

规则参数

  • -p protocol:指定协议,如 tcpudpicmp

  • --dport port-number:指定目标端口。

  • --sport port-number:指定源端口。

  • -s source-ip:指定源 IP 地址或子网。

  • -d destination-ip:指定目标 IP 地址。

  • -j target-action:指定数据包匹配规则时执行的动作,如 ACCEPTDROPREJECT 等。

示例规则

  • 允许来自特定 IP 地址的流量进入:
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
  • 允许 HTTP(80 端口)流量进入:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  • 拒绝所有来自 IP 地址 203.0.113.51 的连接:
iptables -A INPUT -s 203.0.113.51 -j DROP

规则链

  • INPUT:处理输入数据包。

  • OUTPUT:处理输出数据包。

  • FORWARD:处理转发数据包。

  • PREROUTING:用于目标地址转换(DNAT)。

  • POSTROUTING:用于源地址转换(SNAT)。

  • filter:基本数据包过滤的默认表。

  • nat:处理网络地址转换(NAT)。

  • mangle:改变数据包。

  • raw:在连接跟踪之前配置数据包。

额外选项

  • -n:以数字形式显示 IP 地址和端口号。

  • -v:详细显示规则信息。

  • -t table-name:指定操作特定的表。

  • -N chain-name:创建新的链。

  • -X chain-name:删除链。

  • -E old-chain-name new-chain-name:重命名链。

使用 iptables 时,请确保你了解你正在实施的规则,因为错误的配置可能会导致网络中断或安全问题。

Top