遇到单个来源 IP 持续访问主机时,iptables 仍然是最直接的拦截手段之一。下面按“先封禁、再恢复、最后持久化”的顺序整理操作,适合临时处理异常访问,也能帮助你判断规则是否真的会在重启后继续生效。
封禁指定 IP 的基本命令
如果目标是直接阻止某个 IP 访问当前系统,可以先在终端中添加一条 INPUT 链规则,把来自该地址的数据包直接丢弃。

sudo iptables -A INPUT -s -j DROP 这里的 需要替换成实际要屏蔽的来源地址。
例如,要阻止 192.168.1.100 访问,命令写法如下:
sudo iptables -A INPUT -s 192.168.1.100 -j DROP执行后,来自这个 IP 的数据包会被直接丢弃。对于访问方来说,效果就是无法继续连到这台机器。
如何取消对该 IP 的封禁
如果后续需要恢复访问权限,可以删除刚才添加的规则。命令结构与添加规则基本一致,只是把 -A 改为 -D。
sudo iptables -D INPUT -s -j DROP 同样以 192.168.1.100 为例,解除封禁时可执行:
sudo iptables -D INPUT -s 192.168.1.100 -j DROP回车后,这条屏蔽规则就会从 INPUT 链中移除,该 IP 也就不再按这条规则被丢弃。
为什么重启后会失效,以及怎样持久化
需要特别注意的是,上面的规则默认只在当前运行周期内生效。系统一旦重启,内存中的 iptables 规则通常不会自动保留,因此如果你只是临时执行了封禁命令,重启后拦截就可能消失。

要让规则在重启后继续存在,需要把当前规则保存到系统使用的配置中。不同 Linux 发行版的做法并不一样。
Debian 或 Ubuntu
在 Debian 或 Ubuntu 上,可使用下面的命令保存:
sudo iptables-sa ve > /etc/iptables/rules.v4Red Hat 或 Fedora
在 Red Hat 或 Fedora 上,则可以使用:
sudo service iptables sa ve或者:
sudo systemctl sa ve iptables完成保存后,规则才更接近“重启后仍然有效”的状态。实际操作时,建议在添加或删除规则后立刻确认是否已经保存,否则下次重启可能会发现配置又回到了初始状态。







