温馨提示×

debian iptables怎么写脚本

小樊
47
2026-10-04 16:47:52
栏目: 智能运维

在 Debian 上用 iptables 写脚本,本质就是写一个 Shell 脚本(bash),里面调用 iptables 命令,并在系统启动时自动加载。下面给你一个从入门到可用的说明。


一、最基础的 iptables 脚本示例

新建文件,比如 /usr/local/bin/iptables.sh:

#!/bin/bash

# 清除旧规则
iptables -F
iptables -X
iptables -Z

# 默认策略(推荐)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 允许回环
iptables -A INPUT -i lo -j ACCEPT

# 允许已建立连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 允许 SSH(非常重要,否则可能断网)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许 HTTP / HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 允许 ping(可选)
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

保存后赋予执行权限:

chmod +x /usr/local/bin/iptables.sh

手动执行:

/usr/local/bin/iptables.sh

二、让脚本开机自动执行(推荐方式)

方法 1:使用 iptables-persistent(最简单 ✅)

1. 安装

apt update
apt install iptables-persistent

2. 保存当前规则

netfilter-persistent save

规则会保存到:

/etc/iptables/rules.v4

3. 开机自动加载

系统启动时会自动加载 rules.v4

✅ 推荐生产环境使用


方法 2:用 systemd 启动脚本(更灵活)

创建 service 文件:

nano /etc/systemd/system/iptables-custom.service

内容:

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

[Service]
Type=oneshot
ExecStart=/usr/local/bin/iptables.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

启用:

systemctl daemon-reload
systemctl enable iptables-custom
systemctl start iptables-custom

三、常见实用规则示例

只允许指定 IP 访问 SSH

iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

防 SYN 洪水(简单)

iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT

禁止某个 IP

iptables -A INPUT -s 1.2.3.4 -j DROP

四、查看与调试

iptables -L -n -v
iptables -S

五、建议(很重要)

✅ 新手必开 SSH 白名单或本地 console
✅ 改规则前先 iptables -P INPUT ACCEPT 防锁死
✅ Debian 新版本可考虑 nftables


如果你愿意,我可以:

  • 帮你写 Web 服务器专用规则
  • 写 Docker 兼容 iptables 脚本
  • 或改成 nftables 版本

你打算用在什么场景?

0 踩