The world is slowly becoming a better place, and so today I thought that perhaps the right-click-to-share-my-internet-connection reality had come to Linux. I.e., I was in no mood to manually setup IP Masquerading and a DNS cache and a DHCP server on my Linux box.
I found no useful articles. I swear every one of them was written before Linux kernel version 2.6 was even introduced. Anyways, I use Debian, and I figured out there exist two wonderful packages: ipmasq and dnsmasq.
aptitude install ipmasq dnsmasq
It is then necessary to edit /etc/dnsmasq.conf to enable its built-in DHCP server. That file is well-commented; you shouldn’t have much trouble figuring it out. Note also that dnsmasq keeps current leases in /var/lib/misc/dnsmasq.leases by default. This is configured in /etc/dnsmasq.conf with the dhcp-leasefile directive.
Also, if ipmasq gives you a hard time about your kernel:
FATAL: Module ip_tables not found.
iptables v1.3.6: can’t initialize iptables table `nat’: Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
…then you need a kernel with ip_tables support. Here is a Gentoo wiki page about building a kernel with iptables support.
Here’s the kind of idiot’s guide I like to find: ConnectionSharing.
It seems that a package called firestarter available for both Debian and Ubuntu (and more) also has a fairly painless point-and-click sharing option, but it sounds like having this peacefully coexist with a more sophisticated DHCP setup on the internet network could get painful.