防火墙 iptables
iptables 是 Linux 系统中极其强大且经典的防火墙工具。它实际上是一个用户态的命令行工具,用于配置 Linux 内核中的 Netfilter 数据包过滤框架。
一、 核心概念:四表五链
- 五个规则链 (Chains)
链对应数据包在内核中流经的不同阶段:
- INPUT:处理进入本机的数据包。
- OUTPUT:处理从本机发出的数据包。
- FORWARD:处理经过本机转发的数据包(本机作为路由器时)。
- PREROUTING:数据包进入路由表之前(常用于目的地址转换 DNAT)。
- POSTROUTING:数据包离开路由表之后(常用于源地址转换 SNAT/伪装)。
- 四个表 (Tables)
表决定了规则的功能:
- filter 表(默认):用于包过滤(放行或阻断)。包含 INPUT, FORWARD, OUTPUT。[1][2][3][10]
- nat 表:用于网络地址转换(修改源/目IP或端口)。包含 PREROUTING, OUTPUT, POSTROUTING。[1][2][10]
- mangle 表:用于修改数据包的服务类型、TTL、标记等。[2]
- raw 表:用于决定数据包是否被状态跟踪机制处理,提高性能。[2]
二、 基本语法
1 | iptables [-t 表名] 命令选项 [链名] [匹配条件] [-j 目标动作] |
常用命令选项:
- -L:列出规则。
- -A:在链的末尾追加(Append)规则。
- -I:在链的开头插入(Insert)规则。
- -D:删除(Delete)规则。
- -F:清空(Flush)规则。
- -P:设置默认策略(Policy)。
- -n:以数字形式显示(不解析域名/端口名,速度快)。
常见目标动作 (-j):
- ACCEPT:允许通过。
- DROP:直接丢弃,不给回应(对方会超时)。
- REJECT:拒绝,并给对方回一个错误信息。
- SNAT/DNAT:地址转换。
- LOG:记录日志。
三、 常用实战案例
- 查看现有规则
1 | iptables -L -n -v --line-numbers |
- 基础安全设置(白名单思路)
建议先放行 SSH,否则可能导致自己无法连接服务器。
1 | # 1. 允许回环口(127.0.0.1)通信 |
- 封禁/开放指定 IP 或端口
1 | # 屏蔽 IP 为 192.168.1.100 的访问 |
- 端口转发 (NAT 示例)
1 | #将访问本机 8080 端口的流量转发到本地 80 端口: |
四、 规则的持久化
iptables 的规则在重启后会失效。要永久保存:
1 | # CentOS/RHEL: |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 懒猫!
评论







