在Linux系統中,使用iptables命令配置的防火墻規則通常不會自動保存。當系統重啟時,這些規則會丟失。為了在重啟后保留iptables規則,你需要將它們保存到一個文件中,并在啟動時自動加載這些規則。以下是在不同Linux發行版上保存和恢復iptables規則的方法:
保存規則:
sudo iptables-save > /etc/iptables/rules.v4
恢復規則: 在系統啟動時自動加載規則,可以創建一個啟動腳本:
sudo nano /etc/network/if-pre-up.d/iptables
添加以下內容:
#!/bin/sh
/sbin/iptables-restore < /etc/iptables/rules.v4
賦予腳本執行權限:
sudo chmod +x /etc/network/if-pre-up.d/iptables
保存規則:
sudo service iptables save
或者
sudo iptables-save > /etc/sysconfig/iptables
恢復規則:
在系統啟動時自動加載規則,可以編輯/etc/rc.d/rc.local
文件(在較新的系統中可能是/etc/rc.d/rc.local.d/
目錄下的文件):
sudo nano /etc/rc.d/rc.local
在exit 0
之前添加以下行:
iptables-restore < /etc/sysconfig/iptables
保存規則:
sudo service iptables save
或者
sudo iptables-save > /etc/firewalld/zones/public.xml
恢復規則: 使用firewalld服務來管理iptables規則:
sudo firewall-cmd --runtime-to-permanent
保存規則:
sudo iptables-save > /etc/iptables/iptables.rules
恢復規則: 創建一個啟動腳本:
sudo nano /etc/systemd/system/iptables-restore.service
添加以下內容:
[Unit]
Description=Restore IPTables rules
After=network.target
[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore < /etc/iptables/iptables.rules
[Install]
WantedBy=multi-user.target
啟用并啟動服務:
sudo systemctl enable iptables-restore.service
sudo systemctl start iptables-restore.service
請注意,不同的Linux發行版可能會有不同的包和服務名稱,例如iptables-services
或firewalld
。確保你使用的是適合你系統的命令和方法。此外,如果你使用的是SELinux,可能還需要配置相關的策略以允許iptables規則的加載。