DHCP + NAT = Servidor de Internet

A configuração do dhcp eu li só esta pequena pincelada sem nenhum aprofundamento teórico: http://www.guiadohardware.net/tutoriais/servidor-linux-domestico/pagina4.html.

Essa pérola sobre o NAT eu li em http://www.revsys.com/writings/quicktips/nat.html.

A seguir é uma adaptação destas dicas para as minhas necessidades.

Cenário
Essa necessidade surgiu para mim quando eu passei a TER que usar conexão 3G por não chegar ADSL na minha nova moradia. Só que esse lance de ter um modem 3G tipo um pendrive é uma coisa meio individualista, e eu estava acostumado a ter a minha redezinha com vários computadores conectados a internet pra toda a família.

Pois bem, uma solução rápida e rasteira que encontrei foi me conectar a internet com meu laptop (Ubuntu GNU/Linux), conectar meu laptop na redezinha local (para isso é necessário um HUB ou algo do tipo), habilitar um servidor DHCP no laptop e habilitar NAT no laptop. Pronto! Tenho um servidor de internet!

É claro que não é muito interessante fazer isso em redes grandes! Na verdade eu só testei servindo internet para apenas um computador além do laptop com o GNU/Linux, mas não vejo problemas em servir para mais unzinho (dividir com mais de três deve tornar a navegação muito irritante).

Como Fazer
Só lembrando: estou conectado a internet via modem 3G utilizando a porta USB e tenho a interface ethernet livre.

Certifique-se que o dhcpd está instalado:

apt-get install dhcp3-server


Depois crie um arquivo de configuração para o dhcpd. Eu criei um arquivo chamado mdhcpd.conf da seguinte maneira (qualquer dúvida, olhar a fonte de consulta):

# Configuração do dhcpd para se tornar um servidor de internet
# para a rede local.
#
# feito por meleu, março/2009
#
# fonte de consulta:
# http://www.guiadohardware.net/dicas/configurando-servidor-dhcp.html
#

##########
ddns-update-style none;

# Tempo em segundos para revalidação dos endereços IP
default-lease-time 600;

# Tempo máximo em que uma estação usa um determinado IP
max-lease-time 86400;

# Este servidor será o servidor oficial de DHCP na rede local,
# caso contrário a diretica 'authoritative' deve ser comentada
authoritative;

# o endereço da rede local será 192.168.60
subnet 192.168.60.0 netmask 255.255.255.0 {

# os endereços IP dos clientes vai de 192.168.60.100-200
range 192.168.60.100 192.168.60.201;

# IMPORTANTE: é necessário que a interface do mubuntu com a
# rede local tenha IP 192.168.60.1
option routers 192.168.60.1;

# servidores DNS (são os que consegui pela conexão do Claro 3G)
# posteriormente posso tentar via OpenDNS
option domain-name-servers 200.169.118.22,200.169.117.22;

# broadcast, o óbvio
option broadcast-address 192.168.60.255;
}



Beleza. Até aqui eu só faço a primeira vez. As instruções daqui pra baixo é que eu faço quando quero tornar meu laptop um servidor de internet.

Primeiro defino um endereço IP para eth0. Pode ser desse jeito:

ifconfig eth0 192.168.60.1 netmask 255.255.255.0


Agora chamamos o dhcpd e dizemos para ele que o arquivo de configuração é o mdhcpd.conf:

dhcpd3 -cf mdhcpd.conf


E pra finalizar, habilitamos o NAT bem rápido e rasteiro. Vale ressaltar que eth0 é a minha interface com a rede local, e ppp0 é a interface conectada a internet (pode ser necessário fazer alguma adaptação). Qualquer dúvida, consultar a documentação do iptables.

sysctl net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -A FORWARD -i ppp0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT


Pronto! Agora eu e minha esposa não ficamos mais brigando para ver quem vai acessar a internet!

tags: Linux,

comments powered by Disqus