7
Montando Uma Sub-Rede Com Debian/Ubuntu, DHCP e iptables Introdução Outro dia numa das minhas threads de atividades (um cara tem de ganhar a vida :P), tive de montar uma subrede num laboratório aqui da UFPE. Não foi nada extraordinário e o povo que mexe com Linux deve estar careca de saber como faz: só um servidor DHCP e Firewall com NAT. Mas como servidores não são minha praia foi uma novidade interessante e resolvi anotar como foi caso precise depois, provavelmente num dia em que já terei esquecido como fiz a primeira vez. :P Para esse trabalho instalei o Ubuntu 6.06 LTS Server Edition (mas também podia ter sido o Debian Etch ) numa máquina mais ou menos, com uma placa de rede onboard e outra off. Esse cenário é bem parecido com uma rede doméstica ou de um pequeno escritório, com vários computadores acessando a internet através de uma máquina modesta, então espero que seja útil para o máximo de pessoas possível.

Linux-Montando Uma Sub-Rede

Embed Size (px)

DESCRIPTION

Essa uma configuração basica pra montar uma sub-rede no ambiente linux

Citation preview

Page 1: Linux-Montando Uma Sub-Rede

Montando Uma Sub-Rede Com Debian/Ubuntu, DHCP e iptables

Introdução Outro dia numa das minhas threads de atividades (um cara tem de ganhar a vida :P), tive de montar uma subrede num laboratório aqui da UFPE. Não foi nada extraordinário e o povo que mexe com Linux deve estar careca de saber como faz: só um servidor DHCP e Firewall com NAT. Mas como servidores não são minha praia foi uma novidade interessante e resolvi anotar como foi caso precise depois, provavelmente num dia em que já terei esquecido como fiz a primeira vez. :P Para esse trabalho instalei o Ubuntu 6.06 LTS Server Edition (mas também podia ter sido o Debian Etch) numa máquina mais ou menos, com uma placa de rede onboard e outra off. Esse cenário é bem parecido com uma rede doméstica ou de um pequeno escritório, com vários computadores acessando a internet através de uma máquina modesta, então espero que seja útil para o máximo de pessoas possível.

Page 2: Linux-Montando Uma Sub-Rede

Interfaces de Rede A primeira coisa a fazer é configurar as interfaces de rede, eth0 (para este tutorial, no seu caso pode ser diferente) para receber IP dinâmico fornecido pelo DHCP da rede exterior, e eth1, que será vista como gateway pela subrede, terá um IP estático. Como nossa pequena rede vai estar atrás de um firewall podemos usar qualquer faixa de IP, o mundo exterior só enxergará o IP da interface eth0 do firewall.

O arquivo de configuração de interfaces de rede no Debian/Ubuntu é o /etc/network/interfaces:

# The loopback network interfaceauto loiface lo inet loopback## The primary network interfaceauto eth0iface eth0 inet dhcp## The secondary network interfaceauto eth1iface eth1 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255

Depois das alterações reinicie as interfaces de rede:

/etc/init.d/networking restart

Page 3: Linux-Montando Uma Sub-Rede

Firewall com iptables Taí uma coisa que não vou explicar em detalhes aqui, até porque estou aprendendo agora. :P É um assunto bem popular e você pode encontrar mais informações pela internet afora. [1], [2], [3], [4] e [5]

Primeiro, edite o arquivo /etc/sysctl.conf e descomente a linha com a string net.ipv4.ip_forward. Em seguida use o comando:

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Esta regra fará com que as requisições das máquinas na subrede sejam enviadas para fora como se fossem provenientes do gateway, que por sua vez retornará as respostas para os clientes apropriados.

Escrevendo as Regras na Pedra

Do jeito que fizemos as regras serão perdidas na primeira reinicialização do servidor. Então vamos usar o comando iptables-save e colocá-las a salvo num arquivo em local apropriado.

# iptables-save > /etc/network/iptables.rules

