IPNetShareX. For OS 8 or 9, give IPNetRouter a try.
If your connection uses PPPoE, you'll need to enable that first. Open System Preferences (from the Apple menu) and click on Network. Next to "Show" select Built-In Ethernet, if it doesn't say that already, then click the PPPoE tab. Check the box "Connect using PPPoE", then enter the Account Name and Password for your DSL service. (Service Provider and Service Name aren't typically necessary.) See this faq for more details.
Once you've got PPPoE up and running (that is, you can use the Internet from the computer you're using as the router), turning on the router feature (Internet Sharing) is pretty easy. Go back to System Preferences (if you're still in the Network pane, click Show All in the upper left corner) and click Sharing. Click the Internet tab. If you want to share with others on your Ethernet connection (i.e. you have a LAN), check "Share the connection with other computers on Built-In Ethernet". If the host has an AirPort card and you want to share with wireless clients, check "Share the connection with other computers on AirPort". If you want to do both, check both boxes. Then click the Start button.
Now, for Ethernet, you just need to connect the 'router computer' to the other computers via a hub or switch (not necessary for AirPort). Then just set each client computer to get its address using DHCP. Alternatively, you can configure the clients manually with router 192.168.2.1, subnet mask 255.255.255.0, and IP address 192.168.2.X (X can be anything from 2 to 254, as long as it's unique to each client).
Keep in mind that while NAT effectively firewalls the computers behind the router, the router machine itself will have a number of ports open unless you enable the firewall (in the Sharing pane of System Preferences, click the Firewall tab, click Start, and use the scrolling list to select any ports you may want to keep open).
(Ed. note) Caveat from Apple:
If your Internet connection and your local network use the same port (built-in Ethernet, for example), investigate possible side effects before you turn on Internet sharing. In some cases (if you use a cable modem, for example) you might unintentionally affect the network settings of other ISP customers, and your ISP might terminate your service to prevent you from disrupting their network.
Feedback received on this FAQ entry: