Você deverá ter duas placas de rede instaladas no computador que será o
servidor DHCP e deverá ter feito as configurações anteriores do sistema básico.
1. Instalar o pacote DHCP como root:
# aptitude safe-upgrade
# apt-get update
# aptitude install isc-dhcp-server
Aguarde terminar a instalação. Deverá dar falha, 'failed' em vermelho. Isso é normal, uma vez que ainda não configuramos o DHCP.
Antes do próximo passo você já deverá ter sua subnet (subrede) planejada com seus endereços IP. O IP da placa de rede que irá servir o DHCP será também o IP do gateway/roteador da nossa configuração básica (no caso, a eth0). Tecnicamente falando, quando fazemos o compartilhamento não estamos transformando o
GNU/Linux em um roteador, somente estamos compartilhando os dados de entrada de uma interface de rede com a(s) outra(s).
2. Configure os endereços IPs das placas de rede:
# vim /etc/network/interfaces
Não mexa nas linhas iniciais do arquivo. As configurações abaixo das linhas iniciais devem ficar como está abaixo. Lembrando que a placa de rede onboard nem sempre é a eth0 e a offboard nem sempre é a eth1.
O arquivo abaixo é somente o exemplo da nossa configuração:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The looback network interface
auto lo
iface lo inet loopback
# Primeira interface de rede - offboard
allow-hotplug eth0
iface eth0 inet static
address 192.168.2.1
netmask 255.255.255.0
broadcast 192.168.2.255
# Segunda interface de rede - onboard
allow-hotplug eth1
iface eth1 inet dhcp
Salve e saia do arquivo.
Os números de IP devem estar de acordo com o arquivo
/etc/dhcp/dhcpd.conf que você mesmo irá configurar mais diante.
A placa de rede que recebe a Internet é a eth1. Deixei ela com IP dinâmico. Caso queiram fixar o IP da placa que recebe a Internet, no caso a eth1, ela deverá ter como gateway o IP do roteador. Lembrando que no arquivo
/etc/network/interfaces você deve acrescentar todas as placas de rede que estiverem instaladas na máquina: eth0, eth1, eth2... e assim por diante.
Verifique também o arquivo
/etc/resolv.conf, que deverá estar com um ou dois DNSs adicionados. Exemplo:
# vim /etc/resolv.conf
Dentro do arquivo deverá ter uma ou duas linhas:
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx
XXX são os números de IPs. Caso não tenha nada no arquivo, acrescente o IP do Gateway (roteador) ou do DNS da rede (se houver).
3. Caso exista proxy na sua rede, entre no arquivo abaixo:
# vim /etc/profile
E acrescente as seguintes linhas no final do arquivo:
http_proxy="http_proxy://ip_proxy:porta"
ftp_proxy="ftp_proxy://ip_proxy:porta"
export http_proxy ftp_proxy
Exemplo:
http_proxy="http_proxy://192.168.200.253:8080"
ftp_proxy="ftp_proxy://192.168.200.253:21"
export http_proxy ftp_proxy
Salve e saia do arquivo. Reinicie o sistema:
# shutdown -r now
4. Para configurar o serviço DHCP devemos alterar somente dois arquivos:
- /etc/default/isc-dhcp-server
- /etc/dhcp/dhcpd.conf
Entre no arquivo com o seu editor de texto favorito, o nano, o pico, o Vim etc. Usarei o Vim como exemplo:
# vim /etc/default/isc-dhcp-server
Na linha onde diz:
INTERFACES=""
Coloque entre as aspas a interface de rede que irá responder pelo DHCP. Exemplo:
INTERFACES="eth0"
Salve e saia do arquivo.
5. Edite:
# vim /etc/dhcp/dhcpd.conf
Comente as duas linhas que iniciam com option domain... colocando um # na frente.
Procure a linha onde tem escrito:
#authoritative;
E se já não estiver sem, tire o # da frente.
authoritative;
Após, procure a linha onde diz:
# This is a very basic subnet declaration.
Dê um enter colocando uma linha em branco e acrescente (antes leia abaixo a definição das linhas do arquivo):
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.5 192.168.2.25;
option routers 192.168.2.1;
option broadcast-address 192.168.2.255;
option domain-name-servers 192.168.2.2, xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx, 192.168.2.1;
}
host dns {
hardware ethernet XX:XX:XX:XX:XX:XX;
fixed-address 192.168.2.2;
}
Onde:
- Na primeira linha definimos a nossa subrede: 192.168.2.0 e a máscara dessa subrede: 255.255.255.0 (escolhemos isso dentro das 3 faixas de IPs reservados para redes internas privadas 10.0.0.0, 172.16.0.0 ou 192.168.0.0).
- Na linha range definimos a nossa faixa e a quantidade de IPs que queremos que o DHCP distribua (depende do número de computadores que temos na rede).
- Na linha option routers definimos o IP do roteador, que no nosso caso, deve ser o mesmo da placa de rede que responde pelo DHCP, a eth0.
- Na linha option broadcast-address definimos o broadcast da rede.
- Na linha option domain-name-servers definimos por primeiro o DNS interno da rede (se houver) seguido de DNSs públicos e abertos e terminando sempre com o IP do gateway/roteador para redundância. Caso não haja DNS interno na rede esta linha deve ser omitida.
- No bloco "host dns..." estamos fixando o IP do DNS através do MAC da placa de rede. Para ver o MAC da placa de rede execute ifconfig e veja o HW da placa eth0 (offboard) do DNS e coloque ali em cima. Caso não haja DNS interno na rede este bloco deve ser omitido.
Salve e saia do arquivo.
6. Compartilhando a conexão.
Criando o arquivo de configuração do iptables:
Obs.: Aqui você pode dar o nome que quiser ao arquivo.
# vim /etc/init.d/firewall.sh
Dentro do arquivo coloque exatamente o seguinte:
#!/bin/bash
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
A placa eth1 é a que recebe a Internet. Se a sua for a eth0, você deve colocar... -o eth0 -j... Atente para isso: a interface que vai ali é SEMPRE a interface que recebe a Internet, ou seja, é nesta placa de rede que deverá ser conectado o "fio" de entrada dos dados/Internet.
A primeira linha é somente um comentário que identifica o interpretador de comandos, no caso o bash.
Na segunda linha estamos levantando o módulo de compartilhamento.
Na terceira linha estamos ativando o compartilhamento.
Na quarta linha estamos dizendo para o iptables que tudo que entrar pela placa de rede eth1 deve ser compartilhado com as outras placas de rede do computador.
Salve e saia do arquivo.
É uma configuração extremamente básica e sem segurança nenhuma. Para maior aprofundamento estude as regras do iptables.
Agora vamos transformar o arquivo que criamos em um arquivo executável:
# chmod +x /etc/init.d/firewall.sh
Vamos fazer com que esse arquivo seja executado automaticamente na inicialização. Entre no arquivo rc.local:
# vim /etc/rc.local
Logo acima da linha 'exit 0', coloque o caminho para o arquivo, ficando assim:
/etc/init.d/firewall.sh start
exit 0
Salve e saia do arquivo.
7. Reinicie o sistema:
# shutdown -r now
Com isso o servidor deverá estar fazendo o compartilhamento e servindo endereços IPs para a rede local (LAN).
A lógica é a seguinte: a Internet entra por uma placa de rede, o sistema 'pega' essa Internet e através do arquivo do iptables faz com que ela seja distribuída para as outras placas de rede, não importando quantas mais tenha na máquina.
Para remover completamente o serviço de DHCP da máquina, se for o caso, execute:
# apt-get purge isc-dhcp-server
Depois coloque todas as placas de rede com IP automático (DHCP) e reinicie:
# shutdown -r now