Adguardhome: Expanda / esclareça as opções de DHCP

Criado em 20 jan. 2021  ·  3Comentários  ·  Fonte: AdguardTeam/AdGuardHome

Como um projeto de código aberto com uma equipe de mantenedores dedicada, mas pequena, às vezes pode levar muito tempo para que os problemas sejam resolvidos, então seja paciente e entraremos em contato com você assim que possível.

Pré-requisitos

  • [x] Estou executando a versão mais recente
  • [x] Eu verifiquei a documentação e não encontrei resposta
  • [x] Eu verifiquei para ter certeza de que este problema ainda não foi arquivado

Descrição do Problema

Sua solicitação de recurso está relacionada a um problema? Adicione uma descrição clara e concisa de qual é o problema.

Eu gostaria de mais controle sobre o domínio local. No momento, isso está codificado para lan , consulte também # 2393.

Também estou confuso com o requisito de ip ou hex para as opções de campo dhcpv4 . Isso só permite definir opções / valores numéricos. Tentei transmitir o domínio para clientes DHCP usando a opção 15 das opções DHCP / RFC2132 , mas não há como definir a string lan . Tentei com pontos de código ASCII / UTF-8, mas isso não faz sentido dado como é analisado:

https://github.com/AdguardTeam/AdGuardHome/blob/7fab31beaeb8c7d1c9892746bbf37e99d4f9dc01/internal/dhcpd/dhcpd.go#L289

que parece retornar apenas ints ?

Nesse ponto, isso também ultrapassa meu nível de competência.

Solução proposta

Descreva a solução que deseja de maneira clara e concisa

Adicione mais opções para o campo dhcpv4 , semelhante a dnsmasq . Este exemplo de configuração é uma boa descrição do que se poderia desejar para isso, eu acho.

Atualmente, ao usar o AGH como servidor DHCP e também como servidor DNS, o domínio local lan funciona bem. No entanto, embora as consultas a local_machine.lan sejam respondidas pelo AGH localmente e corretamente, elas também são encaminhadas para servidores de internet upstream em minha configuração. Isso é um pouco confuso. Adicionar [/lan/]192.168.0.2 , onde 192.168.0.2 é o endereço da máquina AGH, à lista de servidores DNS upstream resolve o seguinte: as solicitações não são mais encaminhadas. Definir 0.0.0.0 ou 127.0.0.1 também funciona, mas eu realmente não sei o que estou fazendo lá. Pelo menos eles não "vazam" mais. Veja também # 2582.

Como efeito colateral, isso, por exemplo, trava e, eventualmente, atinge o tempo limite:

# Before, *without* [/lan/] filter
$ host local_machine.lan
local_machine.lan has address 192.168.0.50 # IMMEDIATE
Host local_machine.lan not found: 3(NXDOMAIN) # Almost immediate
#  ^ NXDOMAIN from upstream internet DNS server.
# Of course it doesn't know that domain.

# Now *with* the custom [/lan/] upstream DNS in place:
$ host local_machine.lan
local_machine.lan has address 192.168.0.50  # Again, IMMEDIATE
;; connection timed out; no servers could be reached  # 10s, then timeout

Com o novo [/lan/] no lugar, coisas como ssh ainda funcionam instantaneamente porque eu acho que depois que o primeiro IP chega, ele é executado.

Podemos ter uma instrução dnsmasq -like local , veja o link acima para o exemplo de configuração? Em /etc/dnsmasq.conf , uma instrução

local=/mydomain/

nunca vazaria para fora. Perfeito! Além disso,

domain=mydomain

seria incrível ter. Talvez jogar em um domain-needed -equivalente?

Alternativas consideradas

Uma descrição clara e concisa de quaisquer soluções ou recursos alternativos que você considerou.

Neste ponto, pode-se executar uma configuração como # 2514: se todas as opções dnsmasq -equivalentes forem necessárias, basta executar um servidor DNS + DHCP dnsmasq como o servidor primário. Nele, defina uma instância AGH (sem DHCP) como o único DNS upstream. Deve funcionar bem, só requer mais coisas. Por exemplo, se rodando em uma máquina, o AGH precisaria de uma porta diferente de 53. Fácil o suficiente se não rodar com network_mode: host , que só precisamos se usar DHCP. No entanto, essa configuração "exigiria" add-mac / add-subnet , conforme descrito nessa edição.

Informações adicionais

Adicione qualquer outro contexto sobre o problema aqui.
Medium bug

Comentários muito úteis

Como você já destacou, a configuração do domínio local já está planejada, assim como as melhorias de sintaxe das opções. Veja # 2385 e também [este comentário] para um exemplo de como definir opções com a sintaxe de opções atual e falha.

O encaminhamento de solicitações de domínio local para upstreams, porém, é um bug, e vamos corrigi-lo. Obrigado pelo relatório!

Todos 3 comentários

Como você já destacou, a configuração do domínio local já está planejada, assim como as melhorias de sintaxe das opções. Veja # 2385 e também [este comentário] para um exemplo de como definir opções com a sintaxe de opções atual e falha.

O encaminhamento de solicitações de domínio local para upstreams, porém, é um bug, e vamos corrigi-lo. Obrigado pelo relatório!

O encaminhamento de solicitações de domínio local para upstreams, porém, é um bug, e vamos corrigi-lo. Obrigado pelo relatório!

Obrigado! Avise-me se desejar um número dedicado a isso, já que este é principalmente sobre outra coisa. Informe-nos também se precisar de mais informações, embora esse problema seja fácil de replicar:

  1. usar AGH como servidor DNS / DHCP
  2. consultar uma máquina local com hostname.lan , por exemplo, usando dig
  3. no log de consulta, observe como essa solicitação vai para os servidores upstream.

O link para o seu comentário sobre o uso de hex esclarece as coisas, mas eu sabia como isso funcionava. O problema que estou tendo é que a opção 15 para DHCP é uma string, não um int / número. Até onde eu posso ver, você não pode definir valores de string, porque os valores hex não são interpretados como ASCII ou qualquer coisa, mas apenas como inteiros decimais.

Você pode usar hex para texto. Veja # 2388 para um exemplo.

hex.DecodeString retorna uma fatia de bytes, decodificada da string hexadecimal, e um erro.

Esta página foi útil?
0 / 5 - 0 avaliações