Hoje vamos explorar o famoso DHCP Option 43, usado principalmente na autoconfiguração de dispositivos como Access Points, Switches, Telefones IP, CPEs, dispositivos IoT e outros através do TR-069. Também vamos mostrar um exemplo de configuração utilizando o DHCP Server de um roteador Mikrotik entregando parâmetros via DHCP Option43 e permitindo a autoconfiguração de serviços no processo de atribuir endereço de IP ao dispositivo.

Isso nos possibilita, por exemplo, sinalizar um controlador externo ao dispositivo, automaticamente, mesmo que o equipamento tenha passado por um factory-reset.

A RFC 2132 “DHCP Options and BOOTP Vendor Extensions” [1] trata de diversos tipos de informações que podem ser enviadas através do protocolo DHCP como por exemplo o DNS, Máscara de sub-rede, endereço do gateway (router), atributos específicos de vendor e muitos outros mais.

O Option 43 é definido nesta RFC como “Vendor Specific Information” e é usado para que os clientes e servidores DHCP troquem informações específicas entre sí. A RFC não define que valores eu posso enviar, e nem que informações são estas e muito menos o tipo de dados. Ele apenas descreve a estrutura, que deve ser:

  • a) Uma única sequencia de code/length/value
Code Len Vendor specific information 
43 i1 i2 … 
  • b) Um ou mais parâmetros separados por um código (01, 02, 03 … ff)
Code 1 Len 1 Data 1 Code 2 Len 2 Data 2 Code n Len n Data n 
T1 n1 d1 T2 n2 T2 … … … 

Com esta estrutura, cada fabricante ou organização, pode modelar os dados como for mais conveniente para seu uso. Por exemplo, para access-points poderem ser configurados os endereços IP dos controladores Wifi permitindo seu “join” no controlador centralizado, para Telefones IP entregando o IP ou URL do servidor de telefonia e para os roteadores que suportem TR-069 poderem ser configurados com a URL do ACS. E tudo isso automaticamente!

O foco deste artigo será mostrar o uso do option 43 junto ao TR-069, enviando a URL do servidor ACS para a CPE através do servidor DHCP. Isso nos permite que o roteador mesmo resetado e sem um “template” de configuração, aprenda via DHCP a URL do servidor ACS junto do usuário e senha, dados necessários para se integrar ao ACS e permitir o TR-069 aplicar configurações na CPE automaticamente.

Mas antes de continuar, vou deixar alguns links de outros exemplos de caso de uso do option 43.

Configure DHCP OPTION 43 for Lightweight Access Points: https://www.cisco.com/c/en/us/support/docs/wireless-mobility/wireless-lan-wlan/97066-dhcp-option-43-00.html

VLAN ID Discovery over DHCP:
https://wiki.unify.com/wiki/VLAN_ID_Discovery_over_DHCP

Use DHCP Option 43 for Unifi Accesspoint Provisioning:
https://niksec.com/use-dhcp-option-43-for-unifi-accesspoint-provisioning/

Como o DHCP foi parar no TR-069

Se não sabe o que é o ACS, consulte nosso outro artigo .

O DHCP foi inserido como uma das formas de onboarding do ACS. O onboarding é o processo em que a CPE/roteador é configurada com um servidor ACS.
Existem três formas de se fazer o processo de onboarding das CPEs para um servidor ACS, segundo a especificação TR-069 do Broadband Forum [2]:

  • Forma 01: manualmente
  • Forma 02: através do DHCP Option 43
  • Forma 03: através de pré-configurações, também conhecidas como firmware com pré-set

O objetivo final de qualquer um dos três é um só: ter a URL do servidor ACS configurada na CPE, para que a mesma possa ser gerenciada através do protocolo TR-069.

Processo de solicitação do DHCP Option 43

O BroadBand Forum define alguns passos para que a CPE possa conseguir a URL do ACS através do DHCP.

A figura abaixo mostra os passos, e já vamos falar de cada um deles.

Passo a passo da comunicação:

  1. A CPE envia uma solicitação normal de DHCP Discover
  2. O servidor DHCP/roteador responde a mensagem com um DHCP Offer
  3. Aqui onde ocorre a mágica para a descoberta do ACS. A CPE precisa adicionar duas novas opções na mensagem de requisição: um é solicitar a option 43 no RPL (request parameter list – opção 55), e o outro é informar no Option 60 a string em letras minúsculas “dslforum.org”).
  4. O servidor DHCP, ao receber estas informações do passo 3, entende que precisa enviar o servidor ACS, e então ele o faz. DETALHE IMPORTANTE: cada fabricante utiliza um próprio padrão de codificação da URL+user+pass dentro do Option 43. Isso pode trazer alguns problemas em ambientes com diferentes vendors e implementações. Para estes casos, um servidor DHCP mais completo, que consiga ler outros parâmetros para decidir qual é o vendor e qual formato utilizar é o mais adequado (não espere isto do Mikrotik).
  5. A CPE então, com posse dos dados, configura o seu ACS e começa a brincadeira do TR-069 para ela. São diversas mensagens a seguir, que deixei de fora para simplificação.

Na especificação do TR-069 também estão definidos outros campos/protocolos que podem ser utilizados para o mesmo fim: DHCPv4 Option 125, DHCPv6 Option 17. Também citam diversas regras de descoberta pós-reset e como lidar com problemas de conectividade com o ACS. Mas estão fora do escopo deste artigo.

