Re: ebtables to perform MAC NAT ?

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

 



(Grant sorry for double, I forgot to change the To: field)

No problem. Someone (possibly me?) needs to suggest that the mailing list be tweaked to direct replies directly to it rather than the sender of the message being replied to.

On 07/21/08 10:58, DEMAINE Benoit-Pierre wrote:
As mentioned, i know the problem is 99% likely to be due to the MA311.

*nod*

Do all atheros chipsets work fine ? maybe I could buy one for cheap ?

I don't know what chipsets work, take a look at the web page(s) for the Atheros chipsets under Linux, namely the MADWiFi driver.

I dont really know what eth1 is; hostap always produce two interfaces per NIC; never understood the real difference, but in my case, i know i shall iwconfig/ifconfig on wlan0_rename. eth1 and wlan0_rename are both the same NIC, managed by hostap (see how the MAC is very similar). Thus, it is normal you think eth1 is unconnected (maybe you would have understand if you better knew hostap, or if I joined iwconfig).

*nod*

I have looked at HostAP but never messed with it. I've always been able to do what I needed with iwconfig, ifconfig, and brctl. Though if I recall, HostAP was needed if I wanted to do more than basic AP, i.e. going an infrastructure and / or use any thing like 802.1x.

IPv6 is not today's problem.

*nod* I was more concerned about the fact that IP(v4) was not bound to the interfaces that it needed to be bound to.

It's what i have been said years ago; that's why 3y ago, when brctl failed, i did not spend more than 10 minutes testing it, and moved *at once* to (IP) NAT. And, IMHO, my tests confirm it again. So, the point of this thread is to "workaround" this :)

*nod*

Is there a reason you did not look in to standard routing verses NAT? I would think it would be trivial to get your workstations to connect through your system as a router? Though, depending on what your internet router is, you may not be able to tell it that there is another subnet behind the system (Gluton) acting as the AP / Router.

Yup, see question further :)

*nod*

Yup, kinda works. But, does not work "well". I dont know enough about ARP, frames, bridging and so to dig further by myself, thus, coming to chat. It works with very bad side effects.

First, let's start with terminology. Here's what things are called and the layer they are used on.

Data is what you are sending.

TCP send datagrams. A datagram consist of a header with source and destination ports and the data to be sent.

IP sends packets. A packet consist of a header with source and destination IP addresses and the TCP datagram to be sent.

EthernetEtherent sends frames. A frame consist of a header with source and destination MAC addresses and the IP packet to be sent.

ARP uses special ethernet frames. The ARP frame consists of source hardware address, source protocol address, target hardware address, and target protocol address.

(Remember that ARP is only used to find the hardware address of a device that is with in the local subnet. If the device is not, then the router will be used.)

Proxy ARP (to the best of my knowledge) is a way for a two devices on separate non-connected networks to communicate with each other. If the device being ARPed is in the same subnet but in another non-connected network one (or more) routers can be configured to Proxy ARP for it. In this case a client will send an ARP requestreqeust for the target device, to which the router doing the Proxy ARP will respond with its own MAC address. Thus the client sending the ARP request will have an answer and a target MAC address to send the traffic to.

When the client does send its traffic, it will do so with an ethernet frame with its own MAC as the source address and the router's MAC address as the destination address with an IP packet with the expected source and destination IP addresses. The router doing the Proxy ARPing will then receive this packet and alter the source and destination MAC addresses and send a new ethernet frame on out to the next network segment containing an unmodified IP packet.

No, I simply want to solve my side effect. I have exposed the limitations of the machine (try to keep hardware, that MA311 seems to not enjoy brctl), and exposed some tests I did. Before the question I exposed what I did, and know for sure. After, I exposed what I think, or could do.

'k  (I think.)

Maybe there is a magical ebtables option I did not remark, or a friend tool specially dedicated to help brctl in this kind of configurations. Many people bought MA311, so, I really hope this case have been met by many people, and hopefully, some solved it.

Faulty hardware is usually extremely tough to get around.

Seeing as how I believe the problem to be with the MA301 and bridging with its needed promiscuouspromiscious mode, I think you will have better luck with Proxy ARP. With Proxy ARP all ethernet frames will be directly to the raw ethernet or MA301 MAC address.

I'm betting that Proxy ARP will also play a little nicer with some other things than having EBTables automatically reply to ARPs. At least I'm hoping that Proxy ARP will try to take target device state in to account.

I can remove the bridge if it can help. All I want is to remove the IP-NAT thing, so that my network get unified => transform the machine into a real transparent bridge, at least at the IP point of view. But, if I remove brctl bridging, I will need to recreate an other way (or the apckets will never go through ^^ ).

*nod*

Why not just use standard routing?

Facts are: I want bridging to gain homogeneous/unified network, but MA311 is not bridge friendly.

*nod*

This is a very important point to me, because it shows that it's only an ARP problem, and that brctl really helps a lot (it does actually forward packets from side to side). But, messing up arp tables is something really messy. I am surprised that this simple command does not work "as well" as it's iptables equivalent: the iptablei NAT does NAT for both questions and answers; I wonder why ...

Eh, IPTables goes a littlelitte further than it possibly should by providing the unNATing that it does. However 99+% of the time this is desired so it is ok.

In fact, I wonder if there could be two bugs in brctl:

Keep in mind that the ""problem is not with the brctl command (read: binary file). Brctl is just the user space utility to adjust bridging in the kernel, much like IPTables is the user space utility to adjust firewalling in the kernel.

Also, this is not a problem with bridging so much as it is a problem with the MA311 ethernet device. If you were using a different ethernet device we would not be having this discussion.

- answer not coming back through

The answers do not come back through because you have altered the destination of the ARP reply (source of the modified ARP requestreqeust) to be the MAC address of the MA3111. So by all rights bridging is not suppose to pass the ARP reply on.

- bug in --snat-arp

No, I don't think so. SNAT is doing what it is suppose to. At least in so far as modifying the "source hardwarehardare address" with in the ARP request packet. (You would probably want to modify the source MAC address of the ethernet frame carryingcarying the ARP requestreqeust too.)

In effect you are wanting a way to pass the ARP reply on to the internal system that initiated the original ARP request. This is more of a stateful operation verses the stateless operation that the majority of this operatesopeates on.

I did not detailed this point in my first post, but after the simple snat thing, host B get A's MAC in his ARP tables. Considering this point, plus tcpdumps just means: my ebtables rule does forward the question, but the question still contains A's MAC even when using --snat-arp (that should IMHO work "inside" the question). I can send details on this if you want within 24h. I would need to move two machines in the network to do that.

No, don't go to that trouble.  Do some reading on Proxy ARP first.

I wondered if brctl was bothered by the fact the answer comes back with it's own MAC as destination; once ARP tables are declared, all works fine, maybe because of IP routing tables; ARP queries seem to be more in trouble.

I don't think that the bridging portion of the kernel even considered passing the packet out the bridge because the destination MAC of the frame was to the bridge its self, not another system on the other side of the bridge.

Do some reading on Proxy ARP in the LARTC documentation: Pseudo-bridges with Proxy-ARP (http://lartc.org/howto/lartc.bridging.proxy-arp.html)



Grant. . . .
--
To unsubscribe from this list: send the line "unsubscribe netfilter" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[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