DHCP com controle de IP e compartilhamento no Debian Squeeze

 Clusterweb, Linux  Comentários desativados em DHCP com controle de IP e compartilhamento no Debian Squeeze
fev 252013
 
Introdução

Você deverá ter duas placas de rede instaladas no computador, que será o servidor DHCP.

Todo servidor deve ser configurado para iniciar automaticamente em caso de queda de energia. A configuração deve ser feita acessando-se o Setup do CMOS (o popular BIOS) da placa-mãe.

Geralmente, essa configuração está na aba “Power” ou “Energy” ou “Advanced” ou similar. A opção a ser configurada, geralmente, aparece como “Restore on AC Power Loss” ou similar.

Esta opção deve ser colocada como “Power on”. Isto fará com que a máquina seja reiniciada automaticamente. Com essa opção ligada (Power on), a placa-mãe detectará o retorno da energia e ligará a máquina automaticamente colocando o servidor em funcionamento.

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 IPs. O IP da placa de rede que irá servir o DHCP será também, automaticamente, o IP do gateway/compartilhamento da nossa configuração (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
auto eth0
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
auto eth1
allow-hotplug  eth1
iface  eth1  inet  dhcp

Salve e saia do arquivo.

Os números de IPs devem estar de acordo com o arquivo /etc/dhcp/dhcpd.conf, que você mesmo irá configurar mais adiante.

A placa de rede que recebe a Internet é a eth1. Deixei ela com IP dinâmico. Caso queira fixar o IP da placa que recebe a Internet, no caso a eth1, ela deverá ter como gateway, o IP do roteador ADSL ou do roteador da rede.

* 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.

3. 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:

domain xxxxxxxxxxxx
search xxxxxxxxxxxxx
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx

Onde:

  • Em “domain” e “search”, os xxx são nomes de domínio (se houver);
  • Em “nameserver”, os xxx são números de IPs de DNS.

Caso não tenha nada no arquivo, acrescente o IP do Gateway (roteador) ou do DNS da rede (se houver). Este arquivo se renova a cada reinicialização da máquina. Se não tiver esse arquivot você deve ciá-lo:

# vim /etc/resolv.conf

E acrescentar, pelo menos, um “nameserver”. Na próxima reinicialização ele virá correto.

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. Abra o arquivo /etc/dhcp/dhcp.conf:

# 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.

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.125;
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;
}
deny unknown-clients;
ignore unknown-clients;
group servidores {
use-host-decl-names true;
host dhcp {
hardware ethernet xx:xx:xx:xx:xx:xx;
fixed-address 192.168.2.1;
}
host dns {
hardware ethernet xx:xx:xx:xx:xx:xx;
fixed-address 192.168.2.2;
}
}
group clientes {
use-host-decl-names true;
host maquina01 {
hardware ethernet xx:xx:xx:xx:xx:xx;
fixed-address 192.168.2.5;
}
}

Acrescente tantos quantos hosts forem necessários para você.

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 reservadas para redes internas privadas de acordo com a RFC 1918:

10.0.0.0-10.255.255.255
172.16.0.0-172.31.255.255
192.168.0.0-192.168.255.255

Definição:

  • 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). Esta linha deve ser comentada, caso as opções “deny unknown” e “ignore” estejam descomentadas, senão o DHCP continuará distribuindo IPs fora do cadastro dos grupos “servidores” e “clientes”.
  • 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, no caso, 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 (os xxx são endereços de IP de DNS públicos e abertos) e terminando sempre com o IP do gateway/roteador para redundância. Caso não tenha DNS interno na sua rede, retire o IP, no caso, 192.168.2.2 e o “host dns” não precisa ter.
  • As linhas “deny unknown-clients” e “ignore unknown-clients”, fazem com que o DHCP distribua IPs somente para as máquinas que estiverem com o MAC cadastrado nos grupos acima. Ao acrescentar os IPs com os MACs na tabela ARP através do arquivo /etc/ethers (abaixo) você deve comentar essas linhas colocando um “#” na frente delas.

* Importante: Se você deixar as linhas “deny …” e “ignore …” descomentadas, as máquinas clientes que estiverem com IP automático e não estiverem cadastradas, NÃO obterão IP e, logicamente, só navegarão se o IP for fixado manualmente na própria máquina.

No grupo “servidores” estamos fixando os IPs dos servidores através do MAC da placa de rede.

Para ver o MAC da placa de rede, execute ifconfig e veja o HW da placa de rede que responde pelo servidor e coloque ali em cima. Caso não haja DNS interno na rede, o “host dns” deve ser omitido.

No grupo “clientes”, definimos os IPs dos clientes através do MAC da placa de rede de cada máquina.

