2 de fev de 2016

Debian 7, DHCP, DNS e Squid




Esse post será um tutorial de como instalar o DHCP, DNS e Squid em um Debian 7. Sem muita enrolação, seguem os passos abaixo.



1 - Interfaces de Rede:

Nesse exemplo, estou instalando tudo em máquina virtual. Precisamos de duas interfaces de rede. Então, após o Debian 7 instalado na máquina virtual, vamos habilitar duas interfaces de rede. Uma delas vai ser por onde os clientes vão conectar, e a outra será a "saída" para a internet.

Para fazer isso, no VirtualBox, clique com o botão direito do mouse na máquina virtual do seu servidor Debian e vá em Configurações. Agora clique em Rede no menu lateral. O Adaptador 1 já deve estar configurado como NAT. Deixe-o assim. Habilite o Adaptador 2 como Rede Interna. Clique em OK e inicie o servidor Debian.



Agora vamos configurar a interface de rede que irá servir os clientes.
Em um terminal, torne-se root com o comando su root e execute os passos seguintes.

nano /etc/network/interfaces

Acrescente as seguintes linhas no final do arquivo:

auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
broadcast 192.168.0.255

Salve com o comando CTRL+o, ENTER, CTRL+x.
Para que as alterações tenham efeito, vamos reiniciar serviço networking com o comando abaixo:

service networking restart

Para confirmar que funcionou, repare que ao executar o comando ifconfig a interface eth1 está com configuração estática e com o IP 192.168.0.1.


2 - DHCP

A instalação do Servidor DHCP é bem simples. Basta executar o comando abaixo:

apt-get -y install dhcp3-server

Após a instalação, o servidor automaticamente tentará iniciar e irá falhar. Isso é normal pois ainda faltam algumas configurações.

A primeira configuração que vamos fazer é definir qual é a sub-rede que vamos servir, range de IP's ofertados, entre outros. Para isso, execute os passos abaixo:

nano /etc/dhcp/dhcpd.conf

Insira as linhas abaixo em alguma área vazia do arquivo (Exemplo: linha 29):


subnet 192.168.0.0 netmask 255.255.255.0 {
   range 192.168.0.100 192.168.0.200;
   option routers 192.168.0.1;
   option domain-name-servers 8.8.8.8,8.8.4.4;
   option broadcast-address 192.168.0.255;
}


Para salvar, CTRL+o, ENTER, CTRL+x.
Ainda precisamos definir em qual interface vamos servir o serviço DHCP. Para isso, realize os passos seguintes.

nano /etc/default/isc-dhcp-server

A última linha do arquivo deve ficar da seguinte maneira:

INTERFACES="eth1"

Para salvar, CTRL+o, ENTER, CTRL+x.
Para fazer efeito, vamos reiniciar o serviço networking e o DHCP com os comandos:

service networking restart
service isc-dhcp-server restart

Se uma linha como a seguinte aparecer, quer dizer que provavelmente funcionou.


Se der algum erro durante essa parte do "Starting" quer dizer que você fez alguma coisa errada.

Para testar, vou utilizar um Windows 7 no VirtualBox configurado como Rede Interna também, e além disso, configurado para "Obter um endereço IP automaticamente".




Se você tiver feito tudo corretamente até agora, o Windows 7 irá obter uma configuração de rede automaticamente, as quais foram fornecidas pelo Servidor DHCP.



Isso significa que nosso servidor DHCP está funcionando corretamente. Mais tarde iremos alterar uma configuração dele, mas já já a gente fala disso.


3 - DNS

Para instalar o Servidor DNS, realize os passos abaixo:

apt-get install -y bind9

Agora vamos adicionar algumas configurações manuais de DNS. Vamos adicionar os domínios e os respectivos endereços pelos quais o servidor irá responder. Para isso siga os passos abaixo:

nano /etc/bind/named.conf.default-zones

Após a última linha adicione o seguinte (adapte de acordo com o domínio que desejar):

zone "teste.com.br" {
        type master;

        file "/etc/bind/db.teste.com.br";
};


Agora vamos precisar criar o arquivo /etc/bind/db.teste.com.br
Para isso, vamos usar como base outro arquivo. Siga os passos seguintes:

cp /etc/bind/db.empty /etc/bind/db.teste.com.br
nano /etc/bind/db.teste.com.br

