文章内容
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
这会把所有规则(包括 nat、filter、mangle 表)保存为文本文件。
🧩 二、将规则文件复制到目标服务器
使用 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
如果没有差异,说明同步完全一致 ✅。
其它相关推荐:
评论列表