what kind of suggestions are you after? personally i'd say use ipcop, but if you want to build it yourself...
dhcp - install isc-dhcpd
dns - install bind
proxy - install squid
port forwarding - enable port forwarding in iptables
firewall - enable firewall functionality within iptables
|