温馨提示×

iptables在Debian怎么用

小樊
35
2026-07-01 22:28:01
栏目: 智能运维

在 Debian 里使用 iptables 主要分几个层面:查看规则、添加规则、保存规则、Debian 下的注意事项。下面用常见场景一步一步说明。


一、安装 iptables(一般已内置)

sudo apt update
sudo apt install iptables

检查版本:

iptables -V

二、查看当前规则

sudo iptables -L -n -v

说明:

  • -L 列出规则
  • -n 不做 DNS 解析(更快)
  • -v 显示详细信息

查看指定表(例如 nat 表):

sudo iptables -t nat -L -n -v

三、iptables 基本概念(很重要)

iptables 有三要素:

  1. 表(tables)

    • filter(默认,最常用)
    • nat
    • mangle
    • raw
  2. 链(chains)

    • INPUT:进入本机的数据包
    • OUTPUT:从本机出去的数据包
    • FORWARD:转发的数据包
  3. 规则动作

    • ACCEPT:允许
    • DROP:丢弃(不回应)
    • REJECT:拒绝(返回错误)

四、常用规则示例

1️⃣ 允许已建立连接

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

2️⃣ 允许本地回环(lo)

sudo iptables -A INPUT -i lo -j ACCEPT

3️⃣ 允许 SSH(重要!)

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

⚠️ 修改规则前一定要确认 SSH 是允许的,否则可能把自己踢出服务器


4️⃣ 允许 HTTP / HTTPS

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

5️⃣ 设置默认策略(谨慎)

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

意思是:

  • 入站默认拒绝
  • 出站默认允许

6️⃣ 删除某个规则

sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT

或用编号删除(先查看编号):

sudo iptables -L INPUT --line-numbers
sudo iptables -D INPUT 3

五、清空所有规则(慎用)

sudo iptables -F
sudo iptables -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

六、Debian 下非常重要:规则保存与开机生效

✅ Debian 10+(推荐方式)

Debian 默认 不会自动保存 iptables,重启会丢失。

安装保存工具:

sudo apt install iptables-persistent

保存规则:

sudo netfilter-persistent save

规则会保存到:

/etc/iptables/rules.v4
/etc/iptables/rules.v6

开机自动加载 ✅


手动保存(不推荐)

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

恢复:

sudo iptables-restore < /etc/iptables/rules.v4

七、诊断常用命令

sudo iptables -L -n -v
sudo iptables -S

查看命中计数:

sudo iptables -L -v

八、小建议(Debian 用户常见坑)

  • 先加规则,再改默认策略
  • ✅ 远程服务器一定先加 SSH 规则
  • ✅ 用 iptables-persistent 保存规则
  • ❌ 不要直接复制网上规则(上下文很重要)

九、示例:最基础的 Debian 防火墙

sudo iptables -F
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

然后保存:

sudo netfilter-persistent save

如果你愿意,可以告诉我:

  • 本地 Debian 还是 云服务器
  • 桌面 / 服务器 / Docker 主机
  • 是否使用 UFW / nftables

我可以帮你给出一套完全贴合你环境的 iptables 配置

0