
O serviço que emite endereços IP para dispositivos na rede local parece ser um dos mais simples e mais familiares. No entanto, meus colegas mais jovens ainda ocasionalmente têm perguntas como "o computador está recebendo algum endereço estranho", e a aparência de um segundo servidor DHCP em um segmento de rede causa alguns problemas de emoção ou rede.
Para que aqueles que leem este material não tenham essas perguntas, eu gostaria de reunir várias informações básicas sobre a operação dos mecanismos de emissão de endereços IP, recursos e exemplos de configuração de configurações protegidas e tolerantes a falhas. Sim, e talvez especialistas inexperientes estejam interessados em atualizar as conexões neurais.
Um pouco de teoria e soluções para problemas interessantes e não muito práticos - sob o corte.
Em uma rede local moderna, a emissão de endereços geralmente é feita por serviços especializados com suporte a protocolo. O mais popular deles é o DHCP (Dynamic Host Configuration Protocol).
Zeroconf ou por que precisamos de algum tipo de DHCP
Em princípio, uma pilha de tecnologia chamada Zeroconf foi criada especificamente para pequenas redes. Ele permite que você fique sem serviços e servidores centralizados, incluindo, entre outros, a emissão de endereços IP. Eles fecham (bem, ou quase fecham) as seguintes perguntas:
Obtenção de um endereço IP (endereçamento IP privado automático ou APIPA). O próprio sistema atribui um IP da rede 169.254.0.0/16 (exceto as grades / 24 no início e no final do intervalo), com base no endereço MAC e no gerador de números pseudo-aleatórios. Este sistema permite evitar conflitos, e o endereço desta rede é chamado link-local - inclusive porque esses endereços não são roteados.
Pesquise pelo nome . O sistema anuncia seu nome de rede e cada computador trabalha com ele como no DNS, armazenando entradas em seu cache. A Apple usa a tecnologia mDNS (DNS de difusão seletiva) e a Microsoft usa LLMNR (resolução de nome de difusão seletiva local), mencionada no artigo " Domínios, endereços e Windows: misture, mas não agite ".
Procure por serviços de rede . Por exemplo, impressoras. Talvez o protocolo mais famoso seja o UPnP , que, entre outras coisas, pode abrir portas nos próprios roteadores. O protocolo é bastante complicado, ele usa todo um conjunto de complementos, como o http, ao contrário do segundo protocolo conhecido - DNS-SD (DNS Service Discovery), que simplesmente usa registros SRV, inclusive ao trabalhar com mDNS.
Com todas as vantagens do Zeroconf - sem nenhum conhecimento sagrado, você pode construir uma rede de trabalho simplesmente conectando computadores no nível físico - pode até interferir com os especialistas em TI.

Um pouco chato, não é?
Nos sistemas Windows, para desativar o ajuste automático em todos os adaptadores de rede, você deve criar um parâmetro DWORD com o nome IPAutoconfigurationEnabled na seção HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters e configurá-lo como 0.
É claro que o Zeroconf é adequado apenas para pequenas redes isoladas (por exemplo, você conheceu um amigo com laptops, os conectou via Wi-Fi e vamos jogar o Diablo II, sem perder tempo em nenhum servidor), e eu também quero obter uma rede local na Internet . Para não sofrer com as configurações estáticas de cada computador, foram criados protocolos especiais, incluindo o herói do dia - DHCP.
DHCP e seus progenitores
Uma das primeiras implementações do protocolo para emissão de endereços IP apareceu mais de 30 anos atrás e foi chamada de RARP (Reverse Address Resolution Protocol). Se simplificamos um pouco o princípio de sua operação, ficou assim: o cliente fez uma solicitação para o endereço de broadcast da rede, o servidor a aceitou, encontrou a ligação do endereço MAC e do IP do cliente em seu banco de dados e enviou uma resposta de IP.

