在Linux中,iptables
是一个强大的命令行工具,用于配置和管理Netfilter包过滤系统,它是Linux内核中实现网络数据包处理功能的一部分。以下是iptables
命令及其相关参数和选项的详细介绍:
1. 基本命令结构
iptables [-t 表名] COMMAND 链名 [匹配条件] [-j 目标动作]
- -t: 指定要操作的表,默认是
filter
表,其他可能的表有nat
、mangle
、raw
。 - COMMAND: 指定对规则的操作,如
-A
(追加)、-D
(删除)、-I
(插入)、-R
(替换)等。 - 链名: 规则链,如
INPUT
、OUTPUT
、FORWARD
,决定了规则应用的网络方向。 - 匹配条件: 定义数据包需要满足的条件,如
-p tcp
指定TCP协议,-s IP
指定来源IP地址,-d IP
指定目标IP地址等。 - -j 目标动作: 如
ACCEPT
(允许)、DROP
(丢弃)、REJECT
(拒绝)等,定义了数据包匹配规则后的处理方式。
2. 常用命令
- 查看规则
iptables -L [链名]
:列出指定链或所有链的规则。iptables -S
:以规则序列的形式显示所有规则。iptables -nvL
:以数值和详细模式列出规则,包括包计数和字节计数。iptables -L --line-numbers
:列出规则时包含行号,便于定位和操作。
- 清空规则
iptables -F [链名]
:清空指定链或所有链的规则。iptables -X
:删除用户自定义的空链。
- 添加/删除规则
iptables -A 链名 [匹配条件] -j 动作
:在链的末尾追加一条规则。iptables -I 链名 [规则编号] [匹配条件] -j 动作
:在链的指定位置插入一条规则。iptables -D 链名 规则编号
:按规则编号删除一条规则。
- 更改规则状态
iptables -R 链名 规则编号 [匹配条件] -j 动作
:替换指定编号的规则。
- 保存与恢复规则
iptables-save > 文件名
:将当前规则保存到文件。iptables-restore < 文件名
:从文件恢复规则到iptables。
- NAT相关的命令
- 在
nat
表中操作,如端口转发、DNAT(目的地址转换)和SNAT(源地址转换):
-j MASQUERADE
:用于提供动态SNAT,常见于出口网关。-j DNAT --to-destination 目标IP[:端口]
:改变数据包的目的地址(和端口)。-j SNAT --to-source 源IP[:端口]
:改变数据包的源地址(和端口)。
3. 其他命令和参数
-v, --verbose
:增加输出信息的详细程度。-n, --numeric
:以数字形式显示IP地址和端口号,不进行域名解析。-x, --exact
:扩展数字计数,显示精确的字节数和数据包数。-Z, --zero
:清零指定链的包和字节计数器。
综上所述,这些命令和参数的组合使得iptables
成为一个灵活而强大的工具,可用于实现复杂的网络策略和防火墙规则。