系統升級到CentOS 7後總感覺iptables怪怪的,比如不管怎麼儲存重啟後都被初始化一下,即便我最後發大絕招啟動時候加命令:
首先iptables-save > /etc/iptables.rules儲存目前狀態。
然後再在/etc/rc.local中強制加上
/etc/rc.local
iptables-restore /etc/iptables .rules
重啟後雖然規則生效但仔細看規則還是一些被莫名添加的額外的內容,讓人很是不爽。
仔細一google,發現問題之所在了。RedHat在7中更改了系統軟體,不再使用iptables作為系統的防火牆,而是使用了FirewallD,但是為了相容過去的命令也可以使用iptables來設定防護規則,但啟動的時候自搞了一套。
解決方案也很簡單。
首先,可以考慮follow官方的想法轉用FirewallD。其實查看一些官方文檔也能用。
但是,個人覺得若沒有顯著的提升也可以繼續使用原來的iptables。若打算繼續使用iptables, 可以繼續做如下:
備份當前規則
1 iptables-save > iptables.rules
禁用FireWallD,安裝&啟用iptables-services systemctl stop firewalld systemctl mask firewalld yum install iptables-services -y systemctl enable iptables
這時候檢查iptables發現規則被清空了
1 iptables -L -x -n
將備份的規則還原
1 iptables-restore iptables.rules
儲存當前規則
1 /usr/libexec/iptables/iptables .init save
若使用minimize版本的安裝,可能會出現提示
iptables: Saving firewall rules to /etc/sysconfig/iptables: /etc/init.d/iptables: line 274: restorecon: command not found
這是因為selinux沒有安裝的緣故,缺少一個組件。安裝policycoreutils即可。
1 yum install policycoreutils -y