Agora edite o arquivo até que ele se pareça com o seguinte:



A configuração do bind9 está quase pronta, mas precisamos testar. Para isso, vamos alterar o DNS do nosso próprio servidor. Para isso, realize os passos seguintes:

ifconfig eth0

Anote qual é o IP dessa interface. No meu caso é 10.0.2.15

nano /etc/resolv.conf

Comente todas as linhas que tenham nameserver
Adicione uma linha como a seguinte:

nameserver 10.0.2.15

Onde 10.0.2.15 é o IP que você anotou. Seu resolv.conf deve ficar parecido com o seguinte:


Com isso feito, vamos reiniciar os serviços de rede e bind9 para depois testar. Execute os comandos abaixo:

service networking restart
service bind9 restart
nslookup www.teste.com.br


Se tudo estiver certo, ele irá retornar que o IP do domínio solicitado é o 192.168.0.1

O resultado deve ser como o da imagem abaixo:



Agora vamos voltar na configuração do Servidor DHCP e definir que o DNS é o 192.168.0.1

Basta editar o arquivo /etc/dhcp/dhcpd.conf
Na linha onde você adicionou aquele "subnet", altere a linha onde está o option domain-name-servers para o seguinte

option domain-name-servers 192.168.0.1;

Agora reinicie o serviço DHCP, desative a placa de rede do Windows e ative novamente (para obter um novo endereço de rede).

service isc-dhcp-server restart

Se tudo der certo, o endereço DNS no Windows agora será o 192.168.0.1

Se tentarmos uma consulta DNS no Windows para o domínio www.teste.com.br ele deve retornar 192.168.0.1

Além disso, vamos adicionar mais uma configuração no Servidor DNS para que, caso não encontre o domínio solicitado localmente, redirecione a petição para um outro DNS (8.8.8.8, no caso).

Para isso, faça o seguinte:

nano /etc/bind/named.conf.options

Encontre uma linha onde está escrito forwarders, remova os comentários (//) e altere até ficar como na imagem seguinte:


Para aplicar as alterações, reiniciamos o servidor DNS.

service bind9 restart

As requisições de resolução de nome no Windows agora devem funcionar normalmente, tanto para domínios que nós criamos, quanto para outros domínios.



Apesar do DNS estar funcionando, nosso cliente (Windows) ainda não tem acesso à internet. Para isso, vamos precisar fazer mais algumas configurações.


4 - Squid

Para instalar o Squid, execute o comando abaixo:

apt-get -y install squid

A primeira coisa que vamos fazer é renomear o arquivo de configuração original do squid.

mv /etc/squid/squid.conf /etc/squid/squid.conf.original

Agora vamos usar uma configuração básica no squid.
Copie o conteúdo do link a seguir:

http://pastebin.com/raw/DaUNv2Mn

E cole no arquivo /etc/squid/squid.conf

Além disso, como especifica na configuração citada acima, vamos bloquear um site pelo seu nome de domínio. Para isso, execute os comandos abaixo:

mkdir /etc/squid/bloqueados
echo "http://www.baixaki.com.br" > /etc/squid/bloqueados/sites

Além disso, precisamos especificar que o tráfego vindo dos clientes deve ter como saída a porta eth0. Devemos ainda especificar que o tráfego, antes de sair, deve passar pelo squid, o qual fará um filtro no tráfego, definindo o que pode e o que não pode ser acessado. Para isso, copie o conteúdo do seguinte link:

http://pastebin.com/raw/smZ5vv7c

E cole no arquivo /etc/squid/fw.sh

Para que essas alterações tenham efeito, vamos reiniciar o serviço do squid e executar as regras do firewall. Para isso, execute os comandos abaixo.

service squid restart
sh /etc/squid/fw.sh

Se tudo estiver correto, agora o cliente deve ser capaz de acessar qualquer site, exceto o http://www.baixaki.com.br

Caso ele tente entrar em um site bloqueado, a seguinte mensagem de erro deve aparecer:




Atualização (02/02/2016 - 13:41)

Segue um artigo bem completo falando sobre DHCP.
http://www.esli-nux.com/2012/07/dhcp-guia-completo.html


Espero que vocês tenham gostado. Este foi um post em forma de tutorial mesmo, mas quero fazer outros posts explicando cada um desses serviços separadamente.

Valeu.

Nenhum comentário:

Postar um comentário