温馨提示×

Debian怎么设置iptables开机启动

小樊
37
2026-07-01 22:38:04
栏目: 智能运维

Debian 里让 iptables 规则开机自动生效,常见做法有 三种,推荐前两种。


✅ 推荐方式一:使用 netfilter-persistent(官方推荐)

适用:Debian 8 及以后(含 Debian 10/11/12)

1️⃣ 安装持久化工具

sudo apt update
sudo apt install iptables-persistent

安装过程中会提示:

  • 是否保存 IPv4 规则
  • 是否保存 IPv6 规则

选择 Yes


2️⃣ 手动保存当前 iptables 规则

如果已经配好 iptables:

sudo netfilter-persistent save

或者手动保存:

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

3️⃣ 规则会自动开机加载

netfilter-persistent 会在系统启动时从下面文件加载:

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

无需额外配置 ✅


✅ 推荐方式二:使用 systemd 自定义服务(适合定制场景)

1️⃣ 创建规则脚本

sudo nano /etc/iptables/iptables.sh

示例内容:

#!/bin/bash
iptables -F
iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

保存后加执行权限:

sudo chmod +x /etc/iptables/iptables.sh

2️⃣ 创建 systemd 服务

sudo nano /etc/systemd/system/iptables-startup.service

内容:

[Unit]
Description=Load iptables rules
After=network.target

[Service]
Type=oneshot
ExecStart=/etc/iptables/iptables.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

3️⃣ 启用并启动

sudo systemctl daemon-reload
sudo systemctl enable iptables-startup
sudo systemctl start iptables-startup

⚠️ 不推荐方式:直接写 /etc/rc.local

虽然可行,但在 systemd 系统中已逐渐被淘汰。


✅ 检查 iptables 是否开机生效

sudo iptables -L

重启后验证:

sudo reboot

✅ 总结(怎么选)

场景 推荐方式
只保存 iptables 规则 iptables-persistent
需要复杂脚本控制 ✅ systemd 服务
老系统 /etc/rc.local(不推荐)

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

  • Debian 版本
  • 是服务器还是桌面
  • 是否使用 IPv6

我可以帮你给出最合适的一套规则模板

0