优化后的ipfilter想卸载时还需要还原

前几天学校的网络一直时断时续,一直以为是新架设的网关服务器的问题,所以几天前对它进行过一次优化(主要是优化/etc/sysctl.conf和ip_state.h文件),但查到最后,发现原来是内网机器的病毒加上网络流量的增大(没有限制流量)所造成的,和网关服务器没关系,所以最后还是决定使用放弃ipfilter而使用squid,事情越简单越好,这话一点没错,这次用ipfilter本来是想让客户端使用方便,可没想到一些负面对服务器影响这么大(主要为病毒冲击内网网卡加上使用p2p软件进行无限制下载网络资源),今天准备从内核中将ipfilter撤走:

# cd /usr/src/sys/i386/conf
# cp funpower2 funpower3  //通过复制来新建一个新内核文件
# ee funpower3

将以下三行注释(加#号):
#options         IPFILTER
#options         IPFILTER_LOG
#options         IPFILTER_DEFAULT_BLOCK

# /usr/sbin/config funpower3
# cd ../compile/funpower3
# make cleandepend
# make depend
# make
# make install

当编译到make命令时,竟然出现了以下错误:

In file included from /usr/src/sys/modules/ipfilter/../../contrib/ipfilter/netinet/mlfk_ipl.c:26:
/usr/src/sys/modules/ipfilter/../../contrib/ipfilter/netinet/ip_state.h:24: error: syntax error before "IPSTATE_SIZE"
*** Error code 1

Stop in /usr/src/sys/modules/ipfilter.
*** Error code 1

Stop in /usr/src/sys/modules.
*** Error code 1

Stop in /usr/src/sys/i386/compile/funpower2.

看到错误信息中有我优化时更改的ip_state.h文件,就知道一定和优化有关,马上恢复原来设置,将优化的内容:

#ifndef IPSTATE_SIZE
define IPSTATE_SIZE    64997
#endif
#ifndef IPSTATE_MAX
define IPSTATE_MAX     45497    /* Maximum number of states held */
#endif

改成(加两#号):

#ifndef IPSTATE_SIZE                                 
#define IPSTATE_SIZE    5737                         
#endif
#ifndef IPSTATE_MAX
#define IPSTATE_MAX     4013    /* Maximum number of states held */
#endif

重新进入配置文件进行配置(刚前几步完成的操作不用重复,直接make):

# cd /usr/src/sys/i386/compile/funpower2
# make //刚前几步make cleandependmake depen等完成的操作不用重复,直接make
# make install

然后编辑/etc/rc.conf,去除启动选项:

# cd /etc
# ee rc.conf
去除以下四行(加#号):
#ipfilter_enable="YES"
#ipfilter_rules="/etc/ipf.conf"
#ipnat_enable="YES"
#ipnat_rules="/etc/ipnat.conf"

重启服务器,完成去除ipfilter工作。

Leave a Reply