iptables
是 Linux 系统中用于配置防火墙规则的命令行工具,它是 netfilter
框架的一部分,用于控制进出系统的网络流量。下面是一些常用的 iptables
命令及其解释:
基本命令
-
iptables -L
:列出所有规则。 -
iptables -F
:清空所有规则。 -
iptables -P
:设置默认策略。 -
iptables -A
:添加规则到指定链的末尾。 -
iptables -D
:从指定链中删除规则。 -
iptables -I
:在指定链的开头插入规则。
规则参数
-
-p protocol
:指定协议,如tcp
、udp
或icmp
。 -
--dport port-number
:指定目标端口。 -
--sport port-number
:指定源端口。 -
-s source-ip
:指定源 IP 地址或子网。 -
-d destination-ip
:指定目标 IP 地址。 -
-j target-action
:指定数据包匹配规则时执行的动作,如ACCEPT
、DROP
、REJECT
等。
示例规则
- 允许来自特定 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
时,请确保你了解你正在实施的规则,因为错误的配置可能会导致网络中断或安全问题。