I've tried asking about this on Usenet, and also I've read a few tutorials, but I'm finding it hard to get answers.

Let's say I've two interfaces: eth0 and eth1.

I want there to be a virtual router between eth0 and eth1. Packets arriving at eth0 should be forwarded to eth1, and vice versa. I'm not talking about NAT, or IP masquerading, but simply about forwarding packets.

So lets say we do the following:
ifconfig eth0 netmask
ifconfig eth1 netmask

What do I do next to ensure that when a packet arrives at eth0, that it will be forwarded on to eth1, and vice versa.

Once I've got that down I'll move on to implementing NAT.