Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4157945
  • 博文数量: 601
  • 博客积分: 15410
  • 博客等级: 上将
  • 技术积分: 6884
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-16 08:11
个人简介

独学而无友,则孤陋而寡闻!

文章分类

全部博文(601)

文章存档

2020年(1)

2018年(4)

2017年(7)

2016年(42)

2015年(25)

2014年(15)

2013年(36)

2012年(46)

2011年(117)

2010年(148)

2009年(82)

2008年(37)

2007年(41)

分类: BSD

2007-11-12 00:55:45

原因:ipf的内核参数是不能通过sysctl设置的,必须通过ipf -D -T 来设置。可以把设置的语句加入到rc.conf里的ipfilter_flags里面。但是,由于-D参数把ipf -f 和ipnat -f的参数给清除掉,所以会出现ipf和ipnat没有配置文件的错误。
解决:
   1、对于ipf的参数,可以把它加在最后。
ipfilter_flages="-D -T ipf_nattable_sz=30011,ipf_nattable_max=300000,\
fr_tcptimeout=180,fr_tcpclosewait=60,fr_tcphalfclosed=300,\
fr_tcpidletimeout=7200,fr_tcpclosed=60,fr_tcplastack=120,\
fr_udptimeout=90,fr_icmptimeout=35,\
fr_statemax=8039,fr_statesize=11471 -E -f /home/ipf.rules"

    2、对于ipnat参数的丢失,可以通过几种途径来解决。
      (1)写一个ipnat.sh到/etc/rc.d/来实现系统自启动。但是,这个自启动有时候会失效。
    (2)既然是ipf的启动把它去掉,那么就可以改一下ipf的启动文件。
         /etc/rc.d/ipfilter。

ipfilter_start()
{
        echo "Enabling ipfilter."
        if [ `sysctl -n net.inet.ipf.fr_running` -le 0 ]; then
                ${ipfilter_program:-/sbin/ipf} -E
        fi

        ${ipfilter_program:-/sbin/ipf} -Fa
        if [ -r "${ipfilter_rules}" ]; then
                ${ipfilter_program:-/sbin/ipf} \
                    -f "${ipfilter_rules}" ${ipfilter_flags}
#                echo "Go to The IPnat"
#               sleep 2
                /sbin/ipnat -CF -f /home/ipnat.rules
#               sleep 1
        fi
        ${ipfilter_program:-/sbin/ipf} -6 -Fa
        if [ -r "${ipv6_ipfilter_rules}" ]; then
                ${ipfilter_program:-/sbin/ipf} -6 \
                    -f "${ipv6_ipfilter_rules}" ${ipfilter_flags}
                echo "Go to IPV6 Proccess! Hu Xiao"
        fi
}

ipfilter_resync()
{
        # Don't resync if ipfilter is not loaded
        if ! ipfilter_loaded; then
                 return
        fi
        ${ipfilter_program:-/sbin/ipf} -y ${ipfilter_flags}
                /sbin/ipnat -CF -f /home/ipnat.rules

}

   注意:第一,这一个是直接用命令,如果想通用,改为变量方式。第二,一定要写两处,最起码要写resync里的。因为那一个是后执行的。
阅读(2156) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~