anúncios

quarta-feira, 28 de setembro de 2011

Configurando servidor DHCP no Linux

Neste post, apresenta um breve resumo e configuração do servidor DHCP no Linux na distro Debian e Slackware.
Qual a função do servidor DHCP?
Distribuir um endereço IP de forma automática na LAN (estação).
Instalação
No Debian:
#apt-get install dhcp3-server
Após o download e instalação do pacote dhcp3-server, vá no diretório /etc/dhcp3
#cd /etc/dhcp3
Faz um cópia de segurança
#mv dhcpd.conf dhcpd.conf.bkp
No arquivo dhcpd.conf coloque a configuração abaixo adaptando para o seu endereço IP em uso.
#vim dhcpd.conf
dhcpd.conf

# dhcpd.conf
#
# Configuration file for ISC dhcpd (see 'man dhcpd.conf')
#
authoritative;
#Domínio configurado no BIND
option domain-name "mundodacomputacao.com.br";
default-lease-time 600;
max-lease-time 7200;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.101 192.168.1.200;
option routers 192.168.1.100;
option broadcast-address 192.168.1.255;
#Aqui você coloca os servidores DNS de terceiros ou seu domínio próprio configurado no BIND.
option domain-name-servers 8.8.8.8, 8.8.4.4;
}

Explicação
default-lease-time 600; controla o tempo de renovação do IP.
max-lease-time 7200; determina o tempo que cada máquina pode usar um determinado IP.
authoritative; Se um cliente requisitar um endereço que o servidor não conheça, ou seja, o endereço é incorreto para aquele segmento, o servidor não enviará um DHCPNAK, o qual diz para ao cliente para parar de usar aquele endereço.
subnet 192.168.1.0 netmask 255.255.255.0
Define sua "sub-rede" 192.168.1.0 com a máscara 255.255.255.0 e abre uma faixa de IPs que o cliente pode usar.
range 192.168.1.101 192.168.1.200;
option routers 192.168.1.100;; Este é o gateway padrão (neste caso).
option broadcast-address 192.168.1.255;; Essa linha é o endereço de broadcast (neste caso).
option domain-name-servers;; Essa linha você especifica os servidores DNS de sua preferência ou seu próprio DNS configurado no BIND.
Define agora a interface de rede que irá ativar.
#vim /etc/default/dhcp3-server
Onde tiver INTERFACES="", coloque sua interface de rede
INTERFACES="eth1" (nesse caso).
Reinicie o serviço dhcpd: #/etc/init.d/dhcp3-server restart

No Slackware:
Basta você colocar o CD1 do Slackware, e após montado o CD-ROM , entrar na pasta Slackware/n do CD e digitar no console:
#installpkg dhcp-4.1.1-i486-2.txz
PS: Também pode optar para instalar o dhcp já na instalação do Slackware.
No arquivo /etc/dhcpd.conf coloque a configuração visto neste post (dhcpd.conf) adaptando para o seu caso.
Crie um script e salve em /etc/rc.d/rc.dhcpd
rc.dhcpd

#!/bin/sh
#Start/Stop/Restart the DHCP server
#INTERFACES ="eth1"
case "$1" in
'start')
dhcpd eth1
;;
'stop')
killall dhcpd
;;
'restart')
killall dhcpd
dhcpd eth1
;;
*)
echo "usage $0 start|stop|restart"
esac

Reinicie o serviço dhcpd: #/etc/rc.d/rc.dhcpd start

Para compartilhar a internet adicione no script de firewall a regra abaixo:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Algumas observações:
1. interface eth0 - externa e interface eth1 - interna
2. Configurando servidor DNS no BIND
3. testado na distro Slackware 13.1 e Debian 6

Feito!

2 comentários:

  1. Boa Tarde, amigo estou com uma duvida sobre o que estou errado poderia me corrigir?

    Estou fazendo uso do VMWARE PLAYER para estudar e meu DHCP não esta fufando, ate agora executei os passo a passo a baixo:

    Estudos VMWARE PLAYER DEBIAN/UBUNTU SERVER

    SERVER DEBIA - 7

    SERVER UBUNTU 12.04

    CLIENTE WXP

    CLIENTE W7

    CLIENTE FEDORA

    REDE

    Placa de rede - 1:
    eth0 NAT

    Placa de rede - 2:
    eth1 Host-Only


    root@server:~# vim /etc/network/interfaces

    # The primary network interface
    auto eth0
    iface eth0 inet dhcp

    # The secondary network interface
    auto eth1
    iface eth1 inet static
    address 192.168.10.5
    netmask 255.255.255.0


    root@server:~# ifconfig

    eth0

    address 172.16.132.145
    netmask 255.255.255.0
    broadcast 172.16.132.255

    eth1

    address 192.168.10.5
    netmask 255.255.255.0
    broadcast 192.168.10.255


    DHCP

    root@server:~# apt-get install isc-dhcp-server -y

    root@server:~# vim /etc/default/isc-dhcp-server

    INTERFACES="eth1"

    root@server:~# cd /etc/dhcp

    root@server:~# cp dhcpd.conf dhcpd.conf.bkp

    root@server:~# vim /etc/dhcp/dhcpd.conf

    ddns-update-style none; # Linha 13

    option domain-name "local.com"; # Linha 16
    option domain-name-servers 192.168.10.5; # Linha 17

    default-lease-time 3600; # Linha 19
    max-lease-time 7200; # Linha 20

    authoritative; # Linha 24

    log-facility local7; # Linha 28

    subnet 192.168.10.0 netmask 255.255.255.0 { # Linha 38
    range 192.168.1.6 192.168.1.10; # Linha 39
    option routers 192.168.10.5; # Linha 40
    option broadcast-address 192.168.10.255; # Linha 41
    # DNS de Terceiros
    option domain-name-servers 8.8.8.8, 8.8.4.4; # Linha 43
    }

    root@server:~# /etc/init.d/isc-dhcp-server restart

    Rather than invoking init scripts through /etc/init.d, use the service(8)
    utility, e.g service isc-dhcp-server restart

    Since the script you are attemting to invoke has bee converted to an
    Upstart job, youmay also use the stop(8) and then start(8) utilities,
    e.g. stop isc-dhcp-server ; start isc-dhcp-server. The restart (8) utility is also available.
    isc-dhcp-server stop/waiting
    isc-dhcp-server start/running, process 2586

    root@server:~# service isc-dhcp-server restart

    isc-dhcp-server stop/waiting
    isc-dhcp-server start/running, process 2611

    ResponderExcluir
    Respostas
    1. Vitor, na segunda placa de rede da VM coloque em bridge ao invés de host-only.
      Bridge faz comunicar com outras VMs entre si.
      VM Servidor (DHCP no caso) com VM Cliente (que recebe os IPs atribuídos pela VM Servidor).

      Na VM Cliente também a placa de rede deve estar em bridge.

      Outro detalhe que notei na sua conf. foi na linha "option domain-name "local.com"; # Linha 16" Aqui deve colocar o seu nome de domínio (DNS interno) da rede, ou se caso não estiver pode comentar e colocar nas linhas abaixo deixar o DNS do Google.
      #Aqui você coloca os servidores DNS de terceiros ou seu domínio próprio configurado no BIND.
      option domain-name-servers 8.8.8.8, 8.8.4.4;

      Com as alterações mencionadas no início deve funcionar.

      Excluir