I have two Linux (RH v9) routers connected to the Internet (separate DSL connections), each with two EtherNet cards. Router #1 has static IP address "a.a.a.1" for the internal LAN, and static IP address "x.x.x.x" for the Internet connection; here''s what the "route command shows: Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface x.x.x.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 a.a.a.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 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 x.x.x.1 0.0.0.0 UG 0 0 0 eth1 Router #2 has static IP address "a.a.a.2" for the internal LAN, and DHCP IP address "y.y.y.y" for the Internet connection; here''s what the "route command shows: Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface y.y.y.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 a.a.a.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 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 y.y.y.1 0.0.0.0 UG 0 0 0 eth1 This works, but since router #1 has several server daemons running (HTTP, DNS, etc), and since router #2 is the default gateway for internal hosts on the a.a.a.0/24 network, any access to servers on router #1 goes out through router #2 and the Internet in order to get to router #1 (and similarly to get back); this is a performance hit due to the (relatively) slow outbound DSL speeds (128Kbit/s) involved. So, I decided to add a "shortcut" route on router #2: "route add x.x.x.x eth0"; here''s what the "route command now shows: Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface x.x.x.x 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 y.y.y.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 a.a.a.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 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 y.y.y.1 0.0.0.0 UG 0 0 0 eth1 This solves the performance problem for accessing servers on router #1, BUT now any access initiated from router #1 to router #2 fails. I added logging entries in the "mangle" table for "iptables", and it shows the packets from router #2 to router #1 getting through the "PREROUTING" stage, but no further. If I remove the added route, access from #2 to #1 works AND I see the packets getting beyond the "PREROUTING" stage to either the "INPUT" or "FORWARD" stages. Note that when testing this, there is nothing in the "filter" or "nat" tables. Now, I can solve this by a reciprocal "route add y.y.y.y eth0" on router #1 (which works). However, y.y.y.y is a DHCP address from my ISP, so that''s only a temporary fix until the IP address changes. My big question is to really understand what is going on. Here is the iptables/routing diagram I got from Rusty''s documentation: --->PRE--->[ROUTE]-->FWD-------->POST----> Conntrack | Mangle ^ Mangle Mangle | Filter | NAT (Src) NAT (Dst) | | Conntrack (QDisc) | [ROUTE] v | IN Filter OUT Conntrack | Conntrack ^ Mangle | Mangle | NAT (Dst) v | Filter Why is the routing code apparently dropping the packets from router #1 to router #2 (but only for connections initiated from #1)? -- Dean