So you have two network cards on the same subnet.
When you disconnect one the other does not reply.
where are you pinging this machine from? The local net (i.e. the same subnet that the cards are on) or a remote net ?
I think that you problem may be that you cannot setup two default gateways.
probably at this time you routing table looks like this:
[pre]
netstat david@jing~>netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
205.150.136.2 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
205.150.136.3 0.0.0.0 255.255.255.255 UH 0 0 0 eth1
205.150.136.0 0.0.0.0 255.255.255.192 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 205.150.136.1 0.0.0.0 UG 0 0 0 eth0
david@jing~>
[/pre]
see how there is only one "default gateway" (the line that begins 0.0.0.0) ?
if you are ping from 78.45.56.2 then packets would come from 78.45.56.2 , go to a pile of other routers , then to 205.150.136.1 and then to eth1 (the router knows how to get to eth1). but the reply to the ping will not go out eth1. All your computer knows is that it must send the reply to 78.45.56.2 which , according to you router table means it must go out eth0 (which you have disconnected). I suggest testing this theory by pinging you machines two interfaces from a computer on the same subnet as those interfaces. see picture
http://www.quadratic.net/archive/ima...ps/dualnic.gif
You know, now that I think of it how does the linux box know which interface to send back a packet through if the reply should go to a machine on the same subnet as the two interfaces? answer: it doesn't (least not in 2.2 kernels).
there are two ways I can think of for fixing this problem:
1. linux 2.4 iptable "source routing" , which basically says "send packets out the interface thay came in on"
2. advanced routing (BGP with MRTD
http://www.mrtd.net/ )
