bridging and arp

Matthias Barnutz (barney@lupus.ping.de)
Mon, 21 Apr 1997 21:44:07 +0200


Hello!

I encountered a problem with the bridging functions of the kernel
(2.0.25) and ARP.

What I want is the following: A linux box (maniac) has two
ethernet cards (NE2000 and 3COM 3c509) and should bridge every
protocol between the two networks. Additionally, maniac should
act as printserver for (at least) on side of the network (eth0).

So I first configured maniac as if it only had one network
adapter and configured routing. It worked fine for computers
connected to eth0. Then I issued the following commands:

> ifconfig eth1 up
> ifconfig eth0 promisc
> ifconfig eth1 promisc
> brcfg -ena

>From now on, bridging is working, but it is not possible to get
an ip connection. While pinging maniac, tcpdump showed why:

root@emil:~ > tcpdump -e
tcpdump: listening on eth0
19:21:33.780623 0:40:5:2f:28:0 0:0:1b:3c:d8:bc ip 98:
emil.figge.uni-dortmund.de > maniac.figge.uni-dortmund.de: icmp: echo request
19:21:33.780623 0:0:1b:3c:d8:bc 0:0:1b:3c:d8:bc ip 98:
maniac.figge.uni-dortmund.de > emil.figge.uni-dortmund.de: icmp: echo reply

Look at the MAC addresses. maniac has 00:00:1b:3c:d8:bc, emil has
00:40:05:2f:28:00. In the reply, maniac inserted the wrong MAC
address (his own), but the correct IP address. Maniac doesn't matter
what the arp cache says, if it's empty, or if there's a correct
entry: Maniac just uses his own MAC address.

Is this a known problem? Is it a bug in the kernel? Is there a
solution? I don't want to use 2.1.x kernel, if possible. And:
routing is not an alternative.

If you need more information (output of ifconfig, routing table,
kernel configuration), just email me.

Greetings,

Matthias Barnutz