Esquema do protocolo RARP.
E tudo parecia funcionar. Mas o protocolo tinha suas desvantagens: era necessário configurar o servidor em cada segmento da rede local, registrar os endereços MAC nesse servidor e não era possível transmitir informações adicionais ao cliente. Portanto, para substituí-lo, o protocolo BOOTP (Protocolo Bootstrap) foi criado.
Inicialmente, era usado para estações de trabalho sem disco, que precisavam não apenas fornecer um endereço IP, mas também transmitir informações adicionais ao cliente, como o endereço do servidor TFTP e o nome do arquivo de download. Ao contrário do RARP, o protocolo já suportava retransmissão - pequenos serviços que encaminhavam solicitações ao servidor "principal". Isso tornou possível usar um servidor em várias redes simultaneamente. Apenas permaneceu a necessidade de configurar manualmente as tabelas e o limite de tamanho para obter informações adicionais. Como resultado, o protocolo DHCP moderno entrou em cena, que é uma extensão compatível do BOOTP (o servidor DHCP suporta clientes herdados, mas não vice-versa).
Uma diferença importante dos protocolos obsoletos é a capacidade de emitir temporariamente um endereço (concessão) e transferir uma grande quantidade de informações diferentes para o cliente. Isso é alcançado devido ao procedimento menos trivial para obter o endereço. Se nos antigos protocolos o esquema era simples, do tipo de solicitação-resposta, agora o esquema é o seguinte:
- O cliente procura o servidor com uma solicitação de transmissão, solicitando configurações adicionais também.
- O servidor responde ao cliente oferecendo um endereço IP e outras configurações.
- O cliente confirma as informações recebidas por solicitação de transmissão, indicando na confirmação o endereço IP do servidor selecionado.
- O servidor concorda com o cliente enviando um pedido, após o recebimento do qual o cliente já configura a interface de rede ou a rejeita.

