[Bridge] The problem of bridge+netfilter+nat

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Op ma, 21-03-2005 te 18:44 +0800, schreef Zheng Chuanbo:
> Hi,
> 
> I met a problem when using bridge with netfilter. The kernel version 
> 2.4.20, and the patch is bridge-nf-0.0.10-against-2.4.20.diff. 
> 
> Our firewall configuration is as follows,
> eth3,eth4,eth5,eth6 configured as a bridge with an IP address 10.0.0.1.
> The local net connect to the internet via the gateway 10.0.0.1 and SNAT 
> is applied on the firewall. It worked but sometimes there are some 
> problems. The bridge stopped resonse now and there. When checking the
> log there were some messages as below,
> 
> Mar 21 13:48:04 NPFW br_netfilter: Argh!! br_nf_post_routing: bad mac.raw pointer.[eth6][Bridge_0]
> Mar 21 13:48:04 NPFW br_netfilter: Argh!! br_nf_post_routing: bad mac.raw pointer.[eth5][Bridge_0]
> Mar 21 13:48:04 NPFW br_netfilter: Argh!! br_nf_post_routing: bad mac.raw pointer.[eth4][Bridge_0]
> Mar 21 13:48:04 NPFW br_netfilter: Argh!! br_nf_post_routing: bad mac.raw pointer.[eth3][Bridge_0]
> 
> I checked the code, it is caused by some certain types of packets.
>          
>         /* Be very paranoid.  */
>         if (skb->mac.raw < skb->head || skb->mac.raw + ETH_HLEN > skb->data) {
>                 printk(KERN_CRIT "br_netfilter: Argh!! br_nf_post_routing: "
>                                  "bad mac.raw pointer."); 
>                 if (skb->dev != NULL) {
>                         printk("[%s]", skb->dev->name);
>                         if (has_bridge_parent(skb->dev))
>                                 printk("[%s]", bridge_parent(skb->dev)->name);
>                 }       
>                 printk("\n");
>                 return NF_ACCEPT;               
>         }
> 
> And in the new bridge-nf version it is annouced this sould not happen anymore.
> I think I should upgrade the kernel. But I'm curious on the problem and I wish
> I could know what kind of packets caused such a problem. 

This was caused by broadcast packets sent by the bridge that arrive on
the bridge's loopback device. A dhcp client on the bridge can cause
this, f.e.

cheers,
Bart



[Index of Archives]     [Netdev]     [AoE Tools]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux