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。