我正在使用iptables-restore通过/etc/network/if-pre-up.d/iptables初始化我的iptables规则。 这工作正常,但我有点担心会发生什么,如果该脚本由于某种原因失败(也许保存的iptables文件是腐败或其他)。
如果脚本失败了,我想:
有没有一个很好的经典方法来做到这一点? 进入较低的init阶段? – 我很久没有这样做了,我认为关于init的很多内容在近几年已经发生了变化,我应该select哪个阶段,OpenSSH服务器和networking接口是否仍然运行?
谢谢
克里斯
(在Debian Lenny上)
我从来没有尝试过这样做,但想到的另一个解决scheme是将您的外部服务绑定到根本不可路由的内部IP,即使回送也可能工作。 然后,作为您保存的IP表configuration中的最后一个规则,为本地服务设置透明代理。
如果IP表无法启动,那么您就不要连接您的服务。 如果确实出现,您的服务就可以使用了。
您从这个configuration中离开的唯一系统是SSH,这样您就可以进行带外pipe理。
当然,你的服务日志都会有错误的源IP。 不过,我想这会覆盖那个angular落案例。
也许你可以通过查看iptables-restore返回代码来做到这一点,如下所示:
iptables-restore < /path/to/iptables.rules if [ $? -ne 0 ]; then iptables -P INPUT DROP iptables -A INPUT -p tcp -i $INTERFACE --dport 22 -j ACCEPT fi
这样,如果你的规则加载失败,iptables会删除所有的连接,除了ssh。