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 192.168.1.1 netmask 255.255.255.0
ifconfig eth1 10.10.10.254 netmask 255.255.255.0

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.