在 Debian 中,iptables 本身不是一个“服务”,所以不能直接用 systemctl enable iptables 来开机启动(老版本可能有 iptables-persistent,但新版本更推荐下面方式)。
常见做法有 两种:
iptables-persistent(最简单,推荐)apt update
apt install iptables-persistent
安装过程中会问你是否保存当前规则:
以后你修改了 iptables 规则,需要手动保存:
netfilter-persistent save
或
iptables-save > /etc/iptables/rules.v4
Debian 会自动在开机时加载:
/etc/iptables/rules.v4
查看状态:
systemctl status netfilter-persistent
✅ 这是 Debian 官方推荐方式
vim /usr/local/bin/iptables-start.sh
内容示例:
#!/bin/bash
iptables -F
iptables -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
赋予执行权限:
chmod +x /usr/local/bin/iptables-start.sh
vim /etc/systemd/system/iptables-custom.service
内容:
[Unit]
Description=Custom iptables rules
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/iptables-start.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable iptables-custom
/etc/rc.local仅适合老旧系统:
iptables-restore < /etc/iptables.rules
重启后执行:
iptables -L -n
| 场景 | 推荐方式 |
|---|---|
| 普通服务器 | iptables-persistent |
| 复杂规则/自动化 | systemd 自定义服务 |
如果你是 Debian 10/11/12,直接用 方法一 最稳。
需要我帮你写一套完整 iptables 规则模板吗?