在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