BIND-8/9 interface bug? Or is it FreeBSD?

Jeremy Chadwick freebsd at jdc.parodius.com
Fri Apr 18 16:52:56 PDT 2003


        Since when?  :-)  That wouldn't make very much sense, and
        would be extremely misleading for network administrators.
        bpf should have the highest priority, well above ipfw.

        I just verified that fact with a test: blocking any telnet I/O
        across my public interface and telnetting in from my home
        workstation:

$ ipfw add 350 deny tcp from any to any 23 via fxp0
00350 deny tcp from any to any 23 via fxp0
$ ipfw -a list 350
00350        0           0 deny tcp from any to any 23 via fxp0
$ tcpdump -p -ifxp0 -l -n "port 23"
tcpdump: listening on fxp0
16:46:17.585420 12.234.135.66.43116 > 64.71.184.170.23: S 3333778257:3333778257(0) win 64240 <mss 1460,nop,nop,sackOK> (DF)
16:46:19.541515 12.234.135.66.43117 > 64.71.184.170.23: S 3333778257:3333778257(0) win 64240 <mss 1460,nop,nop,sackOK> (DF)
16:46:21.731619 12.234.135.66.43118 > 64.71.184.170.23: S 3333778257:3333778257(0) win 64240 <mss 1460,nop,nop,sackOK> (DF)
$ ipfw -a list 350
00350        3         144 deny tcp from any to any 23 via fxp0

        The fact that tcpdump does not see the erroneous behaviour
        BIND is exhibiting is very bothersome.  What I have yet to do
        is run tcpdump on fxp1 and see if the traffic shows up there
        (and if it does, then I would classify this as a FreeBSD bug
        somewhere, while the origin itself would be a BIND bug).

-- 
| Jeremy Chadwick                                   jdc at parodius.com |
| Parodius Networking                       http://www.parodius.com/ |
| UNIX Systems Administrator                  Mountain View, CA, USA |
| Making life hard for others since 1977.                            |

On Fri, Apr 18, 2003 at 03:02:29PM -0700, Crist J. Clark wrote:
> On Fri, Apr 18, 2003 at 01:16:45PM -0700, Jeremy Chadwick wrote:
> > Oleg:
> > 
> >         I tried your recommendation of commenting out the transfer-source
> >         line, and within a few moments of running this:
> > 
> > ipfw zero 1005 && ndc stop && /usr/sbin/named -u bind -g bind
> > 
> >         ...saw the following in our security syslog:
> > 
> > Apr 18 13:11:09 pentarou /kernel: ipfw: Entry 1005 cleared.
> > Apr 18 13:11:33 pentarou /kernel: ipfw: 1005 Deny UDP 10.0.0.1:53 64.71.184.190:53 out via fxp0
> > Apr 18 13:12:04 pentarou last message repeated 5 times
> > 
> >         ...and our named syslog:
> > 
> > Apr 18 13:11:33 pentarou named[77949]: ns_req: sendto([64.71.184.190].53): Permission denied
> > 
> >         So, it doesn't look like that's the offender.  :-)
> > 
> >         By the way, something I didn't cover: 64.71.184.190 is our
> >         secondary nameserver's WAN IP.  It's private is 10.0.0.2.
> > 
> >         I'm still wondering why tcpdump isn't catching the I/O...
> 
> That I can answer. The bpf(4) hooks lie very close to the "edges" of
> the stack, right in the device drivers. Outgoing packets that get
> blocked by the firewall never get low enough in the stack to get
> caught by BPF.
> 
> I have a guess what those might be, but it'd be a weird
> feature. Perhaps the queries (potentially) involved with zone
> transfers use the transfer address?
> 
> It'd be nice if you could get those outgoing packets. Can you turn on
> query logging within BIND? It _is_ possible to grab those packets
> before the firewall blocks them, but it might take some tricks with
> divert(4) sockets or other ugliness to do it.
> -- 
> Crist J. Clark                     |     cjclark at alum.mit.edu
>                                    |     cjclark at jhu.edu
> http://people.freebsd.org/~cjc/    |     cjc at freebsd.org


More information about the freebsd-net mailing list