A opção GROUP serve para separar a configuração por grupos dentro da mesma rede/subrede. Por exemplo, você quer que um determinado grupo composto por algumas máquinas tenha uma configuração distinta de outro grupo ou do resto da rede e quer que usem, por exemplo, um outro gateway (option routers), ou qualquer outra configuração permitida a somente uma máquina pelo dhcpd.conf, você pode especificar isso através do “group” sem aplicar para toda a rede.

Salve e saia do arquivo.

Habilitando o compartilhamento

6. Compartilhando a conexão.

Criando o arquivo de configuração do IPtables:

# vim /etc/init.d/firewall.sh

Obs.: Aqui você pode dar o nome que quiser ao arquivo.

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

Onde:

  • A placa eth1 é a placa que recebe a Internet. Se a sua for a eth0, você deve colocar: -o eth0

    * 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.

Vamos transformar o arquivo que criamos em um arquivo executável:

# chmod +x /etc/init.d/firewall.sh

Agora 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

Daí é só reinstalar o serviço e fazer as configurações novamente.

Controle de IPs pela tabela ARP

8. Para evitar que algum cliente acesse a Internet fixando manualmente o IP na sua máquina, devemos acrescentar na tabela ARP os IPs, criando o arquivo /etc/ethers:

# vim /etc/ethers

Coloque dentro do arquivo o IP e o MAC da seguinte maneira, um por linha:

192.168.2.2   xx.xx.xx.xx.xx.xx
192.168.2.3   xx.xx.xx.xx.xx.xx

E assim por diante.

Você pode também preencher com MACs falsos, os IPs que não estão em uso, por exemplo:

192.168.2.126   00:00:00:ff:ee:11

Ficaria assim o arquivo /etc/ethers:

192.168.2.5   xx.xx.xx.xx.xx.xx
192.168.2.6   xx.xx.xx.xx.xx.xx
192.168.2.126   00:00:00:ff:ee:11
192.168.2.127   00:00:00:ff:ee:11

* Lembrando que os IPs que não estão em uso, são os que não estão cadastrados nos grupos “servidores” e “clientes”.

Se você tem uma faixa de IPs classe C (recomendada para estes casos), então são 253 linhas para você colocar no /etc/ethers, entre IPs em uso e não-uso. O endereço do gateway, da rede e do broadcast não é necessário colocar.

Agora, precisamos carregar o arquivo /etc/ethers na tabela ARP durante a inicialização. Entre no arquivo /etc/rc.local e coloque “arp -f” acima da linha exit 0:

/etc/init.d/firewall.sh   start
arp -f
exit 0

Para o controle de MAC por ARP funcionar, o servidor GNU/Linux terá que ser o gateway da rede, ou seja, deverá haver o compartilhamento.

E, não esqueça, quando a linha “range” estiver descomentada, as linhas “deny…” e “ignore…” devem estar comentadas e vice-versa.

Assim, se alguém não cadastrado no DHCP fixar manualmente um IP na máquina, mesmo estando dentro da faixa de rede utilizada, a máquina não navegará na Internet.

Você pode fazer esse controle de IPs por MAC também pelo IPtables, porém, tendo muitas máquinas na rede tornará o servidor um pouco lento. É preferível fazer pela tabela ARP.

Compilando kernel no Debian Squeeze

 Clusterweb, Linux  Comentários desativados em Compilando kernel no Debian Squeeze
fev 252013
 

Procedimentos

1. Instalar os pacotes necessários:

# apt-get update
# aptitude safe-upgrade

Tem alguns pacotes a mais do que o necessário, mas neste caso, o que abunda não prejudica.

# aptitude install build-essential module-init-tools kernel-package initramfs-tools libaal-dev wget liblzo2-dev gzip expectk libncurses5-dev dpatch udev

2. Fazer o download do kernel desejado no site kernel.org.

O download pode ser feito via navegador ou pelo terminal. No terminal, utiliza-se o pacote wget:

# wget http://caminho_completo_do_kernel

Exemplo:

# wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.7.6.tar.bz2

Obs.: O kernel será baixado no diretório/pasta onde você estiver.

# ls  #Para ver o arquivo baixado

3. Descompactar o arquivo do kernel:

# tar -jxvf nome_do_arquivo.tar.bz2  #Para arquivos: .tar.bz2
# tar -vzxf nome_do_arquivo.tar.gz  #Para arquivos: .tar.gz
# ls  #Para ver o arquivo descompactado

4. Copiar o kernel para o diretório /usr/src (diretório/pasta padrão de compilação do kernel no Debian):

# cp -R linux-x.x.x /usr/src
# cd /usr/src  #Entrar no diretório
# ls  #Verificar se o arquivo foi copiado

5. Nas opções de configuração (make menuconfig), as opções marcadas com “M” indicam que a instalação se dará como módulos, ou seja, não farão parte do bloco monolítico do kernel.

