一次防火墙配置故障

昨天要在一台远程服务器上配置防火墙,系统是freebsd,所以首选当然是ipfw。 很简单的在rc.conf加入了启用ipfw的相关语句


 firewall_enable="YES" firewall_script="/etc/rc.firewall" firewall_type="open" firewall_quiet="YES"

这样应该是没有问题了,于是重刷下rc.conf,结果把自己给档在外面了,想想不可能,以前一直在本机上操作也没有把自己档在外面的情况发生,今天怎么这样,难道我漏写了什么东西。没有办法,只能让机房把机器重启了,结果居然又可以进入系统了。这让我很郁闷,既然是错的语句在配置文件里,那应该是重启后还是无法连接系统的呀。

于是自己有重新写了下ipfw.rules,也加入到rc.conf中,然后又刷了下ipfw.rules,我还特地在规则最后加入了全开的选项。可这次居然又把自己档在外面了。在不知道情况的情况下,于是让机房的工作人员帮我们插上显示器和键盘进行处理,这个还是要非常感谢该机房工作人员任劳任怨。授权他们进入系统后把防火墙相关内容注释掉后重启刷下rc.conf,总算是可以登陆到系统了。

可问题还是存在阿,为什么明明最后写了允许通过,而实际却没办法登陆系统呢。而自己在本地进行测试这些规则都是没有问题的。

在百思不得其解后终于想明白了,原来是该规则中第一句是清空现有防火墙规则,而ipfw默认是deny所有连接的,而我远程操作的时候在执行完第一句就把我给deny掉了,于是后面的语句就不再执行下去了,这就是为什么每次重启后我能登陆到系统中,而直接远程操作的时候却无法连接进去。所以只要执行


sh /etc/ipfw.rules &;

这样就会把这个指令放入后台执行,这样做的后果是执行完就可以进入到系统中。