Exemplo de uma transação DHCP com Option 43 – Capturas de pacotes

  1. Solicitação da CPE (DHCP Discover):



    Aqui, vemos o primeiro passo de uma CPE Nokia na sua descoberta de servidores DHCP para atribuição de um endereço de IP automaticamente.
    Na mensagem, vemos o “Option: (53) DHCP Message Type (Discover) presente enquanto o mac-address de destino do Frame é o endereço de broadcast (ff:ff:ff:ff:ff:ff).

    Em poucas palavras, aqui é onde a CPE Nokia diz: “Preciso emprestar um endereço de IP de um servidor DHCP”😊
  2. Resposta do DHCP Server (DHCP Offer), já informando o Option 43:



    No processo de “Offer”, o servidor DHCP sinaliza a CPE Nokia informações de endereçamento gateway, subnet e já também os próprios valores de Option43 contendo dados de autoconfiguração de um servidor ACS, com URL, usuário e senha. Esta oferta é enviada de forma “unicast” destinada especificamente para a CPE Nokia. Aqui já constatamos além do Option43, dados como endereço de IP (Your Client IP Address sendo 192.168.2.253), Identificador do DHCP Server (DHCP Server Identifier, Option53) dentre outros dados.  
     
    Aqui, dizemos que é uma oferta feita pelo DHCP Server a CPE Nokia para atribuição do endereço de IP e demais parâmetros (incluindo o Option43).  
  3. Solicitação do Option 43 vindo da CPE (DHCP Request): 



    Uma vez que a CPE Nokia recebeu a “oferta” do servidor DHCP, ela então faz o processo de “DHCP-Request” requisitando “formalmente” via a mensagem do Option53 (Request) o endereço de IP que foi oferecido anteriormente (192.168.2.253), e adiciona uma série de parâmetros na requisição. Vemos na solicitação do atributo “Option55” dados como Subnet-Mask, Domain Name Server (DNS), Broadcast Address, etc, e também o “Option43”.  
     
    Ou seja, aqui, a CPE Nokia esta formalmente requisitando o empréstimo do endereço de IP 192.168.2.253 oferecido anteriormente, mas também requisitando uma série de outras informações incluindo o DHCP Option43.  
  4. Servidor DHCP envia última mensagem confirmando as informações (DHCP ACK):



    O servidor DHCP aqui, após receber e provisionar os recursos antes requisitados pela CPE, envia uma mensagem de “ACK” (Acknowledge), sendo a confirmação para a CPE Nokia de que ela pode usar os recursos que requisitou, além de entregar os demais recursos que porventura não estavam no passo de “Offer” e foram requisitados no passo “Request”.  
     
    Vemos aqui que foi enviado novamente o atributo “Option43”, onde contém o valor hexadecimal referente ao usuário, senha e URL do servidor ACS.  
     
    Com isto, temos a CPE Nokia configurada com os valores necessários para se integrar ao servidor ACS de forma automática, usando DHCP, mesmo que tenha passado por um factory-reset (que por padrão deixa a WAN ativa em DHCP-Client) 😊  

Exemplo de configuração no Mikrotik 

Aqui, veremos como configurar um roteador Mikrotik para, via DHCP-Server, entregar parâmetros de autoconfiguração de “clientes” via o Option43. 
 
A configuração será baseada na topologia abaixo, semelhante ao utilizado em nossos testes com uma CPE Nokia.  

Primeiro é necessário ter a configuração do DHCP Server, depois vincular as configurações de DHCP Option43.  
 
Utilizamos a rede 192.168.2.0/24 e a Vlan 881, conforme nosso exemplo: 

# Configuração do IP Address na Vlan 881 

/ip address 
add address=192.168.2.1/24 comment=DHCP-TR069 interface=vlan881 network=192.168.2.0 

# Configuração do Option 43 (necessário ter em mãos o value gerado): 

/ip dhcp-server option 
add code=43 name=tr069 
value="0x011E68747470733A2F2F6163732E6D6164653467726170682E636F6D2E62722F020A6D61646534677261706803076D616465346974" 

# Configuração do Network do DHCP Server: 

/ip dhcp-server network 
add address=192.168.2.0/24 dhcp-option=tr069 gateway=192.168.2.1 

# Configuração do Pool de IPs: 

/ip pool 
add name=dhcp_pool3 ranges=192.168.2.2-192.168.2.254 

# Configuração do DHCP Server com Pool de IPs e interface: 

/ip dhcp-server 
add address-pool=dhcp_pool3 disabled=no interface=vlan881 name=dhcp-tr069 

Você deve estar se perguntando, de onde aquele valor da opção 43 saiu? Existe sim uma regra para ser criada, e você pode conferir como gerar para seu servidor ACS no seguinte artigo.

Conclusão

Neste artigo, abordamos como utilizar o atributo “Option43” do DHCP para autoconfiguração de um servidor ACS em CPEs e dispositivos diversos. Abordamos o seu funcionamento e como ele pode ser utilizado para automação de entrega de configurações específicas a dispositivos utilizando um protocolo tão comum como o DHCP.

Conhecer as capacidades, atributos e opções que o fabricante e modelo de equipamento suportam nos ajudam a automatizar diversas configurações, incluindo mas não se restringindo ao gerenciamento de uma CPE, Nokia, via o TR-069.

Referencias:
[1] RFC 2132, DHCP Options and BOOTP Vendor Extensions, https://www.ietf.org/rfc/rfc2132.txt 
[2] TR-069, CPE WAN Management Protocol, https://www.broadband-forum.org/pdfs/tr-069-1-6-1.pdf