FreeBSD在线开启ipfw

May 10th, 2011 no comment

在FreeBSD 7.1 amd64版下,由于默认的内核编译选项没有并加入以下内容:

options IPFIREWALL
options IPFIREWALL_DEFAULT_TO_ACCEPT

所以在启用ipfw的时候,会启用默认禁止的全部连接的规则,那么直接的后果是把ssh的连接踢下线,并切断外界到这个服务器一切端口的连接请求。

解决方案,在启用ipfw后,马上加入一条允许所有请求的规则:

kldload ipfw && ipfw add 65534 allow ip from any to any

另外需要注意一点:绝对禁止使用/sbin/ipfw -q -f flush,会导致把上面这条手动添加的开放规则删除!

同时,如果想在重启后ipfw也开启生效,那么需要这样做:

在/etc/rc.conf里加入:

firewall_enable="YES"
firewall_script="/etc/firewall.sh"

同时/etc/firewall.sh的内容是

#!/bin/sh
/sbin/ipfw -q -f flush
/sbin/ipfw add 65534 allow ip from any to any

同时自定义的ipfw规则也可以向/etc/firewall.sh中添加,比如阻止118.215.66.135到本机80端口的连接,那么加入

/sbin/ipfw add 1 deny ip from 124.193.167.1 to any dst-port 80