This howto assumes you already configured your kernel to support IP masquerade. See references below for information on configuring your kernel for a linux firewall.
This setup uses a star/hub configuration. It will set up a cipe connection from Machine A to Machine B and another from Machine A to Machine C.
Machine A
eth0: 192.168.1.1
eth1: real ip 1
/ \
/ \
Machine B Machine C
eth0: 192.168.2.1 eth0:192.168.3.1
eth1: real ip 2 eth1: real ip 3
eth0 is the local network (fake address)
eth1 is the internet address (real address)
Port A is any valid port you would like to choose
Port B is any other valid port you would like to choose
Key A is any valid key you would like to choose (read cipe doc for info)
Key B is any valid key you would like to choose
The ip-up scripts currently only allow class c traffic through the cipe interface. If you wish for machine B to communicate with Machine C then you will need to change the appropriate ip-up and ip-down scripts. Specifically, you need to change the ptpaddr and myaddr netmasks. There are two ip-up scripts, one for ipchains and one for ipfwadm. Same with the ip-down scripts. Change the appropriate incoming, outgoing, and forwarding cipe interface firewall rules netmask from /24 to /16. Any cipe firewall rule changes you make in ip-up for ipfwadm, make sure the ip-down script reflects the change so it will be properly removed from the list when the interface goes down. For the ipchains file, anything added in a chain does not need ip-down reflection since ip-down will flush all the rules in the user defined chain.
You will also need to uncomment the network route in the rc.cipe for Machine B and C that adds each others network to their route table.