O esquema de comunicação do cliente com o servidor de encaminhamento e o servidor.
Você pode ler mais sobre o esquema de interação servidor-cliente e a estrutura de solicitações e respostas, por exemplo, no material " Estrutura, formato e finalidade dos pacotes DHCP ".
Em várias entrevistas, eles me perguntaram: "Que transporte e porta o DHCP usa?" Por precaução, respondemos: “Servidor UDP: 67, cliente UDP: 68”.
Muitas implementações de um servidor DHCP foram encontradas por muitos, mesmo ao configurar uma rede doméstica. De fato, agora o servidor é:
- Em quase qualquer roteador, especialmente SOHO.
- Nos sistemas Windows Server. Você pode ler sobre o servidor e sua configuração na documentação oficial.
- Em sistemas * nix. Talvez o software mais popular seja o ISC DHCP Server (dhcpd) e o Dnsmasq "harvester".
Existem muitas implementações específicas, mas, por exemplo, as configurações do servidor são limitadas nos roteadores SOHO. Isso se refere principalmente a configurações adicionais, além do clássico "endereço IP, máscara, gateway, servidor DNS". E são precisamente essas opções adicionais que causam maior interesse na operação do protocolo. A lista completa pode ser encontrada na RFC correspondente, mas analisarei alguns exemplos interessantes.
Incríveis opções de DHCP
Nesta seção, discutirei o uso prático das opções de DHCP no equipamento MikroTik. Imediatamente chamarei a atenção para o fato de que nem todas as opções estão definidas, obviamente, o formato dos parâmetros é descrito no wiki . Também deve ser observado que o cliente aplica as opções somente quando ele solicita. Em alguns servidores, você pode forçar o envio de configurações: por exemplo, no ISC DHCP Server, a diretiva dhcp-parameter-request-list é responsável por isso e em Dnsmasq - * * - dhcp-option-force . MikroTik e Windows não sabem como.
Opção 6 e Opção 15. Vamos começar com um simples. O número da configuração 6 são os servidores DNS atribuídos aos clientes, 15 é o sufixo DNS. A atribuição de um sufixo DNS pode ser útil ao trabalhar com recursos de domínio em uma rede que não seja de domínio, como descrevi no artigo “ Como reduzimos a equipe por Wi-Fi ”. Configure o MikroTik sob o spoiler.
Configurando o MikroTik, opção 15 Saber que um servidor DNS também é uma opção recentemente foi útil quando clientes diferentes tiveram que emitir servidores DNS diferentes. A decisão do formulário “emitir um servidor e criar regras dst-nat diferentes para a porta 53” não se encaixou por vários motivos. Parte da configuração está novamente sob o spoiler.
Configurando o MikroTik, opção 6 Opção 66 e Opção 67 . Essas configurações voltaram do BOOTP e permitem especificar o servidor TFTP e a imagem para a inicialização da rede. Para uma ramificação pequena, é bastante conveniente instalar o Mikrotik e as estações de disco sem disco e lançar uma imagem preparada de alguns ThinStation no roteador . Exemplo de configuração do DHCP:
/ip dhcp-server option add name="option66" code=66 value="s'192.168.88.1'" add name="option67" code=67 value="'pxelinux.0'" /ip dhcp-server option sets add name="set-pxe" options=option66,option67
Opção 121 e Opção 249 . Eles são usados para transferir rotas adicionais para o cliente, o que, em alguns casos, pode ser mais conveniente do que registrar rotas no gateway padrão. As configurações são quase idênticas, exceto que os clientes Windows preferem o último. Para configurar o parâmetro, as rotas devem ser convertidas em hexadecimal, coletando a máscara de rede de destino, o endereço de rede e o gateway em uma linha. Além disso, pelo RFC, você deve adicionar uma rota padrão. A opção de ajuste está sob o spoiler.
Configuração de rotaSuponha que precisamos adicionar uma rota como dst-address = 10.0.0.0 / 24 gateway = 192.168.88.2 aos clientes, e o gateway principal será 192.168.88.1. Vamos trazer tudo isso em HEX:
Vamos coletar toda essa felicidade em uma linha e obter a configuração:
/ip dhcp-server option add code=121 name=classless value=0x0A0000c0a8580200c0a85801
Leia mais no artigo “ Mikrotik, rota sem classe DHCP ”.
Opção 252. Configuração automática do servidor proxy. Se, por algum motivo, a organização usar um proxy opaco, será conveniente configurá-lo com os clientes por meio de um arquivo wpad (pac) especial. Um exemplo de configuração desse arquivo é descrito no material PAC (Proxy Auto Configuration) . Infelizmente, o MiroTik não possui um servidor web embutido para hospedar esse arquivo. Você pode usar o pacote de hotspot ou os recursos de metarouter para isso, mas é melhor colocar o arquivo em outro lugar.
Opção 82 . Uma das opções mais úteis não é apenas para o cliente, mas também para a retransmissão DHCP. Permite transferir informações sobre a porta do switch à qual o cliente está conectado e o ID do próprio switch. Com base nessas informações, o servidor, por sua vez, já pode emitir um determinado conjunto de configurações para o cliente ou simplesmente registrá-lo - para encontrar a porta de conexão do cliente, não era necessário acessar todos os comutadores seguidos (especialmente se eles não estiverem na pilha).
Após configurar o DHCP-Relay no roteador, os campos ID do circuito do agente e ID remoto do agente aparecerão nas informações do cliente, onde o primeiro é o identificador da porta do switch e o segundo é o identificador do switch.

