Subject: kern/26827: kernel panic in NAT
To: None <gnats-bugs@gnats.NetBSD.org>
From: None <dokas@cs.umn.edu>
List: netbsd-bugs
Date: 09/01/2004 11:18:10
>Number: 26827
>Category: kern
>Synopsis: kernel panic in NAT
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Sep 01 16:40:00 UTC 2004
>Closed-Date:
>Last-Modified:
>Originator: Paul Dokas
>Release: NetBSD 2.0G
>Organization:
University of Minnesota, Dept of Computer Science
>Environment:
System: NetBSD fw-csci.cs.umn.edu 2.0G NetBSD 2.0G (FW-CSCI) #0: Tue Aug 31 07:58:50 CDT 2004 root@fw-csci.cs.umn.edu:/usr/obj/sys/arch/i386/compile/FW-CSCI i386
Architecture: i386
Machine: i386
>Description:
I'm using -current as of Aug 31, 2004 on a firewall and I'm now getting
kernel panics. Here's the ddb session (copied by hand):
kernel: page fault trap, code=0
stopped at netbsd:fr_movequeue+0x54: movl %ebx,0(%eax)
db> bt
fr_movequeue(.....) at netbsd:fr_movequeue+0x54
fr_natout(.....) at netbsd:fr_natout+0xe6
fr_checknatout(.....) at netbsd:fr_checknatout+0xe6
fr_check(.....) at netbsd:fr_check+0x474
fr_check_wrapper(.....) at netbsd:fr_check_wrapper+0x56
pfil_run_hooks(.....) at netbsd:pfil_run_hooks+0x6e
ip_output(.....) at netbsd:ip_output+0x483
ip_forward(.....) at netbsd:ip_forward+0x16a
ip_input(.....) at netbsd:ip_input+0x273
ipintr(.....) at netbsd:ipintr+0x76
DDB lost frame for netbsd:Xsoftnet+0x41, trying 0xc0447e80
Xsoftnet() at netbsd:Xsoftnet+0x41
db> register
ds 0x10
es 0x10
fs 0x30
gs 0x10
edi 0xc1fa3000 pnpbios_softc+0x1bc027c
esi 0xc0e87b04 pnpbios_softc+0x...
ebp 0xc0447928 pnpbios_softc+0x...
ebx 0xc1f93054 pnpbios_softc+0x...
edx 0xc1f81900 pnpbios_softc+0x...
ecx 0xc1f81900 pnpbios_softc+0x...
eax 0
eip 0xc0127a9c fr_move_queue+0x54
cs 0x8
eflags 0x10202
esp 0xc0447920
ss 0x10
This machine is connected to several VLAN and is NATting them all to a
single IP address. Something like this:
map fxp0 10.1.1.0/24 -> 192.168.0.1/32 proxy port ftp ftp/tcp
map fxp0 10.1.1.0/24 -> 192.168.0.1/32 portmap tcp/udp 10000:60000
map fxp0 10.1.1.0/24 -> 192.168.0.1/32
map fxp0 10.2.2.0/24 -> 192.168.0.1/32 proxy port ftp ftp/tcp
map fxp0 10.2.2.0/24 -> 192.168.0.1/32 portmap tcp/udp 10000:60000
map fxp0 10.2.2.0/24 -> 192.168.0.1/32
map fxp0 10.3.3.0/24 -> 192.168.0.1/32 proxy port ftp ftp/tcp
map fxp0 10.3.3.0/24 -> 192.168.0.1/32 portmap tcp/udp 10000:60000
map fxp0 10.3.3.0/24 -> 192.168.0.1/32
where 192.168.0.1 is the external facing IP and 10.1.1.0/24, 10.2.2.0/24
and 10.3.3.0/24 are internal facing on VLANs
I'm also making heavy use of IPFilter to filter all the interfaces in
question:
# ipfstat -hin | wc -l
723
# ipfstat -hon | wc -l
60
And finally, I can pretty faithfully reproduce this by letting my users
have access to the private VLANs.
>How-To-Repeat:
Upgrade to -current and push a *LOT* of traffic through several VLANs that
are NATting.
>Fix:
Sorry, I don't know
>Release-Note:
>Audit-Trail:
>Unformatted: