iptables 命令详解
iptables 是 Linux 系统内核级防火墙工具,用于配置、维护和检查 IPv4 数据包过滤规则(IPv6 使用 ip6tables)。以下是核心用法:
一、基本概念
-
表(Tables)
filter:默认表,用于数据包过滤(允许/拒绝)。nat:网络地址转换(如端口转发)。mangle:修改数据包头部(如 TTL)。raw:连接跟踪前处理数据包。
-
链(Chains)
INPUT:处理进入本机的数据包。OUTPUT:处理本机发出的数据包。FORWARD:处理经本机转发的数据包。PREROUTING/POSTROUTING:用于nat表(路由前/后处理)。
二、命令语法
iptables [-t 表名] 命令选项 [链名] [规则匹配] -j 目标动作
-
-t 表名:指定表(默认filter)。 -
命令选项:
-A:追加规则到链尾。-I:插入规则到链首(可指定位置)。-D:删除规则。-L:列出规则。-F:清空链中所有规则。-P:设置链的默认策略(如ACCEPT/DROP)。
-
规则匹配:
-p:协议(tcp,udp,icmp)。-s:源 IP 地址。-d:目标 IP 地址。--dport:目标端口(需配合-p tcp/udp)。-i:输入网卡(如eth0)。
-
目标动作(
-j):ACCEPT:允许数据包。DROP:丢弃数据包(无响应)。REJECT:拒绝并返回错误。SNAT:源地址转换(用于nat表)。DNAT:目标地址转换(用于nat表)。
三、常用示例
-
允许 SSH 访问(端口 22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT -
拒绝来自特定 IP 的访问
iptables -A INPUT -s 192.168.1.100 -j DROP -
端口转发(将 8080 转发到 80)
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80 -
允许 ping 请求
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT -
设置默认策略
iptables -P INPUT DROP # 默认丢弃所有输入 iptables -P FORWARD DROP # 默认丢弃所有转发
四、规则管理
-
查看规则
iptables -L -n -v # -n 禁用域名解析,-v 显示详细信息 -
清空所有规则
iptables -F # 清空 filter 表 iptables -t nat -F # 清空 nat 表 -
保存规则(重启后生效)
iptables-save > /etc/iptables/rules.v4 # Debian/Ubuntu service iptables save # CentOS/RHEL
五、注意事项
- 规则顺序:iptables 按从上到下顺序匹配规则,首条匹配后停止。
- 连接跟踪:使用
-m state --state ESTABLISHED,RELATED允许已建立的连接。 - 测试前勿锁死:远程操作时,先允许 SSH 端口,再设置
DROP策略,避免断开连接。
提示:复杂场景建议结合
iptables-persistent或firewalld管理规则。
1354

被折叠的 条评论
为什么被折叠?



