Tenho visto muitas dúvidas de como fazer a rede local e compartilhar internet no Gnu/Linux. Pretendo com 
esta pequena dica, em simples passos, informar como fazer isso. Também é possível ver o vídeo de como 
deve ser feito e como é o funcionamento.
Como compartilhar Internet no Gnu/Linux:
No caso temos um micro com duas interfaces de rede, no caso a eth0 entra internet e eth1 vai usada pra 
ser feito a rede local. Editar o arquivo interfaces:
# nano /etc/network/interfaces
auto eth1
iface eth1 inet static
        address   192.168.20.1
        netmask   255.255.255.0
        network   192.168.20.0
        broadcast 192.168.20.255
E depois executar o restart o networking:
# /etc/init.d/networking restart
Recomendo remover o network-manager-gnome e outros gerenciadores de rede gráficos, pois estes 
aplicativos sempre acabam conflitantes com networking.
Vamos realizar a instalação do dhcp3-server no Debian Squeeze, que mudou nome pra isc-dhcp-server, é 
importante saber pois ao ligar o serviço tem usar nome novo. No Ubuntu tem mantém o nome de dhcp3-
server (veja na distro que usa qual o nome).
Debian Squeeze:
# apt-get install isc-dhcp-server
Ubuntu:
# apt-get install dhcp3-server
Archlinux:
# pacman -S dhcp
Confira na sua distro e faça a instalação, e vamos pra configuração. Primeiro vamos informar qual placa o 
isc-dhcp-server vai ouvir, edite o arquivo:
# nano /etc/default/isc-dhcp-server
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth1"
No caso vai ser  eth1, pois usaremos esta interface.
Vamos configurar o dhcpd.conf - pra assim criar o range de ips e informar os valores da rede.
Debian Squeeze:
# nano /etc/dhcp/dhcpd.conf
Ubuntu:
# nano /etc/dhcp3/dhcpd.conf
Vamos editar algumas linhas e informar valores pra nossa rede, o mais importante é informar valores pra: 
option domain-name-servers,  option routers, subnet  e o range -  deve ficar algo próximo a isso:
ddns-update-style none;
# option definitions common to all supported networks...
option domain-name "redecasa";
option domain-name-servers 192.168.20.1,208.67.222.222,208.67.220.220;
default-lease-time 600;
max-lease-time 7200;
# This is a very basic subnet declaration.
subnet 192.168.20.0 netmask 255.255.255.0 {
  range 192.168.20.20 192.168.20.220;
  option routers 192.168.20.1;
}
Feito tudo... execute:
Debian Squeeze:
# /etc/init.d/isc-dhcp-server restart
Ubuntu:
 sudo /etc/init.d/dhcp3-server restart
Bind9 pode ajudar a fazer cache dos domínios que são constantemente acessados:
# apt-get install bind9
Script de firewall com NAT 
Caso não tenha nenhuma regra de firewall, crie este arquivo:
# nano /etc/init.d/compartilhamento
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
# Limpando as tabelas
iptables -F
iptables -t nat -F
iptables -t mangle -F
# Macarando conexões da rede
# se sua conexao estiver na interface ppp0 basta trocar o eth0 por 
ppp0
# a interface ppp0 é usada tb em dial-up, entao, neste caso, troque o eth0 
# por ppp0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Dando permissão de executar e colocando pra iniciar no boot:
# chmod a+x /etc/init.d/compartilhamento
# update-rc.d -f compartilhamento defaults
Caso queria desligar o script compartilhamento rode na hora do boot, use pra remover:
# update-rc.d -f compartilhamento remove
Qualquer dúvida, veja o vídeo informado no início da dica.