Então criamos um script para carregar as regras durante a inicialização. Salve-o com o nome iptables no diretório /etc/network/if-up.d, que é onde ficam os scripts relacionados com "levantar" as interfaces de rede; em contraste com if-down.d, onde estão os de "derrubar".

#!/bin/sh# script: iptables/sbin/iptables-restore /etc/network/iptables.rules

Se quiser você pode usar iptables para fechar portas desnecessárias para quem está na rede externa, mas isso fica como dever de casa.

Testando

Antes de prosseguir teste se o servidor está conectando usando o ping.

$ ping www.google.com

Agora conecte uma outra máquina no hub ou switch (você não espera fazer uma rede sem isso, espera?[6]), onde também deve estar conectada a interface eth1 (em nosso diagrama) do servidor.

Configure a máquina com um endereço estático da subrede que criamos, indicando o IP do gateway, conforme este /etc/network/interfaces:

# The loopback network interface

Page 4: Linux-Montando Uma Sub-Rede

auto loiface lo inet loopback## The primary network interfaceauto eth0iface eth0 inet static address 192.168.1.50 netmask 255.255.255.0 network 192.168.1.0 gateway 192.168.1.1 broadcast 192.168.1.255

Perceba que o valor gateway aponta para servidor. Abra um navegador e se tudo estiver bem sua máquina cliente deve poder acessar a web.

Page 5: Linux-Montando Uma Sub-Rede

Servidor DHCP No teste anterior configuramos um cliente com IP estático, mas essa situação está longe do ideal quando temos algumas máquinas na subrede. Para evitar configurar cada uma delas manualmente (e fazer tudo de novo em caso de mudanças), vamos configurar um servidor DHCP. Instale o pacote:

# apt-get install dhcp3-server

A primeira coisa é impedir o DHCP de oferecer IPs na interface de rede externa. Isso causaria conflitos com o servidor DHCP da rede externa, e algum SysAdmin podia ficar chateado com você e derrubar sua conexão para todo o sempre como castigo. Então edite o arquivo /etc/default/dhcp3-server, procure a string INTERFACES, que diz para onde o DHCP deve oferecer IPs e mude para:

INTERFACES="eth1"

Não canso de lembrar que eth1 é a interface para nossa rede interna.

[editar]

dhcpd.conf

As informações de IP, máscara de rede e gateway padrão fornecidas para os clientes da rede interna são configuradas no arquivo /etc/dhcp3/dhcpd.conf.

# Nao atualiza DNS quando um IP eh concedido.ddns-update-style none;option domain-name "minharede.cinlug-br.org";## Nome do servidor DNS, nesse caso usei o servidor da rede externa.# Podemos ter varios servidores, separados por virgulas.# Tambem eh possivel usar hostnames no lugar de IPs.option domain-name-servers 150.161.6.1;## Tempo padrao e maximo, respectivamente,# da duracao da concessao do IP.default-lease-time 3600;max-lease-time 7200;## Indica onde devem ser guardados os logs do DHCPD.# A principio serao guardados em /var/log/daemon.log,# mas o local pode ser alterado no arquivo /etc/syslog.conflog-facility local7;## Configuracoes da subrede para onde o DHCP concedera IPs.subnet 192.168.1.0 netmask 255.255.255.0 { # Faixa dos IPs a serem concedidos. range 192.168.1.100 192.168.1.250; # Endereco do gateway padrao. option routers 192.168.1.1;}

Page 6: Linux-Montando Uma Sub-Rede

O servidor de DNS indicado para os clientes via DHCP pode ser o mesmo usado pelo firewall (você pode ver qual é olhando /etc/resolv.conf). Indicar o nome do host é uma alternativa mais prática, pois caso o IP do DNS mude, você terá de alterar o dhcpd.conf.

Reinicie o servidor DHCP

# /etc/init.d/dhcp3-server restart

e pode colocar seus computadores na rede interna. Lembre-se de mudar o /etc/network/interfaces daquele computador que você usou no teste para usar DHCP em lugar de IP estático.

auto eth0iface eth0 inet static

Se quiser ver que máquinas receberam IPs