温馨提示×

debian iptables怎么开机启动

小樊
33
2026-09-28 20:29:15
栏目: 智能运维

在 Debian 中,iptables 本身不是一个“服务”,所以不能直接用 systemctl enable iptables 来开机启动(老版本可能有 iptables-persistent,但新版本更推荐下面方式)。

常见做法有 两种:


方法一:使用 iptables-persistent(最简单,推荐)

1. 安装

apt update
apt install iptables-persistent

安装过程中会问你是否保存当前规则:

  • 选 Yes

2. 保存规则

以后你修改了 iptables 规则,需要手动保存:

netfilter-persistent save

或

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

3. 开机自动恢复

Debian 会自动在开机时加载:

/etc/iptables/rules.v4

查看状态:

systemctl status netfilter-persistent

✅ 这是 Debian 官方推荐方式


方法二:用 systemd 自定义服务(适合脚本化)

1. 编写规则脚本

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

2. 创建 systemd 服务

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

3. 启用开机启动

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 规则模板吗?

0 踩