As opções marcadas com “*” (asterisco) indicam que serão instaladas dentro do kernel, ou seja, farão parte do bloco monolítico do kernel, e os drivers e módulos iniciarão junto com o sistema. Em alguns casos, isto é interessante para melhorar o desempenho.

Executar os comandos abaixo em sequência (aguardar o final após cada comando e sempre ler as mensagens de retorno para ver se deu algum erro):

# ln -s linux-x.x.x linux  #Cria um link simbólico necessário para a compilação
# ls  #Confirmar se o arquivo foi criado
# cd linux  #Entra no diretório criado
# make-kpkg clean  #Limpa prováveis compilações anteriores
# make mrproper  #Limpa prováveis compilações anteriores
# make menuconfig  #Entra nas configurações do kernel

Para alterar de “M” para “*” e vice-versa, é só pressionar a barra de espaços.

Vá em “Processor type and features”, e marque (barra de espaços) a opção que corresponde ao processador da máquina.

Mais abaixo, vá em “Timer frequency”. Se a sua instalação for do tipo servidor marque, a opção 100 HZ (isso melhorará o tempo de resposta do servidor para as requisições). Para Desktop, deixe como está.

Retorne ao menu principal.

Vá em: Networking support → Networking options → Network packet filtering framework (netfilter) → IP: netfilter configuration

Verifique se “IPv4 connection tracking support (required for NAT)” está marcada.

Mais abaixo, marque as opções:

IPv4 NAT
MASQUERADE target support
NETMAP target support
REDIRECT target support

Volte ao menu principal.

Vá em “File Systems”, marque os sistemas de arquivo utilizados no particionamento da instalação com: “*”

Mais abaixo, vá em “Native language support” e marque com “*” as opções:

Codepage 860 (Portuguese)
ASCII (United…)
NLS 8859-1 (Latin 1, …)
NLS UTF-8

Retorne ao menu principal dando EXIT. Após o último EXIT, aparecerá a janela “Do you wish…”, deixe como: “Yes”

Compilação

6. Compile:

# make config_debug_section_mismatch=y  #Compila e previne possíveis erros durante a compilação, deverá demorar de uma a duas horas
# make modules  #Compila os módulos
# make modules_install  #Instala os módulos
# make install  #Instala o kernel
# cd /lib/modules  #Entrar no diretório
# ls  #Confirmar que foi criado o arquivo x.x.x, no caso, 3.7.6
# mkinitramfs -o /boot/initrd.img-x.x.x /lib/modules/x.x.x  #Cria a imagem do kernel
# cd /boot  #Entrar no diretório /boot e conferir se o arquivo foi criado
# cd  #Entra no diretório raiz
# update-grub  #Atualiza o GRUB
# shutdown -r now  #Reinicia

Ao reiniciar, o novo kernel deverá aparecer nas opções do GRUB.

Depois, atualize o sistema (opcional):

# aptitude update
# aptitude safe-upgrade

Em caso de erro em alguma etapa da compilação:

  • Apague os arquivos criados do novo kernel dentro dos diretórios: /boot e /lib/modules
  • Recomece a partir do comando: make-kpkg clean (estando dentro do link: linux)

E seja feliz com seu novo e atualizado kernel.

Instalar Firefox com plugin Flash Player no Debian Squeeze.

 Clusterweb  Comentários desativados em Instalar Firefox com plugin Flash Player no Debian Squeeze.
jan 072012
 

Instalar Firefox com plugin Flash Player no Debian Squeeze

Bom pessoal vejo que muitos não gostam do Iceweasel que vem junto com o Debian então vou mostrar como desinstalá-lo e instalar o Mozilla Firefox com plugin do Flashplayer para que não tenha problemas ao assistir seus vídeos no YouTube, etc.

O primeiro passo é baixar o Mozilla Firefox no site:

Agora devemos desinstalar o Iceweasel, para isso vamos ao terminal e digitamos:

# aptitude remove –purge iceweasel

Após isso vamos ao diretório onde baixamos o Firefox e vamos descompactá-lo na pasta /usr/lib/

# tar jxvf firefox-8.0.1.tar.bz2 -C /usr/lib/

Agora devemos criar um link simbólico com seguinte comando:

# ln -s /usr/lib/firefox /usr/bin/

Pronto já temos nosso Firefox instalado, agora vamos acertar o ícone dele no painel do GNOME, se vocês perceberem vão ver que o ícone do Iceweasel continua no painel, vamos ter que editá-lo.

Clique em cima dele com o botão direito do mouse e clique em propriedades, Agora nas propriedades do lançador deixe assim:

tipo = aplicativo
nome = Mozilla Firefox
comando = /usr/bin/firefox/firefox
comentário = Navegador Web

Agora para finalizar vamos instalar o plugin do Flash Player

Vá ao terminal e digite:

# aptitude install flashplugin-nonfree

Pronto! Agora já temos o Mozilla Firefox com Flash Player instalado e funcionando.

Abraço.