温馨提示×

如何学习Debian iptables

小樊
45
2026-07-29 18:43:17
栏目: 智能运维

学习 Debian 下的 iptables 可以按由浅入深、理论 + 实战的方式来,下面给你一套比较系统的学习路线,适合初学者到进阶。


一、前置知识(建议先了解)

在学习 iptables 前,最好先掌握以下内容:

1. Linux 基础

  • 基本命令行操作
  • 用户权限(root / sudo)
  • 网络基础概念:
    • IP 地址、子网掩码
    • 端口(TCP / UDP)
    • 三次握手、四次挥手
    • 路由、网关、NAT

2. Debian 网络相关

ip addr
ip route
ss -tunlp

二、理解 iptables 的核心概念(非常重要)

1. iptables 是什么?

iptablesLinux 内核 netfilter 框架的用户态工具,用于:

  • 防火墙
  • NAT(地址转换)
  • 数据包过滤
  • 流量控制

2. 四表五链(核心模型)

四表(Tables)

表名 作用
filter 默认表,用于过滤
nat 网络地址转换
mangle 修改数据包
raw 连接跟踪

五链(Chains)

链名 说明
PREROUTING 数据包进入前
INPUT 本机接收
FORWARD 转发
OUTPUT 本机发出
POSTROUTING 数据包发出前

关系图(推荐自己画一遍)

数据包 → PREROUTING → INPUT → 本地进程
数据包 → PREROUTING → FORWARD → POSTROUTING
本地进程 → OUTPUT → POSTROUTING

三、Debian 上安装与准备

1. 安装 iptables

sudo apt update
sudo apt install iptables

Debian 10+ 默认可能使用 nftables,但 iptables 命令仍可兼容。

查看当前规则:

iptables -L -n -v

四、常用命令(从简单到实用)

1. 查看规则

iptables -L
iptables -L -n
iptables -L -v

2. 设置默认策略

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

⚠️ 注意:远程服务器先放行 SSH,否则会断连!


3. 允许 SSH(22)

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

4. 允许本地回环

iptables -A INPUT -i lo -j ACCEPT

5. 允许已建立连接

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

五、实战案例(逐步进阶)

案例 1:只允许 SSH 和 HTTP

iptables -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

案例 2:NAT(共享上网)

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

案例 3:防简单攻击

# 限制 ping
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# 防止 SYN Flood
iptables -A INPUT -p tcp --syn -m limit --limit 100/s -j ACCEPT

六、规则保存与开机生效(Debian 重点)

1. 临时规则(重启失效)

iptables 规则默认是内存中的。


2. 永久保存(推荐方式)

安装保存工具

sudo apt install iptables-persistent

保存规则

iptables-save > /etc/iptables/rules.v4

开机自动加载

systemctl enable netfilter-persistent

七、常见错误与排错

1. 把自己关在外面

✅ 解决:

  • 通过控制台
  • 重启服务器
  • 提前测试规则

2. 规则顺序错误

⚠️ iptables 从上到下匹配,第一条命中即停止


八、学习建议与进阶方向

推荐学习顺序

  1. 理解表、链、规则
  2. 会写常见防火墙规则
  3. 会做 NAT
  4. 会排查网络问题
  5. 学习 nftables(未来趋势)

推荐资料

  • man iptables
  • Debian Wiki:iptables
  • 《Linux 防火墙(iptables)》书籍
  • 实验环境:
    • 本地虚拟机
    • Docker
    • 云服务器测试机

如果你愿意,我可以:

  • ✅ 给你 iptables 速查表
  • ✅ 帮你 从零写一个 Debian 防火墙脚本
  • ✅ 对比 iptables vs nftables
  • ✅ 结合 真实服务器场景 设计规则

你可以直接告诉我你的使用场景(家用 / 服务器 / 路由器 / 云主机)。

0