UNIVERSIDADE FEDERAL DE SANTA MARIA
COLÉGIO TÉCNICO INDUSTRIAL DE SANTA MARIA
CURSO SUPERIOR DE TECNOLOGIA EM REDES DE
COMPUTADORES
ESTRATÉGIA DE IMPLEMENTAÇÃO DE
ENDEREÇAMENTO IPv6 UTILIZANDO DHCP COM
ALOCAÇÃO ESTÁTICA E PILHA DUPLA COM IPv4
TRABALHO DE CONCLUSÃO DE CURSO
GIOVANI PEREIRA NUNES
SANTA MARIA, RS, BRASIL
2014
ESTRATÉGIA DE IMPLEMENTAÇÃO DE ENDEREÇAMENTO
IPv6 UTILIZANDO DHCP COM ALOCAÇÃO ESTÁTICA E
PILHA DUPLA COM IPv4
Giovani Pereira Nunes
Trabalho apresentado ao Curso de Graduação em Tecnologia em
Redes de Computadores, Área de concentração em Infraestrutura de
Redes, da Universidade Federal de Santa Maria (UFSM, RS),
como requisito parcial para obtenção do grau de
Tecnólogo em Redes de Computadores.
Orientador: Prof. Me. Tiago Antônio Rizzetti
Santa Maria, RS, Brasil
2014
Universidade Federal de Santa Maria
Colégio Técnico Industrial de Santa Maria
Curso Superior de Tecnologia em Redes de Computadores
A Comissão Examinadora, abaixo assinada, aprova a Monografia
ESTRATÉGIA DE IMPLEMENTAÇÃO DE ENDEREÇAMENTO IPv6
UTILIZANDO DHCP COM ALOCAÇÃO ESTÁTICA E PILHA DUPLA
COM IPv4
elaborada por,
Giovani Pereira Nunes
como requisito parcial para obtenção do grau de
Tecnólogo em Redes de Computadores
COMISSÃO EXAMINADORA
Tiago Antônio Rizzetti, Me.
(Presidente/Orientador)
Alfredo Del Fabro Neto, Tecg. (UFSM)
Renato Preigschadt de Azevedo, Me. (UFSM)
Santa Maria, 11 de dezembro de 2014
Agradecimentos
Agradeço, em primeiro lugar aos meus pais Luciano e Goreti e minhas irmãs
Lara e Mariele, pelo amor e apoio incondicional, sob quaisquer circunstâncias.
À minha namorada Stefanie, pelo amor, carinho e compreensão. Essa
conquista não seria possível sem o teu apoio.
Ao meu orientador Tiago Antônio Rizzetti, pela ajuda, pelos ensinamentos,
pela paciência e pela amizade que certamente perdurará.
Aos meus avós, tios, primos e demais familiares, sejam aqueles unidos por
laços sanguíneos ou através de minha namorada, muito obrigado pela confiança e
pelas constantes palavras de apoio.
Aos professores, pelos ensinamentos, pela paciência e principalmente por
suportar (e até rir) minhas piadas e trocadilhos em quase todas as aulas.
Aos amigos e colegas, pelas ótimas lembranças que certamente estarão em
minha memória por muito tempo.
E por último, gostaria de fazer um agradecimento especial à Zizinha (Rosa
Maria), minha avó honorária. Sem teu carinho e apoio nada disso seria possível.
Muito obrigado a todos!
“For millions of years mankind lived just like the
animals
Then something happened which unleashed the
power of our imagination
We learned to talk.”
(Pink Floyd apud Stephen Hawking)
RESUMO
Monografia
Curso Superior de Tecnologia em Redes de Computadores
Universidade Federal de Santa Maria
ESTRATÉGIA DE IMPLEMENTAÇÃO DE ENDEREÇAMENTO IPv6
UTILIZANDO DHCP COM ALOCAÇÃO ESTÁTICA E PILHA DUPLA
COM IPv4
AUTOR: GIOVANI PEREIRA NUNES
ORIENTADOR: TIAGO ANTÔNIO RIZZETTI
Santa Maria, 11 de dezembro de 2014.
A Internet é parte do cotidiano de uma parcela significativa da população
mundial. Atualmente são diversos os tipos de dispositivos que permitem a conexão à
ela. Esses devem ser endereçados de alguma forma, e o protocolo encarregado de
realizar o endereçamento das conexões durante mais de duas décadas foi o IPv4.
Atualmente uma nova versão do protocolo IP, o IPv6, também possibilita que sejam
endereçados os dispositivos, de forma que é possível que as duas versões possam
coexistir em paralelo nos equipamentos. Para atribuir endereços aos dispositivos,
em muitos casos, é utilizado um serviço denominado DHCP. Este serviço pode
realizar a alocação de um endereço estático de forma dinâmica, mantendo controle
sobre os dispositivos conectados. Para isto, é necessária alguma forma de
identificação de dispositivos. Enquanto no IPv4 uma forma muito utilizada se dá
através do uso de MAC Address, no IPv6 esta forma tardou a ser implementada,
motivando o inicio desta pesquisa. Em uma rede já estabelecida, implantar uma
nova forma de identificação de dispositivos é uma tarefa custosa em nível
administrativo e, como a identificação através do endereço da camada de enlace já
é muito difundida, é natural que esta seja a opção principal de escolha por parte dos
administradores. Em virtude disto, este trabalho apresenta um estudo acerca das
formas de identificação de dispositivos em ambas as versões do DHCP,
demonstrando as principais diferenças e motivações de uso. Por fim é apresentado
um script para automatizar as tarefas de cadastro e gerenciamento deste serviço.
Palavras-chave: IPv6. DHCPv6. DUID. MAC ADDRESS.
ABSTRACT
Monograph
Technology in Computer Network's Degree
Universidade Federal de Santa Maria
IMPLEMENTATION STRATEGY FOR IPv6 ADDRESSING USING
STATIC DHCP AND DUAL STACK WITH IPv4
AUTHOR: GIOVANI PEREIRA NUNES
SUPERVISOR: TIAGO ANTÔNIO RIZZETTI
Santa Maria, 11th December 2014
The Internet is a daily part of a significant portion of the worldwide population
and, today, there is a diversity of devices which allow the connection to it. These
devices must be addressed somehow, and the protocol responsible for implementing
the addressing of connections, during two decades, was the IPv4. Nowadays, a new
version of the IP protocol, the IPv6, also makes possible to address these devices, in
a way that is possible for the two versions coexist in parallel in the equipment. To
attribute addresses to the devices, in many cases, a service named DHCP is utilized.
With this service, is possible to allocate a static address in a dynamic way,
maintaining control over connected devices. To this end, a form of identifying these
devices is needed. While in IPv4 is used, most of the time, the MAC Address, in IPv6
the use of this method was delayed, what is the main motivation to this work. In a
network already established, implanting a new form of identification is an expensive
task to be accomplished in administrative terms and, being the identification of these
devices through the link layer a very popular method, it is natural to be the first option
of the administrators. Thus, this work presents a study about the forms of
identification of devices in both versions of DHCP, showing the main differences and
motivations of use. Lastly, is presented a script with the purpose of automating the
tasks of record and management of this service.
Keywords: IPv6. DHCPv6. DUID. MAC ADDRESS.
LISTA DE ILUSTRAÇÕES
Figura 1 – ErroDHCP..................................................................................................18
Figura 2 – Cenário Stateless......................................................................................20
Figura 3 – Atribuição DHCPv6..…..............................................................................27
Figura 4 – Atribuição DHCPv4....................................................................................28
Figura 5 – Arquivo de configuração radvd.conf..........................................................30
Figura 6 – Arquivo de configuração dhcpd.conf..…....................................................31
Figura 7 – Arquivo de configuração dhcpd6.conf..…..................................................32
Figura 8 – IPv6 Linux.….............................................................................................33
Figura 9 – IPv6 MAC OSX..........................................................................................34
Figura 10 – IPv6 Windows 7.......................................................................................35
Figura 11 – IPv6 Windows 8.......................................................................................36
Figura 12 – Tela inicial sasdhcp46.sh.........................................................................38
Figura 13 – Verificação do pacote RADVD................................................................39
Figura 14 – Verificação do pacote ISC.......................................................................40
Figura 15 – Verificação da versão do pacote ISC......................................................40
Figura 16 – Criação do arquivo radvd.conf................................................................41
Figura 17 – Criação do arquivo dhcpd6.conf.............................................................42
Figura 18 – Gerenciamento de Hosts........................................................................43
Figura 19 – Cadastra Host ........................................................................................43
Figura 20 – Sobre.......................................................................................................44
LISTA DE ABREVIATURAS E SIGLAS
DAD
Duplication Address Detection
DHCP
Dynamic Host Configuration Protocol
DHCPv6
Dynamic Host Configuration Protocol Version Six
DUID
DHCPv6 Unique Identifier
DUID-UUID DHCPv6 Unique Identifier - Universally Unique Identifier
EUI-64
Extended Unique Identifier
IANA
Internet Assigned Numbers Authority
IETF
Internet Engineering Task Force
IOT
Internet of Things
IP
Internet Protocol
IPv4
Internet Protocol Version Four
IPv6
Internet Protocol Version Six
ISC
Internet Systems Consortium
NAT
Network Address Translation
NDP
Neighbor Discovery Protocol
RA
Router Advertisement
RFC
Request for Comments
SIPP
Simple Internet Protocol Plus
SLAAC
Stateless Address Autoconfiguration
LISTA DE APÊNDICES
Apêndice A – Script para administração de serviços DHCP (sasdhcp46.sh)....49
SUMÁRIO
INTRODUÇÃO........................................................................................11
1.1 Objetivos..........................................................................................................13
1.2 Justificativa......................................................................................................13
1.3 Estruturação do trabalho...............................................................................14
2 ESTUDOS RELACIONADOS.............................................................15
2.1 DUID em servidores DHCPv4.........................................................................15
2.2 MAC Address em servidores DHCPv6..........................................................16
3 REVISÃO DE LITERATURA E TECNOLOGIAS EMPREGADAS......18
3.1 Endereçamento em IPv6.................................................................................18
3.1.1 Atribuição manual de endereços IPv6.......................................................18
3.1.2 DHCPv6.....................................................................................................19
3.2 Protocolo NDP.................................................................................................21
3.3 Identificação de dispositivos em servidores DHCP....................................21
3.3.1 DUID..........................................................................................................22
3.3.2 DUID-UUID................................................................................................23
3.4 Serviços DHCPv6............................................................................................24
3.5 Pilha dupla IPv4 e IPv6...................................................................................25
4 IDENTIFICAÇÃO DE CLIENTES E ALOCAÇÃO DE ENDEREÇOS. 26
4.1 Stateful Autoconfiguration.............................................................................26
4.2 Router Advertisement Daemon for IPv6.......................................................28
4.3 Atribuição de endereços através do ISC-DHCP Server..............................31
4.4 Automatização de tarefas de administração para servidores DHCP........37
4.4.1 Script para cadastro automatizado de clientes em servidores DHCP......37
4.4.1.1 Sasdhcp46.sh.........................................................................................38
CONSIDERAÇÕES FINAIS...................................................................45
REFERÊNCIAS......................................................................................47
APÊNDICES...........................................................................................49
INTRODUÇÃO
A Internet, está presente no cotidiano de todos, e uma grande variedade de
dispositivos possibilita a conexão com a rede mundial de computadores. Esses
dispositivos precisam, de alguma forma, ser endereçados.
O Protocolo de Internet (IP – Internet Protocol) foi projetado para uso em uma
rede de comunicação onde há comutação por pacotes (RFC 791, 1981, p.1), sendo
responsável pela identificação dos dispositivos conectados à rede, por meio de
endereços. Em um primeiro momento, o protocolo utilizado para o endereçamento
dos dispositivos foi o IPv4 (Protocolo de Internet Versão Quatro). Em uma época
quando ainda não era previsto o uso comercial da rede mundial de computadores,
este protocolo parecia suprir todas as necessidades de endereçamento. Porém com
o surgimento de um novo modelo de uso - onde não apenas as máquinas seriam
conectadas à Internet, mas também as pessoas - os endereços disponíveis com o
IPv4 apresentaram os primeiros sinais de esgotamento 1. Esta nova fase, mais tarde,
viria a ser conhecida como era da Internet das Pessoas (BRITO, 2013, p. 36).
O IPv4 possibilita um total aproximado de 4,2 bilhões de endereços e este
número está muito próximo de se tornar insuficiente para o endereçamento de todos
os dispositivos. Por isso, hoje, se faz necessária a migração para uma nova versão
deste protocolo, o IPv6 (Internet Protocol version Six). O IPv6 teve suas
especificações técnicas básicas desenvolvidas na década de 90 no IETF (Internet
Engineering Task Force) e, atualmente, é considerado um protocolo maduro o
suficiente para suportar a substituição do IPv4 (LACNIC.NET, 2014).
Com o advento do IPv6, a possibilidade de endereços disponíveis cresce dos
pouco mais de 4.2 bilhões para aproximadamente 340 undecilhões de endereços,
isto é, dois elevado à potência 128. Esta nova forma de endereçamento possibilita
um novo conceito de Internet, batizado de Internet das Coisas (IOT – Internet of
Things).
1
No Brasil, assim como na Europa e Ásia, os endereços IPv4 já se esgotaram, restando pequenas reservas de
endereços para usos especiais, conforme notícia veiculada pelo Comitê Gestor da Internet no Brasil (cgi.br)
na página ipv6.br. Disponível em <http://www.ipv6.br/>. Acessado em 31 de outubro de 2014.
12
Uma rede tão abundante em endereços porém, carrega consigo uma forma
não prática na configuração destes, sendo necessária a configuração de serviços
que possibilitem um endereçamento automático. Uma outra necessidade visível para
administradores de rede é a identificação mnemônica dos dispositivos, que permita
uma fácil e rápida localização de endereços atribuídos.
A atribuição automática de endereços IP se dá por meio de um serviço
denominado DHCP (Dynamic Host Configuration Protocol), normatizado pela RFC
2131. Esta RFC afirma que um servidor DHCP deverá disponibilizar as
configurações da rede aos dispositivos, permitindo que estes tenham acesso à
mesma (RFC 2131, p. 2, tradução nossa). Para o IPv6, a RFC referente ao DHCP foi
atualizada, trazendo novas formas de endereçamento e de autoconfiguração. O
serviço de DHCP para IPv6 passa a ser chamado então de DHCPv6 e está
normatizado na RFC 3315.
Para a identificação dos dispositivos o IPv6 utiliza o padrão referido na sua
RFC chamado DUID (DHCPv6 Unique Identifier), com uma derivação proposta pela
RFC 6355, definido nesta como DUID-UUID (DHCPv6 Unique Identifier - Universally
Unique Identifier). O DUID-UUID é um novo tipo de identificador único que traz junto
a si um identificador universal único (RFC 6355, p. 2, tradução nossa). A principal
complicação em relação ao uso do DUID como identificador é o fato de que é
necessário alterar informações no cliente e também no servidor, isso gera trabalho
dobrado para os administradores. Alguns sistemas, como o Microsoft Windows,
possuem uma forma própria de gerar o DUID, uma vez que a RFC que o define
permite vários tipos de identificador. Já sistemas Linux precisam da intervenção do
usuário, afim de criar um DUID próprio. O MAC Address, por outro lado, é o mesmo
independente da versão e do sistema utilizado, isso facilita a opção pela sua
adoção, principalmente em sistemas onde há dual boot com os dois sistemas
citados.
13
1.1 Objetivos
Este trabalho apresenta uma análise nas formas utilizadas para a
identificação dos dispositivos conectados à rede, propondo a utilização - no DHCPv6
- do mesmo identificador utilizado no DHCPv4, uma vez que este já é amplamente
utilizado e conhecido por administradores de rede, permitindo a identificação
independente de sistema operacional com uma configuração simples e de fácil
entendimento. Todas as modificações propostas são feitas no servidor, uma vez que
é comum que exista apenas um servidor e “n” clientes. Ao final, será apresentado
um script para automatização das tarefas em ambos os serviços de DHCP,
facilitando-as e visando causar o menor retrabalho possível
1.2 Justificativa
Redes IPv4 apresentam uma forma sólida de identificação de dispositivos em
servidores de DHCP. Esta identificação se dá através do endereço físico do
hardware de rede (MAC Address). Para redes IPv6, esta forma não é totalmente
funcional, uma vez que a RFC que o define traz modificações em relação a
identificação de dispositivos, ocasionando em um cansativo trabalho de configuração
de serviços de atribuição de endereços. É importante destacar que esse estudo visa
apenas facilitar a implantação inicial de um serviço de atribuição de endereços IPv6,
porém não com intenções de estabelecer um paradigma definitivo, mas sim uma
solução provisória, até que os administradores da rede implementem uma forma de
identificação definitiva para o DHCPv6, baseada nas normas previstas nas RFCs.
14
1.3 Estruturação do trabalho
Este trabalho será apresentado de modo argumentativo, apresentando em um
primeiro momento (Capítulo 2) estudos relacionados. Em um segundo momento
(Capítulo 3) serão analisadas as bases bibliográfica e tecnológica utilizadas para
constituir o desenvolvimento prático (Capítulo 4). Ao final do trabalho são
apresentados e discutidos os resultados, concluindo o trabalho com as
considerações finais e previsões para trabalhos futuros.
2 ESTUDOS RELACIONADOS
Uma rápida busca na Internet por DHCPv6 e MAC Address demonstra
dúvidas dos usuários, em fóruns especializados, em relação às formas de
identificação de dispositivos. A principal forma de identificação em IPv4, onde é
possível alocar um endereço de maneira estática para um dispositivo, utilizando o
endereço da camada de enlace como identificador, é uma das possíveis formas de
identificação em IPv6. Porém esta forma não esteve disponível desde o início e por
este motivo muitos usuários desconhecem serviços de DHCPv6 que a possibilite.
Tomek Mrugalski2 argumenta sobre a utilização de DUIDs e MAC Address na
sua apresentação “The Latest Developments in DHCPv6” e relaciona as vantagens e
desvantages do DUID em relação ao MAC. O DUID, segundo Tomek, soluciona
algumas questões, como mudança de hardware (que gera um novo identificador),
dispositivos que não possuem um endereço fixo para a camada de enlace e também
o fato de que um MAC Address pode não ser único (RIPE66.RIPE.NET, 2013).
Em contrapartida, o DUID introduz novos contratempos, como o fato de
alguns sistemas operacionais gerarem identificadores diferentes (o que cria
complicações em sistemas com dual boot), a reinstalação de sistema operacional
poderá gerar um novo DUID e um clone de uma máquina virtual (muito utilizado em
servidores de virtualização) clonará consigo o identificador. Uma outra questão que
poderá ocasionar empecilho, é o caso de um cliente não estar diretamente
conectado ao servidor (RIPE66.RIPE.NET, 2013).
2.1 DUID em servidores DHCPv4
2
Autor do Dibbler DHCPv6 Server e participante ativo da IETF desde 2009.
16
A RFC 4361 normatiza o uso de DUIDs em clientes DHCPv4. Segundo esta
RFC os clientes DHCPv4 deverão utilizar um sistema de identificação similar ao do
DHCPv6. Isso resolveria alguns problemas como mudança de hardware do
dispositivo, por exemplo, porém em um cenário onde a migração para o IPv6 é uma
prioridade, habilitar o uso de uma nova funcionalidade para o IPv4 poderia ocasionar
um gasto de tempo e recursos além do planejado pelos administradores da rede. O
mais coerente, neste caso, seria manter o funcionamento do IPv4 e habilitar o IPv6,
de uma forma segura e rápida. Uma vez que ambas as redes estejam estabelecidas,
caberá aos administradores decidir por uma forma de migração completa e
padronizada de acordo com as RFCs.
2.2 MAC Address em servidores DHCPv6
Uma das principais dúvidas de muitos usuários é em relação ao uso dos
endereços da camada de enlace (MAC Address) para a identificação dos clientes no
DHCPv6. As primeiras versões do ISC-DHCP Server que oferecem suporte ao
DHCPv6 não habilitam o uso do MAC para a alocação estática de um endereço IP a
um cliente. Ao tentar se utilizar da mesma forma de identificação do IPv4, o software
relata um erro, conforme a Figura 1 (ISC.ORG, 2014).
Este erro é a principal motivação deste estudo. Porém a partir da versão
4.2.23 o ISC-DHCP Server passou a aceitar a identificação de dispositivos no
DHCPv6 tal qual no DHCPv4. A RFC 6939 especifica a utilização da identificação
através do endereço LLA (Link-Layer Address) alegando que, para um operador que
utilize um sistema de DHCPv4 já operacional, o uso de uma pilha dupla para
serviços de DHCP seria facilitado ao utilizar este tipo de identificação, muito mais do
que a identificação por DUID em redes IPv4. A partir desta especificação – que sana
3
É possível que alguma versão anterior possua suporte à esta forma de identificação, porém não foi possível
realizar testes em versões entre a 4.1-ESV-R10 (onde não é possível utilizar a identificação por MAC) e
4.2.2, uma vez que a página oficial apenas oferece para download as versões 4.1-ESV-R10, 4.2.7 e 4.3.1. O
acesso a versão 4.2.2 (que não está disponibilizada na página oficial) se deu através dos repositórios do
sistema operacional utilizado para a realização de todos os testes.
17
a motivação inicial deste trabalho – o foco então passou a ser uma análise em torno
das possíveis formas de identificação de hosts para o DHCPv6, com a proposta de
um script para automatização de algumas tarefas de administração dos serviços de
DHCP.
Figura 1 – Erro DHCP
Fonte: Acervo pessoal.
3 REVISÃO DE LITERATURA E TECNOLOGIAS EMPREGADAS
Nesta seção serão revisadas obras literárias referentes às tecnologias
empregadas no trabalho, buscando explanar todos os tópicos necessários para o
entendimento profundo do assunto em questão. E em um segundo momento, serão
analisadas as tecnologias necessárias para o desenvolvimento prático, explorando
as possibilidades oferecidas e procurando esclarecer todas as questões referentes
ao IPv6, aos serviços de endereçamento e de identificação de dispositivos.
3.1 Endereçamento em IPv6
Dentre todas as diferenças trazidas pelo IPv6 em relação ao IPv4, a mais
notória está no endereçamento. Devido a nova forma de se endereçar, o IPv6 possui
79 trilhões de trilhões de vezes a quantidade total de endereços IPv4, ultrapassando
a casa dos 340 undecilhões. Um endereço IPv6 possui 128 bits, separados por
duoctetos, ou seja, oito campos de dezesseis bits, escrito na notação hexadecimal e
dividido por dois pontos (:). (BRITO, 2013)
3.1.1 Atribuição manual de endereços IPv6
Assim como no IPv4, no IPv6 os endereços podem ser configurados
manualmente. Apesar de não ser uma forma prática, em roteadores e firewalls é
recomendável que as configurações sejam feitas de forma manual, pois, na maioria
19
das vezes, o mesmo servidor é responsável por serviços básicos para o
funcionamento da rede.
A atribuição manual de endereços na nova versão do protocolo é similar à
versão antiga, podendo ser feita através da edição de um arquivo, comumente feito
em sistemas Unix e Linux, ou através de um gerenciador de redes, como no
Microsoft Windows, Smartphones e Tablets.
3.1.2 DHCPv6
O protocolo DHCP possui uma versão específica para o IPv6, sendo chamado
de DHCPv6. Este pode operar de duas formas, em uma delas os endereços são
autoconfigurados pelos dispositivos – utilizando informações transmitidas pelo
servidor de DHCP – sendo chamada de Stateless Address Autoconfiguration
(SLAAC). A outra forma de configuração é semelhante ao serviço de DHCP do IPv4,
onde um servidor informa o endereço completo que a estação deverá utilizar, e não
só seu prefixo. Esta forma é chamade de Stateful Address Autoconfiguration.
(HAGEN, 2014, p. 154)
Stateless Address Autoconfiguration é uma forma de autoconfiguração de
endereços definida na RFC 4862 e disponível no IPv6, que pode ocorrer de duas
formas, sendo a configuração interna obrigatória aos dispositivos que pretendem se
comunicar
com
uma
rede.
Na
configuração
interna,
o
dispositivo
cria
automaticamente um endereço do tipo link-local, utilizando o prefixo FE80::/64 e a
técnica EUI-64, mencionada no item 2.2. Após a criação do endereço, inicia-se um
processo de detecção de endereços duplicados (DAD – Duplication Address
Detection) e após a constatação de que o mesmo é único, a comunicação com a
rede se torna possível. (NIC.br, 2012, p. 73)
Uma outra forma de autoconfiguração stateless depende das mensagens de
router advertisement (RA). Neste caso, um servidor transmite aos clientes
informações sobre a rede como, por exemplo, o prefixo a ser adotado. A partir daí, o
20
dispositivo gera um endereço de forma automatizada, utilizando o prefixo recebido e,
na maioria das vezes, a técnica EUI-64. Logo após é iniciado o processo de
detecção de endereços duplicados e não ocorrendo nenhum erro o dispositivo passa
a ter acesso a rede. A principal diferença deste tipo de endereço em relação ao linklocal, está no fato de que este será global e único, e, por este motivo, roteável na
Internet. O problema neste tipo de configuração é que o servidor não guarda os
estados de conexão, ou seja, não é possível alocar um endereço específico para um
host, e em grandes redes a tarefa de identificar qual cliente utiliza um determinado
IP se torna complicada (NIC.BR, 2012., p.73). A Figura 2 demonstra um cenário de
atribuição de prefixo de endereço stateless com troca de mensagens RA.
Figura 2 – Cenário Stateless
Fonte: BRITO, 2013, p. 97
21
A forma de endereçamento Stateful Address Autoconfiguration é um dos focos
deste trabalho e, por tanto, será vista de forma mais aprofundada no capítulo 4.
3.2 Protocolo NDP
O Protocolo de Descoberta de Vizinhança (NDP – Neighbor Discovery
Protocol) foi desenvolvido com a finalidade de resolver problemas de interação entre
dispositivos vizinhos em uma rede. Está normatizado através da RFC 4861 e atua
diretamente
em
duas
finalidades
essenciais
na
comunicação
IPv6,
a
autoconfiguração e a transmissão de pacotes, sendo fundamental, em especial para
os serviços de autoconfiguração,
O NDP é utilizado tanto pelos roteadores quanto pelos clientes da rede e tem
em suas funções os serviços: Neighbor Discovery (ND), Router Discovery (RD),
Stateless Address Autoconfiguration, Address Resolution, Neighbor Unreachability
Detection (NUD), Duplicate Address Detection, e Redirection.(HAGEN, 2014, p. 88,
tradução nossa)
Algumas questões operacionais podem resultar em vulnerabilidades no
protocolo NDP quando uma rede é escaneada. A RFC 6583 as descreve a apresenta
técnicas de mitigação para a proteção contra ataques de negação de serviço, por
exemplo.
3.3 Identificação de dispositivos em servidores DHCP
22
A Identificação de dispositivos é parte importante para a questão
organizacional de uma rede de computadores. Através desta identificação, é
possível especificar um endereço para um determinado host e autorizar ou negar
acesso a determinados recursos da rede, por exemplo. Para o DHCPv4 a forma de
identificação de dispositivos mais utilizada é o endereço físico do hardware de rede,
enquanto o DHCPv6 possui um capítulo em sua RFC tratando desta condição, bem
como uma derivação nas formas de identificação, proposta na RFC 6355.
Uma das principais causas para o uso do endereço físico do hardware de
rede para a identificação dos dispositivos é o fato desta técnica já ser abordada em
servidores de DHCPv4, permitindo assim apenas uma atualização nos endereços.
Há também o fato de que em sistemas com dual boot é interessante atribuir o
mesmo endereço IP, independente do sistema operacional. E como o Microsoft
Windows possui uma forma própria para a criação do DUID se faz necessária a
utilização do MAC Address, uma vez que este endereço é o mesmo em ambos os
sistemas.
3.3.1 DUID
DUID (DHCP Unique Identifier) é um identificador único de interface utilizado
para comparação em servidores DHCP. Todo o dispositivo de rede deve ter um, que
será utilizado por um servidor de DHCP para identificar uma interface em uma rede.
DUIDs devem servir unicamente para comparação e não devem ser interpretados de
forma alguma. A RFC 3315 traz, no capítulo nove, especificações e tipos de DUIDs a
serem utilizados, mas não os restringe, uma vez que novos tipos poderão ser
definidos no futuro (RFC 3315, 2003, p. 18, tradução nossa)
O DUID é tratado como uma opção, por ter tamanho variável e não ser
obrigatório em uma mensagem DHCP. Este é projetado para ser único e imutável em
um dispositivo, mesmo quando houver substituição no hardware. Um DUID deve ser
globalmente único e simples de ser gerado, por este motivo, existe mais de um tipo
23
de DUID (RFC 3315, 2003, p. 19, tradução nossa).
Um DUID consiste em um identificador variável (com um máximo de 128
octetos, não incluindo o identificador de tipo) precedido por um código de dois
octetos representando seu tipo. Os estilos definidos em RFC são os seguintes:
Endereço de camada de enlace com identificador de tempo (Link-layer address plus
time), identificador único atribuído pelo fornecedor baseado em um número
empresarial (Vendor-assigned unique ID based on Enterprise Number) e endereço
de camada de enlace (Link-layer address) (RFC 3315, 2003, p. 19, tradução nossa).
No primeiro estilo, o DUID consiste no identificador de tipo com o valor 01,
dois octetos contendo o código referente ao tipo de hardware, quatro octetos
contendo um identificador de tempo e o endereço da camada de enlace (MAC
Address). O código do tipo de hardware deverá ser válido, atribuído pela IANA. No
segundo estilo o DUID é atribuído pelo fornecedor do dispositivo e deverá ter um
código empresarial privado, mantido pela IANA, seguido de um identificador único
atribuído pelo fornecedor. O identificador de estilo, que precede os códigos
atribuídos pelo fornecedor, é o número 02 (RFC 3315, 2003, p. 19, 20, tradução
nossa).
O DUID baseado no endereço da camada de enlace possui como código de
estilo o número 03, seguido de dois octetos contendo o código para o tipo de
hardware e, logo depois, o endereço da camada de enlace (MAC Address) de uma
das interfaces conectadas de forma permanente ao dispositivo. Assim como no
primeiro tipo de DUID, o código do tipo de hardware deverá ser válido, atribuído pela
IANA (RFC 3315, 2003, p. 21, 22, tradução nossa).
3.3.2 DUID-UUID
DUID-UUID (DHCP Unique Identifier - Universally Unique Identifier) é uma
nova forma de identificação baseada no DUID e também em um identificador
universal, o UUID, que é definido pela RFC4122. UUIDs já são utilizados e por este
24
motivo foi criada esta derivação de identificador. A identificação através de DUIDUUID não foi utilizada neste trabalho pois, como mencionado anteriormente, o foco é
a utilização de uma forma de identificação através do endereço físico do hardware,
permitindo a padronização das versões v4 e v6 dos serviços de DHCP e também o
uso de dual boot, obtendo o mesmo endereço independente do sistema operacional.
3.4 Serviços DHCPv6
Um serviço é uma aplicação executada em um servidor, com a finalidade de
atender as requisições dos clientes conectados à ela através da rede (MORIMOTO,
2011, p. 16). Frequentemente se utiliza a nomenclatura “servidor” também para se
referir aos serviços. Por exemplo, servidor de DHCP, refere-se ao serviço de DHCP
que é executado no servidor que o provê. Essa abordagem é mais usual e por esse
motivo foi também utilizada neste trabalho.
Serviços de DHCP são muito populares desde o IPv4, visto que foram de
suma importância para que esta versão se mantivesse ativa por mais alguns anos.
No IPv6 o DHCP funciona, de modo geral, da mesma forma como no protocolo
anterior. Porém, possui algumas variantes, conforme mencionado no item 2.3.2. Por
possuírem código aberto e licenças que permitem a modificação deste, os softwares
analisados foram: Dibbler DHCPv6, ISC-DHCP (Internet Systems Consortium)
Server e Wide DHCPv6 Server.
O software ISC-DHCP Server provê os serviços de DHCPv4 e v6, ao contrário
dos demais supracitados, e também inclui, suporte à identificação de dispositivos
através do endereço de hardware nas versões 4.2.2, 4.2.7 e 4.3.1 (outras versões
não puderam ser testadas por não estarem disponíveis na página oficial). A versão
4.1-ESR-R10, que possui suporte estendido e está disponível no site oficial, não
oferece suporte à identificação de dispositivos através do endereço da camada de
enlace. Por esses motivos, e por ser a versão current-stable, o ISC-DHCP Server
4.2.7 foi utilizado para o desenvolvimento do trabalho (ISC.ORG, 2014).
25
3.5 Pilha dupla IPv4 e IPv6
Como mencionado anteriormente, IPv4 e IPv6 não são compatíveis e,
portanto, são necessárias técnicas que possibilitem a coexistência de ambos. Uma
vez que a configuração de um protocolo não reflete na configuração do outro, em
uma rede local é recomendado que se utilize pilha dupla, isto é, ambos os protocolos
configurados em todos os equipamentos.
Um host utilizando pilha dupla terá suporte completo para ambos os
protocolos. Nas comunicações em que se faz necessário o uso de IPv4 o dispositivo
se comportará como um nó IPv4, já nas comunicações em que é necessário o uso
de IPv6 o host se comportará como um nó IPv6. Um nó IPv4/IPv6 deverá ter
configurado ao menos um endereço de cada versão do protocolo, devendo utilizar
mecanismos de ambos para realizar essas configurações (DHCP, por exemplo)
(HAGEN, 2014, p. 220 – tradução nossa).
4 IDENTIFICAÇÃO DE CLIENTES E ALOCAÇÃO DE ENDEREÇOS
Como visto nos capítulos anteriores, o IPv6 possui novas formas de
identificação de dispositivos para o serviço de DHCP. Posteriormente essas novas
formas foram padronizadas também para o IPv4, porém a forma mais utilizada para
a identificação de dispositivos no IPv4 ainda é através do MAC Address. No início,
não era possível utilizar no IPv6 a mesma forma de identificação do protocolo
anterior – o que para muitos administradores de rede gerou um certo transtorno – e
por isso a utilização de endereços da camada de enlace para identificar dispositivos
no IPv6 foi normatizada em uma RFC.
Ao decorrer desde capítulo será estudada a Auto Configuração Stateful,
através do DHCPv6 e a atribuição estática de endereços utilizando o endereço de
hardware como identificador de dispositivo, tanto no IPv4 quanto no IPv6, neste
capítulo também será demonstrado o funcionamento dos serviços de DHCPv4 e v6
utilizando o mesmo identificador e com funcionamento em pilha dupla, em um
mesmo servidor. Será demonstrado o funcionamento em clientes utilizando os
sistemas Microsoft Windows, GNU Linux e MAC OSX.
Algumas plataformas móveis utilizam MAC Address aleatório, o que
impossibilita a sua utilização como identificador. Para este caso deve-se utilizar o
DUID como forma de identificação de dispositivo. Por esse motivo e pela
inacessibilidade às versões mais recentes dos sistemas Windows Phone, Android e
iOS, os mesmos não serão utilizados neste trabalho.
4.1 Stateful Autoconfiguration
A Autoconfiguração Stateful (Stateful Autoconfiguration) nada mais é do que
27
um serviço de DHCP reproduzido de forma similar ao que acontece no IPv4, sendo
muito utilizada em servidores Windows e Linux. Nessa forma de atribuição, além do
endereço do nó da rede, também podem ser informados pelo servidor os endereços
de DNS, por exemplo. É importante ressaltar que, ao contrário do DHCPv4, na nova
versão os endereços de Gateway são informados pelo mesmo serviço de anúncios
de RA e não pelo serviço de DHCP. Um endereço IPv6 pode ser atribuído através de
um DHCPv6 utilizando quatro mensagens básicas entre os nós da rede: solicit,
advertise, request e reply (BRITO, 2013, p. 98). A Figura 2 demonstra um cenário
básico de comunicação entre o cliente e o servidor, para a atribuição de um
endereço IPv6. Já a Figura 3 demonstra um cenário similar, reproduzido em uma
rede IPv4.
Figura 3 – Atribuição DHCPv6
Fonte: Microsoft Developer Network
Disponível em: http://msdn.microsoft.com/en-us/library/cc227265.aspx
28
Figura 4 – Atribuição DHCPv4
Fonte: Microsoft Developer Network
Disponível em: http://msdn.microsoft.com/en-us/library/cc227265.aspx
Apenas um servidor deve responder as requisições dos clientes pois, caso
contrário, as informações da rede poderão se tornar ambíguas. Esse é o principal
motivo pelo qual se deve realizar todas as alterações propostas no servidor, e não
nos clientes. Enquanto, normalmente, há apenas um servidor de DHCP para a rede,
a quantidade de clientes é praticamente ilimitada (principalmente em se tratando de
IPv6). Realizar mudanças em todos os clientes acarretaria em um gasto excessivo
de tempo e recursos.
4.2 Router Advertisement Daemon for IPv6
Ao contrário do IPv4, no IPv6 o endereço de gateway não é informado pelo
servidor de DHCP, esta tarefa é de responsabilidade do serviço de RA. Não é
necessário para o funcionamento do DHCPv6 que exista um serviço de RA na rede,
porém para que haja encaminhamento entre redes distintas, este servidor deverá ser
29
configurado separadamente. Como neste trabalho não serão demonstrados
encaminhamentos entre redes, o serviço de Router Advertisement não foi
demonstrado de forma aprofundada, mas, para que se entenda melhor o
funcionamento do DHCPv6, uma configuração básica do RADVD será demonstrada
neste tópico e o script para gerenciamento de serviços de DHCP trará opções para a
configuração e utilização deste serviço.
RADVD é um daemon responsável pelas mensagens RA em uma rede. O
RADVD escuta as mensagens de Router Solicitation e realiza o anuncio de
mensagens Router Advertisement, conforme descrito na RFC4861. Estes anúncios
permitem que os dispositivos configurem, de forma automatica, endereços IP e
alguns outros parâmetros. Para que o RADVD inicialize, é necessário que o IPv6
forwarding esteja habilitado. No Debian Linux basta alterar o valor em
“/proc/sys/net/ipv6/conf/all/forwarding” de “zero” para “um”4. (DEBIAN.ORG, 20--).
O arquivo de configuração do RADVD – radvd.conf – deve localizar-se em
“/etc/”, ou se o usuário optar por armazená-lo em outro local, este deverá ser
passado como um parâmetro durante a inicialização do daemon. Após a
configuração, para que o serviço seja inicializado, deve-se executar, como super
usuário, o comando “/etc/init.d/radvd start”. Outras informações sobre opções
disponíveis para utilização no RADVD poderão ser obtidas nos manuais de
configuração do software, podendo ser acessados através dos comandos “man
radvd” e “man radvd.conf”. A Figura 5 apresenta o arquivo de configuração utilizado
para a realização deste estudo.
A primeira opção, no arquivo de configuração demonstrado acima, especifica
em qual interface o serviço irá atuar. Já a segunda opção especifica, se serão
propagadas ou não, mensagens de RA e pode assumir os valores “on” ou “off”. A
opção “prefix” especifica o prefixo de rede que será divulgado, neste caso o prefixo
é: 2001:db8:123::/64.
4
O diretório “all” indica que o valor será alterado para todas as interfaces. Para que seja alterado em apenas
uma, o “all” deve ser substituído pelo valor correspondente ao identificador de interface.
30
Figura 5 – Arquivo de configuração radvd.conf
Fonte: Acervo pessoal
Dentro da opção “prefix” são incluídos os atributos validos apenas para esta
seção, ou seja, se forem declarados outros prefixos, os valores destes não serão
influenciados. A opção “AdvOnLink”, quando definida, indica que este prefixo pode
ser utilizado para determinações “on-link”, quando não definida, não são feitas
determinações para “on-link” ou “off-link”.
Algumas opções configuradas no RADVD afetam diretamente os serviços de
DHCPv6, como por exemplo as opções “ADVManagedFlag”, “ADVOtherConfigFlag”
e “ADVAutonomous”. A primeira especifica se os endereços serão ou não
configurados utilizando o mecanismo de autoconfiguração statefull e a segunda
especifica se outras informações, além do endereço, deverão ser obtidas através da
autoconfiguração statefull. Se o valor da opção ADVManagedFlag for verdadeiro, o
valor da ADVOtherConfigFlags será verdadeiro por consequência (RFC 2462, 1998,
p. 11 – tradução nossa). Para que não seja necessária a intervenção do usuário para
que o dispositivo obtenha um endereço através do DHCP, ambas as opções devem
ser configuradas como “on”. Neste caso o dispositivo receberá do RADVD uma
mensagem informando que as informações da rede devem ser obtidas através do
31
DHCP.
Já a opção “ADVAutonomous”, quando configurada, indica que o prefixo pode
ser utilizado para a opção de configuração de endereços autônoma (RADVD.CONF,
20-- – tradução nossa). Mais opções de configuração do RADVD podem ser obtidas
através do comando “man radvd.conf”.
4.3 Atribuição de endereços através do ISC-DHCP Server
O software ISC-DHCP Server (utilizado por prover o serviço de DHCP para
IPv4 e v6) realiza a atribuição estática de endereços, de forma dinâmica, ou seja, é
necessário que os dispositivos sejam cadastrados no serviço previamente, alocando
os endereços IP que serão utilizados especificamente para cada host. Para isso o
ISC-DHCP Server utiliza arquivos de configuração distintos em cada versão do
protocolo IP. Neste caso, foram utilizados os arquivos “dhcpd.conf” para IPv4 e
“dhcpd6.conf” para IPv6. As figuras 6 e 7 apresentam a área de alocação dos
endereços em ambos os arquivos de configuração.
Figura 6 – Arquivo de configuração dhcpd.conf
Fonte: Acervo pessoal.
32
A utilização de uma forma de identificação não exclui o uso de outra, isto é, é
possível utilizar DUID e MAC Address no mesmo arquivo de configuração. Na figura
6, é possível verificar que um dos hosts foi configurado para ter seu endereço
alocado propositalmente através de DUID (Windows 8), enquanto os outros hosts
tiveram seus endereços alocados através do MAC Address. A escolha do Windows 8
para alocação através deste tipo de identificador se deu pelo simples fato de que o
Windows gera um DUID automaticamente, enquanto no Linux é necessário alterar
um arquivo de configuração, já o Windows 7 foi configurado através do MAC apenas
para demonstrar que ambas as formas são funcionais no Microsoft Windows.
Figura 7 – Arquivo de configuração dhcpd6.conf
Fonte: Acervo pessoal.
As figuras 8, 9, 10 e 11 demonstram a aquisição dos endereços alocados
anteriormente para os clientes. São respectivamente: Linux, MAC OSX, Windows 7 e
Windows 8.
33
Figura 8 – IPv6 Linux
Fonte: Acervo pessoal.
O sistema Debian Linux foi utilizado – tanto para o servidor quanto para o
cliente – para realizar os testes. A versão sete deste sistema foi utilizada por ser a
atual versão stable, isto é, versão de produção. O software utilizado para obter os
endereços DHCP foi o “dhclient”, provido pelo ISC-DHCP. Em qualquer distribuição
Linux que utilize o “dhclient” a atribuição dos endereços, tal qual demonstrado aqui,
deverá funcionar. Na Figura 8 se nota que foi atribuído o endereço 192.168.1.11 no
IPv4 e 2001:db8:123::a1/64 no IPv6, exatamente como alocado nos arquivos de
configuração do servidor.
Na Figura 9 é possível notar que o endereço IPv6 atribuído é diferente do
alocado no servidor. Isso se deve ao fato de que o OSX Yosemite (versão corrente)
não permitiu o uso de DHCPv6 alocado estaticamente, apenas a Auto Configuração
Stateless obteve sucesso ao entregar um endereço para este sistema. Foram
testados DUID e alocação através do endereço de hardware e em nenhuma das
34
ocasiões a opção de alocação automática do OSX obteve o IP, sua funcionalidade
mostrou-se ativa apenas quando configurado o serviço de Router Advertisement.
Figura 9 – IPv6 MAC OSX
Fonte: Acervo pessoal.
Nota-se que, no MAC OSX o IPv4 foi atribuído corretamente com o endereço
192.168.1.4, enquanto o IPv6 utilizado pelo sistema é do tipo SLAAC.
35
Figura 10 – IPv6 Windows 7
Fonte: Acervo pessoal.
No Windows 7 a alocação foi feita através do MAC Address para ambos os
IPs. O endereço IPv4 atribuído foi 192.168.1.2 e o endereço IPv6 foi
2001:db8:123::b2, tal qual os arquivos de configuração do servidor.
36
Figura 11 – IPv6 Windows 8
Fonte: Acervo pessoal.
No Windows 8 foram alocados endereços utilizando duas formas de
identificação simultaneamente, endereço de hardware para o IPv4 e DUID para o
IPv6. Os endereços atribuídos foram 192.168.1.3 para o IPv4 e 2001:db8:123::c3
para o IPv6. Foram utilizadas apenas duas versões do Windows por serem as
versões de produção providas pela Microsoft. Cogitou-se a realização de testes
também com o Windows 10, porém este está em fase beta e até o momento não
apresenta mudanças, nos quesitos testados, em relação ao seu antecessor.
37
4.4 Automatização de tarefas de administração para servidores DHCP
Ao iniciar as pesquisas para a realização deste trabalho, a utilização de MAC
Address como identificador de host para IPv6 recém houvera sido normatizada em
uma RFC, e, por tanto, seu funcionamento ainda não tivera sido habilitado no ISCDHCP Server. Este fator levou as pesquisar iniciais sobre este servidor de DHCP,
buscando uma forma de implementar esta forma de identificação. Porém, a Internet
Systems Consortium realizou mudanças no código do seu serviço de DHCP e com
isso os estudos relacionados ao código do ISC-DHCP Server deixaram de ser
necessários. As formas de identificação, e estudos relacionados à estas, foram
demonstrados nos tópicos anteriores e, sendo assim, a seguir será apresentado um
script de automatização de tarefas de administração para serviços de DHCP.
4.4.1 Script para cadastro automatizado de clientes em servidores DHCP
Uma das grandes vantagens na utilização do GNU Linux é a possibilidade de
administração do sistema através de scripts. Um script, no Linux, nada mais é do
que uma lista de comandos que deverão ser executados, como se o usuário
estivesse inserindo-os em linhas de comando. Um Shell é o interpretador de
comandos utilizado por sistemas Linux e Unix, basicamente é o que executa os
comandos inseridos pelo usuário (JARGAS, 2008).
Um script em Shell pode ser simples, contendo poucos comandos, ou
complexo, contendo várias linhas de código, com cases, funções, etc. Neste tópico
será demonstrado um script de automatização para cadastro de dispositivos nos
servidores de DHCPv4 e v6. O script deve verificar a compatibilidade do sistema
com os serviços de DHCPv6, bem como habilitar o funcionamento tal qual no IPv4.
Porém o objetivo principal é realizar a inclusão de novos hosts em ambos os
arquivos de configuração (dhcpd.conf e dhcpd6.conf), coletando informações
38
básicas como o hostname, MAC Address ou DUID e os endereços IPv4 e v6 que
serão alocados para cada cliente.
4.4.1.1 Sasdhcp46.sh
A seguir será apresentado um script para administração dos serviços de
DHCP, para as versões 4 e 6, o mesmo pode ser conferido na íntegra no Apêndice
A. A Figura 12 apresenta a tela inicial do script.
Figura 12 – Tela inicial sasdhcp46.sh
Fonte: Acervo pessoal.
As Figura 13, 14 e 15 apresentam a opção de verificação de funcionalidade
dos serviços de DHCPv6. São verificadas a existência dos pacotes “RADVD” e “ISC-
39
DHCP Server”, caso não estejam instalados, é oferecida a opção de instalação. Para
o pacote “ISC-DHCP Server” também é oferecida a opção de atualização, se a
versão deste for incompatível com a utilização do MAC Address como identificador
de interface.
Figura 13 – Verificação do pacote RADVD
Fonte: Acervo pessoal.
40
Figura 14 – Verificação do pacote ISC
Fonte: Acervo pessoal.
Figura 15 – Verificação da versão do pacote ISC
Fonte: Acervo Pessoal
41
As Figuras 16 e 17 trazem a opção de criação dos arquivos de configuração.
A mesma cria o arquivo “radvd.conf” baseado em dados fornecidos pelo usuário e
copia as informações do arquivo de configuração do DHCPv4 para o arquivo de
configuração do DHCPv6, solicitando, logo após, que o usuário altere os dados
referentes a sua rede, adequando-a para o IPv6.
Figura 16 – Criação do arquivo radvd.conf
Fonte: Acervo pessoal.
42
Figura 17 – Criação do arquivo dhcpd6.conf
Fonte: Acervo pessoal.
A Figura 18 apresenta o menu de gerenciamento de host, com opções de
inclusão, alteração e exclusão de uma entrada.
A Figura 19 demonstra a primeira opção do menu de gerenciamento de host.
O mesmo insere um registro nos serviços de DHCP baseado em dados fornecidos
pelo usuário. As outras opções do menu de gerenciamento não foram
implementadas nesta versão do script, porém este já está preparado para recebê-las
assim que for possível realizar esta implementação.
43
Figura 18 – Gerenciamento de Hosts
Fonte: Acervo pessoal.
Figura 19 – Cadastra Host
Fonte: Acervo pessoal.
44
A Figura 20 apresenta informações de contato e licença do script.
Figura 20 – Sobre
Fonte: Acervo pessoal.
CONSIDERAÇÕES FINAIS
No decorrer deste trabalho foram estudadas as novas formas de
endereçamento e identificação de dispositivos no protocolo de Internet versão seis,
relacionando com o protocolo anterior, o IPv4. Concluiu-se que o IPv6 possibilita não
apenas uma significativa quantidade de endereços, mas também traz novas funções
ou melhora algumas já existentes no IPv4. Porém, percebeu-se que com o IPv6
também vem à tona algumas questões que envolvem um planejamento detalhado.
Entre elas está a identificação de dispositivos em serviços de DHCP.
Novas formas de identificação foram criadas, resolvendo algumas limitações
da forma antiga. Surgiu o DUID, que possui quatro possíveis tipos de identificador e,
um pouco depois, essa forma de identificação também foi estruturada para o IPv4. O
grande problema verificado, quanto a essas novas formas de identificação, se deu
em relação ao custo na migração de redes com muitos dispositivos. Recadastrar
todos os dispositivos de uma rede é uma tarefa que exige tempo e disponibilidade,
principalmente em hosts onde há mais de um sistema operacional, isso gerou
desconforto para muitos administradores de rede, e talvez este seja um dos motivos
pelos quais a adoção do IPv6 ainda não foi alavancada.
O IPv4 possui uma forma simples e sólida de identificação de dispositivos
para alocação de endereços. O endereço de hardware é utilizado, por ser sempre o
mesmo, independente do sistema operacional, por não mudar no caso de uma
reinstalação de sistema e por ser alterado ao clonar um sistema, o MAC Address
possibilita a identificação quase inequívoca de um dispositivo em uma rede local.
Essa forma de identificação foi regularizada para o IPv6, facilitando a migração de
uma rede, uma vez que se um servidor de DHCPv4 possui alocação estática de
endereços, basta que se alterem algumas informações para que seja utilizada a
mesma estrutura para a identificação no DHCPv6.
O IPv4 foi fundamental para a um estabelecimento sólido da Internet e
mesmo apresentando imperfeições mantém um funcionamento estável até os dias
de hoje. Porém o IPv6 trouxe mudanças benéficas para as redes de computadores e
46
deve ser adotado de forma massiva, principalmente nos tempos atuais, quando o
IPv4 caminha para um esgotamento de endereços. Estamos adentrando um novo
tempo, onde os mais diversos tipos de dispositivos terão conexão com a Internet,
para tanto, são necessários endereços em grandes quantidades e o IPv6 deverá
suprir esta necessidade.
Por fim foi proposto um script que deve facilitar o cadastro de novos
dispositivos e a migração de redes de pequeno e médio porte, realizando uma
verificação no sistema, em busca de compatibilidade para o funcionamento dos
serviços de DHCPv4 e v6 e também permitindo o cadastro de novos dispositivos
para o funcionamento nos dois protocolos. O script automatiza tarefas simples, mas
que poderiam tomar muito tempo na migração de uma rede inteira, porém este
carece de funções como alteração e exclusão de um host nos arquivos de
configuração do DHCP, e também a inclusão, alteração ou exclusão destes hosts
nos serviços de DNS e DNS reverso.
Estas limitações dão margem para trabalhos futuros, onde novas formas de
identificação que possam surgir ou o cadastro de novos serviços, possam ser
automatizados. A indisponibilidade de algumas ferramentas para pesquisa e
desenvolvimento deste trabalho possibilitou apenas a criação de um sistema básico
para automatização das tarefas de administração de servidores DHCP, porém novas
ideias deverão ser introduzidas e o script será enriquecido. A administração de redes
é uma tarefa complexa e o uso de tecnologias que automatizem funções sempre
será bem vindo.
REFERÊNCIAS
BRITO, Samuel Henrique Bucke. IPv6: O novo protocolo da internet. São Paulo:
Novatec, 2013.
DEBIAN.ORG. RADVD (8): Man Page. Massachusetts, 20--. Disponível em:
<http://bit.ly/1FRnoDM>. Acesso em: 04 dez. 2014.
DEBIAN.ORG. RADVD.CONF (5): Man Page. Massachusetts, 20--. Disponível em:
<http://bit.ly/1yTrRDI>. Acesso em: 04 dez. 2014.
FLORENTINO, Adilson Aparecido. IPv6 na prática. São Paulo: Linux New Media do
Brasil Editora LTDA, 2012.
HAGEN, Silvia. IPv6 Essentials. 3. ed. Sebastopol: O’Reilly, 2014.
INTERNET ENGINEERING TASK FORCE. RFC 791. Fremont, 1981. Disponível em:
<http://www.ietf.org/rfc/rfc791.txt>. Acesso em: 31 out. 2014.
______.
RFC
2131.
Fremont,
1997.
Disponível
<https://www.ietf.org/rfc/rfc2131.txt>. Acesso em: 31 out. 2014.
em:
______.
RFC
2462.
Fremont,
1998.
<http://www.ietf.org/rfc/rfc2462.txt>. Acesso em: 17 dez. 2014.
Disponível
em:
______.
RFC
3315.
Fremont,
2003.
Disponível
<https://www.ietf.org/rfc/rfc3315.txt>. Acesso em: 31 out. 2014.
em:
______.
RFC
4361.
Fremont,
2006.
<http://www.ietf.org/rfc/rfc4361.txt>. Acesso em: 31 out. 2014.
Disponível
em:
______.
RFC
4861.
Fremont,
2007.
<http://www.ietf.org/rfc/rfc4861.txt>. Acesso em: 31 out. 2014.
Disponível
em:
______.
RFC
4862.
Fremont,
2007.
<http://www.ietf.org/rfc/rfc4862.txt>. Acesso em: 31 out. 2014.
Disponível
em:
48
______.
RFC
6355.
Fremont,
2011.
Disponível
<https://www.ietf.org/rfc/rfc6355.txt>. Acesso em: 31 out. 2014.
em:
______.
RFC
6853.
Fremont,
2012.
<http://www.ietf.org/rfc/rfc6583.txt>. Acesso em: 31 out. 2014.
Disponível
em:
______.
RFC
6939.
Fremont,
2013.
<http://www.ietf.org/rfc/rfc6939.txt>. Acesso em: 31 out. 2014.
Disponível
em:
IPV6.BR.
Introdução.
São
Paulo,
2012.
<http://ipv6.br/entenda/introducao/>. Acesso em: 31 out. 2014
Disponível
em:
ISC.ORG. ISC DHCP: Enterprise Grade Solution for Configuration Needs. Redwood
City, 2014. Disponível em: <http://www.isc.org/downloads/dhcp/>. Acesso em: 07
nov. 2014.
JARGAS, Aurelio Marinho. Shell Script Profissional. São Paulo: Novatec, 2008.
LACNIC. O que é IPv6? [S.l.], 201-. Disponível em: <http://portalipv6.lacnic.net/ptbr/o-que-e-ipv6/>. Acesso em: 31 out. 2014.
MICROSOFT.COM. Microsoft Developer Network: 1.3 Overview. [S.l.], 2014.
Disponível em: <http://msdn.microsoft.com/en-us/library/cc227265.aspx>. Acesso
em: 17 dez. 2014.
MORIMOTO, Carlos Eduardo. Servidores Linux: Guia Prático. Porto Alegre: Sul
Editores, 2011.
NIC.br. Apostila IPv6 básico. São Paulo: Ceptro.br, 2012. Disponível em:
<http://ipv6.br>
RIPE66.RIPE.NET. The Latest Developments in DHCPv6. Dublin, 2013. Disponível
em:
<https://ripe66.ripe.net/presentations/158-latest-development-in-dhcpv6.pdf>.
Acesso em: 29 de novembro de 2014.
APÊNDICES
Apêndice A – Script para administração de serviços DHCP (sasdhcp46.sh)
#!/bin/bash
###################################################################
### - sasdhcp46.sh - Scrit para Administração de Serviços DHCP versões 4 e 6.
###################################################################
#verifica se o usuário é root
if [ `id -u` != 0 ]
then
echo "Você precisa de permissão de super usuário para continuar"
exit
fi
###Informações de configuração dos serviços de DHCP.
#Altere estas informações se houver necessidade
arqipv4=/etc/dhcp/dhcpd.conf #arquivo de configuração do DHCPv4
arqipv6=/etc/dhcp/dhcpd6.conf #arquivo de configuração do DHCPv6
v4eth=eth0 #interface para operação no IPv4
v6eth=eth0 #interface para operação no IPv6
arqradvd=/etc/radvd.conf # arquivo de configuração do RADVD
v4leases=/var/lib/dhcp/dhcpd.leases #arquivo de leases para o DHCPv4
v6leases=/var/lib/dhcp/dhcpd6.leases #arquivo de leases para o DHCPv6
Xdhcpd=/usr/sbin/dhcpd #binário executável do dhcpd
###Atenção, não altere a informação abaixo
validduid="0"
#####################
####função atualiza2
#####################
function atualiza2 {
clear
echo -n "É necessário realizar uma atualização para o ISC-DHCP-SERVER.
Deseja que o script realize esta atualização? (s/n)
>"
read atual
case $atual in
50
s) apt-get install --only-upgrade isc-dhcp-server ;;
n) main ;;
*) echo "Opção inválida"
sleep 1
atualiza2 ;
esac
main
}
####################
####função atualiza
####################
function atualiza {
clear
#verifica se é necessário atualizar o ISC-DHCP
x=`dpkg -l | tr -s " " | grep isc-dhcp-server | cut -d" " -f3 | cut -d"." -f1`
y=`dpkg -l | tr -s " " | grep isc-dhcp-server | cut -d" " -f3 | cut -d"." -f2`
if [ $x -lt "4" ]
then
atualiza2 ;
elif [ $x -eq "4" ] && [ $y -lt "2" ]
then
atualiza2 ;
else
echo "O sistema está preparado para trabalhar com DHCPv6"
fi
main
}
####################
####função inclui
####################
function inclui(){
clear
cp $arqipv4 "/etc/dhcp/old.dhcpd.conf"
cp $arqipv6 "/etc/dhcp/old.dhcpd6.conf"
killall dhcpd
echo "host $nomehost {" >> $arqipv4
echo "hardware ethernet $macaddr;" >> $arqipv4
echo "fixed-address $v4addr;" >> $arqipv4
echo "}" >> $arqipv4
echo "host $nomehost {" >> $arqipv6
echo "hardware ethernet $macaddr;" >> $arqipv6
if [ $validduid == "1" ]
then
echo "host-identifier option dhcp6.client-id $duid;" >> $arqipv6
fi
echo "fixed-address6 $v6addr;" >> $arqipv6
echo "}" >> $arqipv6
$Xdhcpd -4 -cf $arqipv4 -lf $v4leases $v4eth
$Xdhcpd -6 -cf $arqipv6 -lf $v6leases $v6eth
51
read -p "Pressione ENTER para continuar"
main
}
#################
####função sobre
#################
function sobre {
clear
read -p "
Script para gerenciamento de serviços DHCP.
Desenvolvido por Giovani Pereira Nunes.
Contato: [email protected]
Este script foi feito e testado no Debian Linux. Instalações e atualizações
dos softwares relacionados dependem do DPKG, pacotes compilados
manualmente
poderão não funcionar.
Nenhuma garantia é fornecida com este script, use-o por sua conta e risco!
Pressione ENTER para retornar ao menu principal."
main
}
#########################
####função gerenciahosts
#########################
function gerenciahosts {
clear
read -p "Digite:
1- Para cadastrar um novo host;
2- Para alterar um cadastro;
3- Para excluir um host cadastrado;
0- Para retornar ao menu principal.
>" gerhosts
case $gerhosts in
1) cadastra ;;
2) echo "Opção ainda não disponível neste sistema." ; sleep 2 ;
main ;;
3) echo "Opção ainda não disponível neste sistema." ; sleep 2 ;
main ;;
0) main ;;
*) echo "Opção inválida"
sleep 1
gerenciahosts ;
esac
}
####################
####função cadastra
####################
function cadastra {
clear
52
read -p "Informe o nome do host: " nomehost
read -p "Informe o MAC Address: " macaddr
read -p "deseja utilizar DUID (s/n)?" duidsn
case $duidsn in
s) read -p "Informe o DUID: " duid ; validduid=1 ;;
n) validduid="0" ;;
*) echo "opção inválida!" ; cadastra ;;
esac
read -p "Informe o endereço IPv4: " v4addr
read -p "Informe o endereço IPv6: " v6addr
clear
echo "Host:" $nomehost
echo "MAC Address:" $macaddr
echo "DUID:" $duid
echo "IPv4:" $v4addr
echo "IPv6:" $v6addr
read -p "As informações estão corretas?(s/n)
>" info
case $info in
s) inclui "$nomehost" "$macaddr" "$duid" "$v4addr" "$v6addr" ;;
n) cadastra ;;
*) echo "Opção inválida"
sleep 1
gerenciahosts ;
esac
gerenciahosts
}
#######################
####função criaarqisc
#######################
function criaarqisc {
cp $arqipv4 $arqipv6
read -p "Atenção, será aberto o arquivo de configuração para DHCPv6.
As informações contidas foram copiadas do arquivo referenta ao DHCPv4,
você deve alterar as informações de acordo com a sua rede IPv6, excluindo
as
informações do IPv4.
Pressione ENTER para continuar"
nano $arqipv6
touch $v6leases
rclocal
}
#######################
####função criaarqradvd
#######################
function criaarqradvd {
clear
echo "Atenção, serão alteradas opções básicas para o funcionamento da
rede.
Para alterar informações de forma detalhada edite o arquivo $arqradvd
53
manualmente."
touch $arqradvd
echo "interface $v6eth {" > $arqradvd
echo "Altere as opções a seguir conforme a sua necessidade."
###AdvSendAdvert
i="0"
while [ $i -eq "0" ]
do
read -p "AdvSendAdvert (on/off)" advradvd
if [ $advradvd == "on" ] || [ $advradvd == "off" ]
then
echo "AdvSendAdvert $advradvd;" >> $arqradvd ;
i="1" ;
fi
done
###prefixo utilizado pelo RADVD
read -p "informe o prefixo IPv6 que será utilizado pelo RADVD
>" prefradvd
echo "prefix $prefradvd {" >> $arqradvd
###AdvOnLink
i="0"
while [ $i -eq "0" ]
do
read -p "AdvOnLink (on/off)" advradvd
if [ $advradvd == "on" ] || [ $advradvd == "off" ]
then
echo "AdvOnLink $advradvd;" >> $arqradvd ;
i="1" ;
fi
done
###AdvAutonomous
i="0"
while [ $i -eq "0" ]
do
read -p "AdvAutonomous (on/off)" advradvd
if [ $advradvd == "on" ] || [ $advradvd == "off" ]
then
echo "AdvAutonomous $advradvd;" >> $arqradvd ;
i="1" ;
fi
done
###AdvRouterAddr
54
i="0"
while [ $i -eq "0" ]
do
read -p "AdvRouterAddr (on/off)" advradvd
if [ $advradvd == "on" ] || [ $advradvd == "off" ]
then
echo "AdvRouterAddr $advradvd;" >> $arqradvd ;
i="1" ;
echo "};" >> $arqradvd
echo "};" >> $arqradvd
fi
done
clear
arqconfisc
}
########################
####função arqconfradvd
########################
function arqconfradvd {
clear
#####verifica se o radvd está instalado e se existe o arquivo de configuração
echo "Reunindo informações sobre o RADVD."
x=`dpkg -l | tr -s " " | grep radvd | cut -d" " -f2`
y=`find / -name radvd.conf`
if [ "$x" == "radvd" ] && [ "$y" != "$arqradvd" ]
then
criaarqradvd
elif [ "$x" == "radvd" ] && [ "$y" == "$arqradvd" ]
then
read -p "Já existe um arquivo de configuração para o RADVD ($y). Nada será
feito.
Pressione enter para continuar."
fi
clear
arqconfisc
}
########################
####função arqconfisc
########################
function arqconfisc {
#####verifica se existe o arquivo de configuração dhcpd6.conf
echo "Reunindo informações sobre o ISC-DHCP Server."
y=`find / -name dhcpd6.conf`
55
if [ "$y" != "$arqipv6" ]
then
criaarqisc
else
read -p "Já existe um arquivo de configuração de DHCPv6 para o ISC-DHCP
Server ($y). Nada será feito.
Pressione enter para continuar."
fi
rclocal
}
###########################
####função rclocal
###########################
function rclocal {
clear
echo "Atenção! Para inicializar o serviço de DHCPv6 automaticamente,
inclua a seguinte informação no arquivo rc.local:"
echo "$Xdhcpd -6 -cf $arqipv6 -lf $v6leases $v6eth"
read -p "Pressione ENTER para continuar."
main
}
###########################
####função compatibilidade
###########################
function compatibilidade {
clear
#verifica se o RADVD está instalado
x=`dpkg -l | tr -s " " | grep radvd | cut -d" " -f2`
if [ "$x" == "radvd" ]
then
echo "RADVD: OK"
else
echo "Você não possui o pacote RADVD instalado no sistema.
Este pacote é necessário para realizar o anúncio das mensagens RA.
Se você possui uma alternativa a este serviço, ignore este aviso.
Deseja instalar o RADVD?(s/n)"
read -p ">" instalar
case $instalar in
s) apt-get install radvd ; clear ;;
n) clear;;
*) echo "Opção inválida"
sleep 1
compatibilidade ;
esac
fi
56
#verifica se o ISC está instalado
x=`dpkg -l | tr -s " " | grep isc-dhcp-server | cut -d" " -f2`
if [ "$x" == "isc-dhcp-server" ]
then
echo "ISC-DHCP: OK"
sleep 2
atualiza ;
else
echo "Você não possui o pacote ISC-DHCP-Server instalado no sistema.
Deseja instalar?(s/n)"
read -p ">" instalar
case $instalar in
s) apt-get install isc-dhcp-server ;;
n) main ;;
*) echo "Opção inválida"
sleep 1
compatibilidade ;
esac
fi
main ;
}
#################
####função main
#################
function main {
clear
echo " MENU PRINCIPAL
Digite:
1- Para verificar os serviços de DHCPv6;
2- Para criar os arquivos de configuração;
3- Para acessar o menu de gerenciamento de hosts;
4- Para informações sobre o script;
0- Para sair."
read -p ">" option
case $option in
1) compatibilidade ;;
2) arqconfradvd ;;
3) gerenciahosts ;;
4) sobre ;;
0) clear ; exit ;;
*) echo "Opção inválida"
sleep 1
main ;;
esac
}
main