Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Oct 2004 14:39:52 +0200
From:      Andre Oppermann <andre@freebsd.org>
To:        John Hay <jhay@icomtek.csir.co.za>
Cc:        freebsd-current@freebsd.org
Subject:   Re: make buildkernel failed related to ip_divert module
Message-ID:  <417E4598.1090902@freebsd.org>
In-Reply-To: <20041026063545.GA57014@zibbi.icomtek.csir.co.za>
References:  <417B128B.7080904@gddsn.org.cn> <20041024133045.40733f45@dolphin.local.net> <417D5E51.2060100@freebsd.org> <1098735588.41693.4.camel@server.mcneil.com> <417D6148.6050807@freebsd.org> <20041026063545.GA57014@zibbi.icomtek.csir.co.za>

next in thread | previous in thread | raw e-mail | index | archive | help
John Hay wrote:

> On Mon, Oct 25, 2004 at 10:25:44PM +0200, Andre Oppermann wrote:
> 
>>Sean McNeil wrote:
>>
>>>On Mon, 2004-10-25 at 13:13, Andre Oppermann wrote:
>>>
>>>>Conrad J. Sabatier wrote:
>>>>
>>>>>For a further bit of clarification (I know, should have done this the
>>>>>first time):
>>>>>
>>>>>This problem is occurring with the following kernel options:
>>>>>
>>>>>options     IPDIVERT
>>>>>options     IPFILTER
>>>>>options     IPFILTER_LOG
>>>>>
>>>>>The only workaround at this time is adding "options IPFIREWALL".
>>>>
>>>>Yes, that is correct.
>>>>
>>>>IPDIVERT is a module now and you can dynamically load it just like you
>>>>can load ipfw (options IPFIREWALL).
>>>>
>>>>IPDIVERT depends on ipfw being loaded or compiled into the kernel.
>>>>
>>>>I have done the last step of IPDIVERT's transition into a KLD a few
>>>>minutes ago.  It will warn you now if you try to compile it into a
>>>>kernel without IPFIREWALL as well.  As a module it will simply complain
>>>>that ipfw needs to be loaded first.
>>>
>>>
>>>I build my kernel with
>>>
>>>options         IPFIREWALL
>>>options         IPFIREWALL_FORWARD
>>>options         IPDIVERT
>>>
>>>Can I now use loadable modules as well?  Will IPFIREWALL have the
>>>forwarding option or would I still have to specify that?
>>
>>You can certainly use IPDIVERT as a loadable module.  The FORWARD option
>>to IPFIREWALL needs to be compiled into the module if you want to load
>>it as a module.  For modules options in the kernel configuration file
>>are not automatically included.  You have to edit sys/modules/ipfw/Makefile
>>instead.  Then you can load everything as module.  If you start natd from
>>rc.conf it will load ipdivert.ko automatically (if you have run mergemaster
>>to update your rc scripts).
> 
> Is there any harm in making IPFIREWALL_FORWARD default for the ipfw
> module? For that matter, why have a separate FORWARD option and not
> just have it as part of the standard firewall stuff?

The reason is simple.  FORWARD modifies the entire ip_input(), ip_output()
and tcp_input() path.  This is not something that should be in stock kernels
unless you want to use 'ipfw fwd' (which is only a minority).

> And related to this, is there a problem with kern/71910? This one is
> needed on a NAT box that have to forward packets to a web proxy for
> transparent proxying.

This is two-edged sword.  Lets assume you have 192.168.0.1/24 on one
interface and 192.168.10.1/24 on the other interface with a default
route of 192.168.10.5.  You want everything from 192.168.0.0/27 to go
through 192.168.10.10 instead.  In this case an ICMP reply from the
router to the use will also be forwarded to that other gateway and never
reach the destination.  That is the reason for the check.  This can be
very nasty.

So I'm not sure what the right fix is.  Make the change to you can shoot
your foot off, and document that fact.  Or leave the checks in as they
are now?

-- 
Andre



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?417E4598.1090902>