Re: mac match and FORWARD chain

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

 



Bo Yang wrote:
> Wakko Warner :
> > Bo Yang wrote:
> >> MAC address is some concept in the link layer , so how do
> >> you get the packet sender mac if the packet is routed to your
> >> box through some other routers ?
> >
> > I understand.  However, the machine I was using for this was directly
> > connected to both system.  There were no other routers.
> >
> > Take this for instance:
> >
> > Box A -> (eth1)firewall/router(eth0) -> Box B
> >
> > firewall/router does not trust eth1 and uses MAC addresses to allow access,
> > so it does this:
> > -I FORWARD -j ACCEPT -i eth1 -m mac --mac BOXAMAC
> > -I FORWARD -j DROP -i eth1
> >
> > firewall/router knows the mac of both box a and b (obviously, box a doesn't
> > know box b's mac and vice versa).  Consider the above the only rules in the
> > firewall and box A and B have no rules at all.
> >
> > Box A pings Box B and fails.  The reason is the mac test above is
> seeing the
> > MAC of eth0, not of Box A.
> >
> > This is what I'm referring to and I had to add a MARK rule in PREROUTING to
> > mark packets that I want to allow and then allow in the forward chain based
> > upon the mark.
> >
> I think when  the packet is in the FORWARD chain , the routing must
> have been affect the packet , so that
> is the reason why you see the eth0 mac in the rule .

Yes, and the reason I wanted to request that it not be allowed to match in
the FORWARD chain (or have a note in the man page about this)

> You can just add a rule in the PREROUTING chain in the mangle table ,
> and DROP the packat you don't
> want there . Why you must mark it first , and then drop it in another
> chain ?

Actually, I was tinkering and using MARK was the first thing that came to
mind.  After thinking about it, I think the best place would be in
nat/PREROUTING (since nat is already loaded on the firewall machine).  I do
not need mangle at all if I'm not marking.  At the time, I didn't think the
filtering place should be in the mangle or nat tables, afterall, that is
what the filter table is for =)

In the nat/PREROUTING chain, are all incoming packets passed through this or
just the initial packets?  In my current setup, I have br0 (eth0 and some
vpns) that are routed through ppp0 to get to the internet.  eth1 is
connected to a wireless ap and I do not want ANY access from anything on
that network except ICMP, VPN, and the web/snmp port to the WAP (I need a GUI
browser to configure the thing and the firewall has no GUI installed which
is why I am using forwarding).  On eth1, I only allow specific MACs to
be able to connect at all.

I do appreciate the idea to block in the prerouting chain instead of marking
then blocking.

-- 
 Lab tests show that use of micro$oft causes cancer in lab animals
 Got Gas???


[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux