我正在/etc/network/if-pre-up.d/iptables
使用 iptables-restore 通过初始化我的 iptables 规则。这很好用,但我有点担心如果该脚本由于某种原因失败(可能保存的 iptables 文件已损坏或其他原因)会发生什么。
如果脚本失败,我想:
- 在没有任何 iptables 规则的情况下启动我的网络接口
- 启动 OpenSSH 服务器
- 但不是任何其他服务,如 Web 服务器,......(并且可能停止运行实例)
有没有一个很好的规范方法来做到这一点?进入较低init
阶段?- 我已经很久没有这样做了,而且我认为近年来关于 init 发生了很多变化(?) - 我应该降到哪个阶段,OpenSSH 服务器和我的网络接口仍然运行吗?
谢谢
克里斯
(在 Debian Lenny 上)
也许您可以通过查看 iptables-restore 返回代码来做到这一点,如下所示:
这样,如果您的规则无法加载,iptables 将丢弃除 ssh 之外的所有传入连接。
我从未尝试过,但想到的另一个解决方案是将您的外部服务绑定到根本不可路由的内部 IP,即使环回也可能起作用。然后,作为您保存的 IP 表配置中的最后一条规则,设置本地服务的透明代理。
如果 IP 表没有出现,你只是不连接你的服务。如果确实出现了,您的服务就会变得可用。
您离开此配置的唯一系统是 SSH,这样您就可以进行带外管理。
当然,您的服务日志都会有错误的源 IP。不过,我想这将涵盖那个角落案例。