Coyote Linux is based on the Linux Router Project, and aims to make setting up a firewall-protected LAN simple. It's specifically geared for the home user, who will use a single PC as a router, firewall, and DHCP host for an internal network with a PPP or cable/DSL connection to the Internet.
What's nice is that the LRP is designed to fit on a floppy. So basically you can get an old PC, perhaps a 486, with a working floppy drive and two NIC cards, and that's all you need for your home network frontend.
They aim to make it so easy, they even provide a windows wizard to configure the floppy :-) . Well that would be debasing to anyone moderately familiar with TCP/IP networking, so I went with their shell script configuration utility. The worst part about Coyote is that they have almost no documentation either on their web site or provided with the distribution. But it seemed simple enough so I forged ahead.
The script (makefloppy.sh) asks a series of questions, then writes a LRP boot floppy. First it asks for IP info on the local network. Basically that can be whatever you want, although several blocks are set aside for this purpose (10.0.20.*, and the default they use, 192.168.0.*). Then it asks for your Internet connection details, such as whether it is provided by DHCP or is static. Finally it asks for the module name of your local ethernet device and your remote ethernet device. Initially I messed this up by thinking it wanted module names as they are in a Linux kernel config (makes sense, eh?)... but no, they're listed in a drivers directory. E.g. "3c503" for my 3Com card and "wd" for my Western Digital.
It also asks for IRQ and base address for the cards. At this point I said "What? I don't know that!" I hadn't even booted the machine (an IBM brand Pentium 100 our neighbors were desperate to get rid of) with these free hand-me-down cards installed (total system cost, $50 !). So I left the IRQ and base address fields blank. Made the floppy, and it booted, detecting the cards properly. I slung around CAT5 cables, configuring the physical network (see below), and rebooted. However it only brought up one interface.
Physical Network Layout
Then I realized the mistake. The Coyote script had asked for one of the cards to be the local interface (i.e. between the hub and the router) and one to be the external (between the router and the cable modem). So it was just a matter of plugging the right cable into the right device.
At that point it worked! I Set up my Linux box to use the router PC as its DHCP server, did the same for the windows box, and all was golden!
Well not quite. There were a couple of problems with IP masquerading. The real audio player could not connect until I told it to use TCP only instead of resorting to multicast or UDP. To use OpenNap, you'll need to set up a port forwarding rule. However, these small problems are insignificant to the benefits of having greatly increased security and the flexibility to add stations to the network at will.
There are a couple of services it would be great to incorporate into Coyote. The Internet JunkBuster filtering proxy (it's great at removing ads from web pages). A caching DNS, say, if one had enough memory to store the cache on a ramdisk. It'd be truly cool if SNMP/MRTG were integrated for live stats on router traffic (say, through the kernel module khttpd available only on the local interface).
One other important thing to note is that to reconfigure, all you have to do is make a new floppy. You can totally play around with all the settings, or new versions, and going back is trivial.
UPDATE: I've been running Coyote Linux for about two years. It has *never* crashed, locked up, or malfunctioned in any way. The only time I've powered down the machine is when leaving on trips. After about 18 months, I upgraded to Coyote 1.31, when I switched over to Cox.net from @Home. Now I use DHCP internally and externally, it works without a hitch.