文章内容

2025/10/10 18:36:30,作 者: 黄兵

Ubuntu 服务器之间同步 iptables 记录

在 Ubuntu 22.04 中,如果你的一台服务器重启后丢失了 iptables 规则,可以直接从另一台同步规则过去。

🧩 一、在源服务器(规则正常的那台)导出 iptables 规则

在正常服务器上执行:

sudo iptables-save > /root/iptables.rules

如果你也有 IPv6 规则:

sudo ip6tables-save > /root/ip6tables.rules

这会把所有规则(包括 natfiltermangle 表)保存为文本文件。

🧩 二、将规则文件复制到目标服务器

使用 scp(或 rsync)将规则文件传过去:

scp /root/iptables.rules root@目标服务器IP:/root/
scp /root/ip6tables.rules root@目标服务器IP:/root/

🧩 三、在目标服务器导入规则

登录到目标服务器,然后执行:

sudo iptables-restore < /root/iptables.rules

(如有 IPv6)

sudo ip6tables-restore < /root/ip6tables.rules

此时规则就已经生效了,你可以用:

sudo iptables -L -v -n

验证是否一致。

🧩 四、让规则重启后自动加载(防止再次丢失)

Ubuntu 22.04 默认使用 nftables 作为后端,但仍兼容 iptables
要让规则在重启后自动恢复,可以使用任一方式:

✅ 方式 1:使用 iptables-persistent(推荐)

安装:

sudo apt install iptables-persistent -y

安装过程中会询问是否保存当前规则,选择 Yes

如果之后规则有修改,可手动更新保存:

sudo netfilter-persistent save

这会保存规则到:

  • /etc/iptables/rules.v4

  • /etc/iptables/rules.v6

并在开机时自动恢复。

✅ 方式 2:手动通过 systemd 启动脚本恢复(适合自定义环境)

创建一个 systemd 单元文件,例如:

sudo nano /etc/systemd/system/iptables-restore.service

内容如下:

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

[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore /root/iptables.rules
ExecStart=/sbin/ip6tables-restore /root/ip6tables.rules
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

然后启用并立即加载:

sudo systemctl daemon-reload
sudo systemctl enable iptables-restore.service
sudo systemctl start iptables-restore.service

🧩 五、(可选)验证同步结果

在两台服务器分别执行:

sudo iptables -S > /tmp/rules.txt

然后比较:

diff /tmp/rules.txt

如果没有差异,说明同步完全一致 ✅。


其它相关推荐:

1、IPv6 地址如何加入 Ubuntu 防火墙

2、Linux 防火墙

3、Linux 防火墙如何屏蔽 IP 地址段

4、iptables设置白名单

5、Linux 查看日志的6种方法

分享到:

发表评论

评论列表