![运行 iptables-restore 后无法访问我的服务器。如何恢复此命令](https://linux22.com/image/752416/%E8%BF%90%E8%A1%8C%20iptables-restore%20%E5%90%8E%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE%E6%88%91%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E3%80%82%E5%A6%82%E4%BD%95%E6%81%A2%E5%A4%8D%E6%AD%A4%E5%91%BD%E4%BB%A4.png)
我决定运行这个命令
iptables-save | tee iptables_backup.conf | grep -v '\-A'
但我却不小心多放了一条命令 iptables-restore 并运行了它,现在我的服务器被锁定了。我无法再使用 SSH 了:
iptables-save | tee iptables_backup.conf | grep -v '\-A' | iptables-restore
我可以从救援磁盘访问我的服务器并查看所有文件,但是如何恢复上述命令来启动我的服务器?
我正在使用 Centos 8。
答案1
您很聪明,做了备份。为什么不使用它呢?
iptables-restore < iptables_backup.conf
答案2
由于备份不包含 ipv6,所以毫无用处,我应该对 ipv6 进行另一次备份,如下所示:
ip6tables-save
我通过在启动时使用 rc.local 将 iptables 恢复到原始状态来解决这个问题。因此,在启动恢复时,我编辑了这个文件:
nano /etc/rc.d/rc.local
# Temporary commands to run once at startup to reset iptables to original state
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
ip6tables -F
ip6tables -X
ip6tables -t nat -F
ip6tables -t nat -X
ip6tables -t mangle -F
ip6tables -t mangle -X
ip6tables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ip6tables -P OUTPUT ACCEPT
#chmod +x rc.local
然后,我重启了系统。上面的脚本将运行,现在我可以访问我的服务器了。
一切正常后,我删除了上述所有命令,以防止第二次自动运行。