| Summary: | IPFilter and IPFW processing order is not sensible> | ||
|---|---|---|---|
| Product: | Base System | Reporter: | mk |
| Component: | kern | Assignee: | Andre Oppermann <andre> |
| Status: | Closed FIXED | ||
| Severity: | Affects Only Me | CC: | mk |
| Priority: | Normal | ||
| Version: | Unspecified | ||
| Hardware: | Any | ||
| OS: | Any | ||
|
Description
mk
2002-12-27 23:00:19 UTC
SORRY, I confused the ordering - the description is wrong! Actually, at the moment, ipfilter is always checked BEFORE ipfw for both incoming and outgoing packets, so the order really is: incoming: -> ipnat -> ipfilter -> ipfw outgoing: -> ipfilter -> ipnat -> ipfw The problem is still the same (outgoing packets are seen with a public source IP address, incoming packets will have a private/internal destination address when used with ipnat), and the fix is correct. Responsible Changed From-To: freebsd-bugs->ipfw Over to ipfw maintainers who will hopefully know if this is the correct solution. Adding to the audit-trail. ----- Forwarded message from Pawel Malachowski <pawmal@unia.3lo.lublin.pl> ----- From: "Pawel Malachowski" <pawmal@unia.3lo.lublin.pl> To: johan@FreeBSD.org, freebsd-bugs@FreeBSD.org, ipfw@FreeBSD.org Subject: Re: kern/46564: IPFilter and IPFW processing order is not sensible> Date: Tue, 06 May 2003 22:47:21 +0200 Hello, Here is some example: (private IPs)LAN---(fxp1)BOX(fxp0)---Internet There are: . dummynet running on fxp0 . ipnat running on fxp0 Right now outgoing packets on fxp0 go through ipnat and then through dummynet. It is not possible to shape this traffic on per-user basis (for example with src-ip mask) cause after ipnatting all packets have the same source IP. Possible sollutions are: . use dummynet on fxp0 This is not so good idea if I have a huge number of local NICs and subnets cause I have to make exceptions (ipfw skip) for local traffic. It is very easy and natural to use dummynet on fxp0 interface for bandwith limitaion of `Internet' traffic. . use natd instead of ipnat Sucessfully tested, but I simply prefer ipnat. :) So, probably packets flow should be: incoming: IPFilter -> IPFW outgoing: IPFW -> IPFilter This code is `for private use' and is quite bad but does that (4.8): http://unia.3lo.lublin.pl/~pawmal/freebsd/ip_output-ipfw-ipf.diff I know submitter tried something similar on his own, too. However, allowing user to decide about order (using sysctls?) would be the best solution. regards, -- Pawel Malachowski ----- End forwarded message ----- -- Johan Karlsson mailto:johan@FreeBSD.org Responsible Changed From-To: ipfw->andre Take over. State Changed From-To: open->closed The behaviour will not be changed for FreeBSD 4.x because the change is too intrusive. Running ipfilter and ipfw is officially not supported. In 5.3 ipfw has been converted to use the PFIL_HOOKS as well and here the order will be observed. The first loaded packet filter will get the packet first on input and last on output. |