linux 執行 iptables 命令出錯 segmentation fault (core dumped) 的解決
2016-03-16 17:06:11
12542
linux 執行 iptables 命令出錯: segmentation fault (core dumped)
systemctl status iptables.service 出錯 code=dumped signal=SEGV
現象:
一臺機器被強制手動關閉了,重新啟動后,防火墻(iptables)不能啟動,系統啟動日志 /var/log/boot.log 中出現如下錯誤:
failed to start ipv4 firewall with iptables
failed to start ipv6 firewall with iptables
please use "systemctl status iptables.service" for detail
機器是做代理服務的,導致其他機器都不能上網了。
解決辦法:
進入系統后,使用 systemctl status iptables.service 查看 iptables 狀態,發現沒有啟動,信息如下:
Active: failed
code=dumped signal=SEGV
于是執行 iptables 命令:iptables -L
直接提示錯誤: segmentation fault (core dumped)
這種情況從來沒有遇到過,iptables是系統軟件,執行時怎么會出現段錯誤呢?猜測是系統強制關閉時破壞了相關文件。嘗試重新安裝 iptables 會不會解決問題。
首先查看本機的 iptables 的版本:rpm -qa iptables,發現是iptables-2.16-xxx.xx
于是下載了 iptables 的rpm包,即:iptables-2.16-xxx.xx.rpm
然后強制卸載 iptables 包: rpm -e --nodeps iptables-2.16-xxx.xx 這里需要加上 --nodeps 不考慮依賴,強制卸載。
卸載完畢,安裝: rpm -ivh iptables-2.16-xxx.xx.rpm
安裝成功后,執行 iptables 命令:iptables -L 。發現不再提示段錯誤了,正常了。
重啟iptables,即執行命令: systemctl restart iptables.service,
查看iptables狀態,即:systemctl status iptables.service。