Servidor DHCP Conceitos DHCP é abreviação de Dynamic Host Configuration Protocol Protocolo de Configuração de Host (computadores) Dinâmico.Em uma rede baseada no protocolo TCP/IP, todo computador deve possuir um endereço IP distinto (exceto qundo temos um roteador). Isso significa que antes de colocar uma nova estação na rede teríamos que escolher um endereço IP que não esteja sendo utilizado por outra máquina. Em pequenas redes isso é fácil de ser feito, mas em grandes redes isso se torna uma tarefa muito trabalhosa e bastante sujeita a falhas. Para evitar esse problema, foi criado o DHCP, que tem como função principal fornecer um endereço IP dinamicamente a um computador no momento de sua conexão à rede. O servidor de DHCP verifica qual o endereço IP disponível em uma tabela cadastrada previamente dentro deste e informa ao solicitante esse endereço, tornando-o disponível para outras solicitações. Dessa maneira, a administração dos endereços IP é feita automaticamente e não existem problemas de conflito. Quando a máquina solicitante sai da rede, o servidor DHCP torna o endereço IP dessa máquina disponível novamente. O protocolo DHCP (Dynamic Host Configuration Protocol) permite que clientes dentro de uma mesma rede física possam efetuar suas configurações de rede de forma automática. Dessa maneira, com o uso do serviço DHCP, estações podem buscar em um servidor várias informações como, por exemplo: - endereços e máscaras de rede (IP); - endereço de roteadores (gateways); - endereços de servidores de nomes; - endereços de servidores de fontes; - endereços de servidores WINS (Windows Name Server); - endereços de servidores proxy. Outras informações podem ser fornecidas via DHCP, mas essas o mais comum é utilizar um servidor DHCP para compartilhar as três primeiras. Para Linux, existem dois
clientes: o dhcpcd, ou o pump. O servidor disponível é o dhcpd da ISC. Antes de instalar um servidor DHCP, o administrador deve pesar os prós e contras dessa tecnologia. Com o uso normal do DHCP, qualquer usuário pode plugar uma máquina na rede e fazer uso dela. Assim, na forma de uso mais comum do DHCP, o administrador pode mais facilmente perder o controle sobre os endereços da rede. Por outro lado, ele não se vê obrigado a configurar máquinas de usuários iniciantes. DHCP também é extremamente útil quando há mais máquinas que IP em uma dada rede, mas nem todas as máquinas estão ligadas ao mesmo tempo. Dessa maneira, DHCP é utilizada com freqüência em provedores. 8.2 Instalando o dhcp Para instalar o dhcp, pode-se utilizar o repositório da distribuição. - Família Debian (Debian, Ubuntu e etc.): # apt-get install dhcp3-server - Família Red-Hat (Red-Hat, Fedora, CentOS): # yum install dhcpd-server - ou fazendo download do pacote em: http://sourceforge.net/projects/dhcpserver/files/open%20dhcp %20Server/1.40%20Stable/opendhcpV1.40.tar.gz/download E fazendo a compilação do pacote via os comandos: #./configure # make # make install Instalação Debian MV root@server:~# aptitude install isc-dhcp-server Configuração O serviço DHCP só deverá estar disponível para a rede interna. Por isso só deverá aceitar ligações pela interface interna (eth0, neste caso), o que é definido no ficheiro de configuração /etc/default/isc-dhcp-server:
/etc/default/isc-dhcp-server # Defaults for isc-dhcp-server initscript # sourced by /etc/init.d/isc-dhcp-server # installed at /etc/default/isc-dhcp-server by the maintainer scripts # This is a POSIX shell fragment # [...] # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". INTERFACES="eth0" A parte principal da configuração é mantida no ficheiro /etc/dhcp/dhcpd.conf. Neste arquivo é indicado o nome de domínio (option domain-name home.lan ;), os endereços dos servidoresdns (option domain-name-servers 192.168.1.100, 192.168.1.1;). Na opção domain-name-servers poderá indicar o nome do servidor dns local (exemplo: ns.home.lan) em vez do endereço ip, caso tenha o configurado o servidor DNS. É também definida a duração normal e máxima da atribuição do endereço IP atribuído (default-lease-time 600; max-lease-time 7200;). O cliente poderá sempre pedir uma nova atribuição antes da atual expirar, podendo receber ou não o mesmo endereço IP. Finalmente, para o segmento de rede 192.168.1.0, é indicada a gama de endereços disponível para a atribuição (range 192.168.1.32 192.168.1.63;), qual o router a utilizar (option routers 192.168.1.1;) e qual o endereço debroadcast (option broadcast-address 192.168.1.255;) /etc/dhcp/dhcpd.conf # Sample configuration file for ISC dhcpd for Debian # The ddns-updates-style parameter controls whether or not the server will # attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't # have support for DDNS.) ddns-update-style none; # option definitions common to all supported networks... option domain-name "home.lan"; option domain-name-servers 192.168.1.100, 192.168.1.1; default-lease-time 600; max-lease-time 7200; # If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. authoritative; # [...] ## SubNet home.lan subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.32 192.168.1.63; option routers 192.168.1.1; option broadcast-address 192.168.1.255; } O protocolo DHCP possibilita a atribuição endereços específicos a determinados sistemas, associando o número da placa de rede ao endereço pretendido. No entanto, estes endereços fixos não devem estar na gama dos endereços reservados para atribuição dinâmica. /etc/dhcp/dhcpd.conf # [...]
# Fixed IP addresses can also be specified for hosts. These addresses # should not also be listed as being available for dynamic assignment. # Hosts for which fixed IP addresses have been specified can boot using # BOOTP or DHCP. Hosts for which no fixed address is specified can only # be booted with DHCP, unless there is an address range on the subnet # to which a BOOTP client is connected which has the dynamic-bootp flag # set. host desktop { hardware ethernet 01:23:45:67:89:10; fixed-address 192.168.1.2; } host laptop { hardware ethernet 01:23:45:67:89:11; fixed-address 192.168.1.3; } # [...] Reiniciar o serviço dhcp: root@server:~# /etc/init.d/isc-dhcp-server restart
Configuração dos clientes Linux Num cliente Linux, basta instalar o pacote dhcp client. A configuração gerada durante a instalação deverá ser suficiente. root@server:~# aptitude install isc-dhcp-client Windows Num cliente Windows, deverá ser ativada a opção Obter automaticamente um endereço IP, nas propriedades TCP/IP da interface de rede. Numa rede caseira, com acesso à Internet via modem ADSL ou cabo, esta opção deverá, em princípio, já estar ativada. Entendendo o exemplo acima: A linha 1: ddns-update-style diz respeito a forma que o DHCP irá armazenar as informações de redes dos clientes. Atualmente são implementados dois esquemas de atualização do DNS o modo de atualização do DNS improvisado e o modo de atualização do esquema de interação do intervalo DHCP-DNS. O servidor DHCP deve ser configurado para usar um dos dois esquemas atuais. A versão 3.0b2pl11 e a anterior usaram o modo improvisado; no entanto, este não é mais
aprovado. Exemplos: Este modo desativa o suporte a DNS dinâmico: ddns-update-style none; Para manter o mesmo comportamento e compatibilidade com versões anteriores,manter a linha no topo do arquivo de configuração: ddns-update-style ad-hoc; Adicione esta outra para usar o modo recomendado, no topo do arquivo de configuração, basicamente essa linha será apenas pra manter o padrão de suporte a versão mais antiga: ddns-update-style interim; Note na Figura 1 que o servidor configura uma rede 192.168.1 na faixa entre 192.168.1.10 e 192.168.1.100 e entre 192.168.1.150 e 192.168.1.200. Além disso, como mostra essa mesma figura, é possível usar o DHCP para atribuir automaticamente um endereço específico a uma dada máquina. No caso, a máquina com placa de rede possuidora do endereço MAC 08:00:2b:4c:59:23 receberá o nome dbowie e o endereço 192.168.1.6. Com o uso da diretiva host, inclusive, é possível incrementar a segurança na rede, pois apenas máquinas com placas de redes já conhecidas poderão utilizar os recursos de rede. Entretanto isso implicará em trabalho adicional para o administrador que precisará identificar o endereço MAC de qualquer placa de rede que precise de acesso à rede. Note que o endereço MAC de uma dada máquina host1 pode ser verificado através do comando arp -a host1. $ arp -a host1 8.4 Arquivo leases do dhcp O arquivo para verificar as concessões de endereços aos hosts está localizado em : /var/lib/dhcp/dhcpd.leases. Muitas vezes precisamos acessar computadores remotamente, no entanto não sabemos os seus respectivos endereçamentos IPs. Por exemplo, acessar o computador vendas, ou ainda faturamento. Para visualizar os hosts clientes acessar o arquivo leases em:
$ less /var/lib/dhcp3/dhcpd.leases lease 192.168.9.8 { starts 3 2010/04/26 21:41:20; ends 4 2010/04/27 03:41:20; binding state active; next binding state free; hardware ethernet 00:07:95:fa:3d:93; } Logo em seguida aparecerão os endereços que foram atribuídos dinamicamente pelo serviço DHCP. Estes dados podem ser obtidos também através do comando a seguir, que mostra um log geral do sistema, inclusive do serviço DHCP. # less /var/log/messages No host cliente pode-se também, através do arquivo /var/lib/dhcp3/dhclient.leases, todas as locações feitas pelo host. $ less /var/lib/dhcp3/dhclient.leases lease { interface "wlan0"; fixed-address 192.168.1.76; option subnet-mask 255.255.255.0; option routers 192.168.1.75; option dhcp-lease-time 7200; option dhcp-option-overload 3; option dhcp-message-type 5; option domain-name-servers 192.168.1.75,192.168.1.1; option dhcp-server-identifier 192.168.1.1; option interface-mtu 576; option broadcast-address 255.255.255.255; renew 2 2010/05/11 13:47:13; rebind 2 2010/05/11 13:47:13; expire 2 2010/05/11 13:47:13; }
lease { interface "eth0"; fixed-address 10.40.31.38; option subnet-mask 255.255.0.0; option dhcp-lease-time 28800; option routers 10.40.0.1; option dhcp-option-overload 3; option dhcp-message-type 5; option dhcp-server-identifier 10.40.31.35; option domain-name-servers 10.40.0.2,10.40.0.1; option interface-mtu 576; option broadcast-address 255.255.255.255; renew 2 2010/05/11 12:10:46; rebind 2 2010/05/11 12:10:46; expire 2 2010/05/11 12:10:46; } 8.6 Inicializando o servidor dhcp - parar o servidor dhcp: # /etc/init.d/dhcp stop - iniciar o servidor dhcp: # /etc/init.d/dhcp start - reinciar o servidor dhcp: # /etc/init.d/dhcp restart 8.7 Outro exemplo de arquivo /etc/dhcp3/dhcpd.conf Outro exemplo de arquivo dhcpd.conf pode ser visualizado na Figura 2 a seguir: # authoritative; # opcional ver abaixo # log-facility local7; # opcional ver abaixo ddns-update-style ad-hoc; default-lease-time 172800; # 2 dias max-lease-time 345600; # 4 dias
subnet 192.168.1.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; option routers 192.168.1.2; option domain-name "empresa.com.br"; option domain-name-servers 192.168.1.2,192.168.1.3; option ntp-servers 192.168.1.2; # aponta para o servidor wins caso haja #option netbios-name-servers 192.168.1.3; range 192.168.1.100 192.168.1.200; host estacao { hardware ethernet 00:00:00:00:00:00; fixed-address 192.168.1.90; } } Outros itens de configuração do DHCP: authoritative; Informa que esse é o servidor DHCP com autoridade sobre a rede. Sempre mantenho um único servidor DHCP na rede, porém, caso se tenha mais de um é bom definir qual é o principal. Caso se queira alterar o local do log do dhcp dos arquivos /var/log/syslog e/var/log/daemon.log, no arquivo dhcpd.conf coloca-se a seguinte linha: log-facility local7; A seguir, editar o arquivo /etc/rsyslog.conf e adicionar: local7.* /var/log/dhcpd.log Após isso reinicia-se o serviço do syslog e aí sim reinicia o serviço do dhcp e então o novo endereço do log do dhcp passa a ser: /var/log/dhcpd.log