Emissão de endereços com a opção 82.
As informações são fornecidas em formato hexadecimal. Por conveniência, você pode usar scripts para analisar o log do DHCP. Por exemplo, uma solução para uma solução da Microsoft é publicada na galeria de scripts do Technet, denominada “ Decorando as opções de DHCP 82 ”.
A opção 82 também é usada ativamente no sistema de cobrança de provedores e na proteção da rede contra interferências externas. Isso é um pouco mais detalhado.
Adicione redes de confiabilidade e segurança
Devido à simplicidade do protocolo e à presença de solicitações de transmissão, há ataques efetivos à infraestrutura - principalmente do tipo MITM (“man in the middle”). Os ataques são realizados aumentando o servidor DHCP ou a retransmissão: afinal, se você controla a emissão das configurações de rede, pode redirecionar facilmente o tráfego para um gateway comprometido. Para facilitar o ataque, a privação de DHCP é usada (fingindo ser um cliente ou uma retransmissão, o atacante força o servidor DHCP "nativo" a esgotar seus endereços IP). Você pode ler mais sobre a implementação do ataque no artigo “ Atacando o DHCP ”, enquanto o DHCP Snooping é o método de proteção.
Essa é uma função de comutador que permite "ligar" um servidor DHCP a uma porta específica. As respostas DHCP em outras portas serão bloqueadas. Em alguns comutadores, você pode configurar o trabalho com a Opção 82 quando for detectado no pacote (que indica a presença de um relé): descartar, substituir, deixar inalterado.
Nos comutadores MikroTik, o DHCP Snooping é ativado nas configurações da ponte:
A configuração em outros comutadores é semelhante.
Vale a pena notar que nem todos os modelos MikroTik têm suporte completo de hardware para DHCP Snooping - apenas o CRS3xx o possui.
Além da proteção contra hackers mal-intencionados, essa função aliviará as dores de cabeça quando outro servidor DHCP aparecer na rede - por exemplo, quando um roteador SOHO usado como um switch com um ponto de acesso redefine suas configurações. Infelizmente, nas redes em que o equipamento SOHO é encontrado, nem sempre existe uma estrutura de rede a cabo competente com roteadores gerenciados. Mas essa é outra questão.

Mudança bonita é a chave para a saúde.
Outros métodos de proteção incluem Port Security ("vincular" um endereço MAC específico à porta do roteador; se o tráfego de outros endereços for detectado, a porta será bloqueada), a análise de tráfego para o número de solicitações e respostas DHCP ou limitar seu número e, é claro, vários sistemas IPS \ IDS .
Se falarmos não apenas sobre proteção de rede, mas também sobre confiabilidade, não será inadequado mencionar os recursos do DHCP à prova de falhas. De fato, com sua simplicidade, o DHCP geralmente é um dos principais serviços e, se falhar, o trabalho da organização pode ser paralisado. Mas se você apenas instalar dois servidores com configurações idênticas, nada além de um conflito de endereços IP levará a isso.
Parece que você pode dividir a área de distribuição entre dois servidores e deixar um dar metade dos endereços e o outro dar outro. Aqui estão apenas uma metade paralisada da infraestrutura é um pouco melhor que o todo.
Analisaremos opções mais práticas.
Nos sistemas Windows Server a partir de 2012, o sistema de redundância DHCP funciona imediatamente, no modo de balanceamento de carga (ativo-ativo) ou no modo de tolerância a falhas (ativo-passivo). Uma descrição detalhada da tecnologia e configurações pode ser encontrada na documentação oficial. Observo que a tolerância a falhas é configurada no nível da zona, para que diferentes zonas possam funcionar em modos diferentes.

Configurando o Failover do Servidor DHCP no Windows.
O ISC DHCP Server usa a diretiva de ponto de falha para configurar a tolerância a falhas; propõe-se sincronizar os dados independentemente - por exemplo, usando o rsync. Leia mais no artigo " Dois servidores DHCP no Centos7 ... "
Se você criar uma solução tolerante a falhas com base no MikroTik, não poderá fazer isso sem truques. Uma das opções para solucionar o problema foi anunciada na MUM RU 18 e depois publicada no blog do autor . Resumindo: dois servidores estão configurados, mas com um parâmetro de Delay Threshold diferente (atraso de resposta). Em seguida, o servidor emitirá o endereço com menos atraso e com um atraso maior - somente quando o primeiro falhar. A sincronização de informações novamente deve ser feita com scripts.
Pessoalmente, ao mesmo tempo, dei um tapinha nos meus nervos quando um roteador apareceu na rede "acidentalmente" e conectado à rede local, tanto nas interfaces WAN quanto na LAN.
Diga-me, você teve que lidar com a hanseníase DHCP?