iptables 使用手册

目录

  1. 简介

  2. 基本概念

    • 表(Tables)

    • 链(Chains)

    • 规则(Rules)

  3. 命令语法

  4. 核心命令详解

  5. 常用选项说明

  6. 实际应用示例

  7. 高级技巧与注意事项

  8. 规则持久化


1. 简介

iptables 是 Linux 系统上用于配置网络包过滤规则的核心工具,通过操作内核的 Netfilter 框架实现防火墙、NAT、端口转发等功能。本手册涵盖其语法、命令选项及实际应用场景。


2. 基本概念

表(Tables)

  • filter:默认表,用于包过滤(ACCEPT/DROP)。

  • nat:网络地址转换(如端口转发、SNAT/DNAT)。

  • mangle:修改数据包内容(如 TTL、TOS)。

  • raw:用于连接跟踪(Connection Tracking)前的处理。

链(Chains)

  • 内置链:INPUT(入站)、OUTPUT(出站)、FORWARD(转发)、PREROUTING(路由前)、POSTROUTING(路由后)。

  • 自定义链:用户创建的链,需绑定到内置链生效。

规则(Rules)

  • 由 匹配条件(源IP、目标端口等)和 动作(ACCEPT、DROP、LOG等)组成。

  • 规则按顺序从上到下匹配,匹配成功后停止。


3. 命令语法

iptables [-t 表名] 命令选项 [链名] [规则条件] [动作]

4. 核心命令详解

短选项 长选项 功能描述 示例
-A --append 追加规则到链末尾 iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
-C --check 检查规则是否存在 iptables -C INPUT -s 10.0.0.1 -j DROP
-D --delete 删除匹配的规则或指定序号的规则 iptables -D INPUT 3 (删除INPUT链第3条规则)
-I --insert 插入规则到链的指定位置(默认开头) iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT
-R --replace 替换链中指定序号的规则 iptables -R OUTPUT 1 -d 8.8.8.8 -j REJECT
-L --list 列出链中所有规则 iptables -L -n -v (显示详细信息,禁用域名解析)
-S --list-rules 以规则格式输出(适合保存配置) iptables -S INPUT
-F --flush 清空链或所有链的规则 iptables -F (清空所有链)
-Z --zero 重置计数器 iptables -Z INPUT
-N --new-chain 创建自定义链 iptables -N CUSTOM_CHAIN
-X --delete-chain 删除自定义链(需先清空规则) iptables -X CUSTOM_CHAIN
-P --policy 设置链的默认策略 iptables -P INPUT DROP
-E --rename-chain 重命名链 iptables -E OLD_CHAIN NEW_CHAIN

5. 常用选项说明

选项 描述
-p, --protocol 指定协议(tcp/udp/icmp等),可加!取反,如 -p ! udp
-s, --source 源IP地址或网段,如 -s 192.168.1.1 或 -s 10.0.0.0/24
-d, --destination 目标IP地址或网段
-i, --in-interface 入站网卡(如 eth0),+表示通配符(如 -i eth+
-o, --out-interface 出站网卡
--dport, --sport 目标端口/源端口(需配合 -m tcp 或 -m udp
-j, --jump 跳转到目标动作(ACCEPT/DROP/REJECT)或自定义链
-m, --match 扩展匹配模块(如 -m state --state ESTABLISHED
--state 匹配连接状态(NEW/ESTABLISHED/RELATED/INVALID)
-n, --numeric 显示IP和端口号(禁用DNS解析)
-v, --verbose 显示详细信息(计数器、接口等)
--line-numbers 显示规则行号(配合 -L 使用)

6. 实际应用示例

1. 允许SSH访问

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

2. 禁止特定IP

iptables -A INPUT -s 10.0.0.5 -j DROP

3. 允许已建立的连接

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

4. 端口转发(NAT)

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080

5. 记录被拒绝的包

iptables -A INPUT -p tcp --dport 23 -j LOG --log-prefix "Telnet Attempt: "
iptables -A INPUT -p tcp --dport 23 -j DROP

7. 高级技巧与注意事项

  1. 规则顺序:规则按从上到下的顺序匹配,使用 -I 插入到关键位置。

  2. 连接跟踪:使用 -m state 模块优化性能。

  3. 避免锁定自己:在设置默认策略为 DROP 前,确保开放SSH等管理端口。

  4. 多网卡配置:明确指定 -i 或 -o 接口。

  5. 日志管理:通过 -j LOG 记录流量,配合 ulogd 工具分析。


8. 规则持久化

临时规则重启后失效,需保存并恢复:

# 保存规则
iptables-save > /etc/iptables/rules.v4

# 恢复规则
iptables-restore < /etc/iptables/rules.v4

# 使用系统工具(如Debian的iptables-persistent)
apt install iptables-persistent
netfilter-persistent save
 
 

你可能感兴趣的:(运维,linux,网络安全,linux,运维)