在 Debian 里让 iptables 规则开机自动生效,常见做法有 三种,推荐前两种。
netfilter-persistent(官方推荐)适用:Debian 8 及以后(含 Debian 10/11/12)
sudo apt update
sudo apt install iptables-persistent
安装过程中会提示:
选择 Yes
如果已经配好 iptables:
sudo netfilter-persistent save
或者手动保存:
sudo iptables-save > /etc/iptables/rules.v4
sudo ip6tables-save > /etc/iptables/rules.v6
netfilter-persistent 会在系统启动时从下面文件加载:
/etc/iptables/rules.v4
/etc/iptables/rules.v6
无需额外配置 ✅
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
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
sudo systemctl daemon-reload
sudo systemctl enable iptables-startup
sudo systemctl start iptables-startup
/etc/rc.local虽然可行,但在 systemd 系统中已逐渐被淘汰。
sudo iptables -L
重启后验证:
sudo reboot
| 场景 | 推荐方式 |
|---|---|
| 只保存 iptables 规则 | ✅ iptables-persistent |
| 需要复杂脚本控制 | ✅ systemd 服务 |
| 老系统 | /etc/rc.local(不推荐) |
如果你愿意,可以告诉我:
我可以帮你给出最合适的一套规则模板 ✅