Layer jump in Linux?

Jose Celestino
2002-04-23T23:36:03Z

First of all sorry if this is not the right list for this question/doubt.

I noticed a while ago that I can ping a machine on a diferent network, with no
IP on that network, if I have a network interface on the same broadcast domain
as that machine''s interface if I add a route to that IP through the
local IP in
the same broadcast domain.

Did I make myself clear ? :)

Well, what I have is this:

 /--------\
 |        |                           /--------\
 | Linux1 |-- aaa.bbb.ccc.ddd/24 -----| Switch |
 |        |                           \--------/
 \--------/                                |
                                           |
                                   eee.fff.ggg.hhh/24
                                           |
                                      /---------\
                                     |           |
                                     |   Linux2  |
                                     \___________/

(aaa.bbb.ccc.0) != (eee.fff.ggg.0)

Linux1 should not be able to ping Linux2 except through a gw, right?
(They''re not on the same network so the packet should go through the
default gw if a less generic route isn''t defined, of course)

And the packet should go on until it reached a router/gw with a IP
on the eee.fff.ggg.0/24 net and it would then be delivered to
eee.fff.ggg.hhh.

The problem is that the linux stack seems to completely "short
circuit"
from layer 3 to layer 2 if I add a gw to eee.fff.ggg.hhh through
aaa.bbb.ccc.ddd (route add -host eee.fff.ggg.hhh gw aaa.bbb.ccc.ddd);
it issues an arp request regardless if the destination
IP is on the local network or not.

Is this a correct behaviour? Am I missing something?

Note: this only happens between 2 linuxes, I tried between 2 FreeBSDs
but the IP stack behaves diferently.

TIA.

--
Jose Celestino <japc@co.sapo.pt> Systems::SAPO.pt http://www.sapo.pt
---------------------------------------------------------------------
Titanic 1912 / Hindenburg Zeppelin 1937 / Microsoft Windows 2000
OpenBSD claudia 3.0 GENERIC#94 i386