Dnsmasq é um software de linha de comando livre, completamente gratuito, fácil de configurar e leve, projetado a partir do deslocamento para atuar como um servidor DHCP (Dynamic Host Configuration Protocol) e DNS (Domain Name System ) em sistemas operacionais GNU / Linux e UNIX.
O software foi projetado de forma a fornecer DNS, bem como a funcionalidade DHCP a uma rede pequena. É capaz de servir os nomes das máquinas locais que estão no DNS global e contém vários recursos atraentes.
Poderosas opções de linha de comando
Uma ampla gama de opções de linha de comando estão disponíveis para este projeto, que pode ser visualizado instantaneamente executando o & lsquo; dnsmasq --help & rsquo; comando em um aplicativo de terminal. Entre estes, podemos mencionar a capacidade de especificar um endereço local para ouvir, especificar o tamanho do cache nas entradas, bem como especificar um arquivo de configuração personalizado.
Introdução ao Dnsmasq
A instalação do Dnsmasq em um sistema operacional GNU / Linux é da mesma maneira que você faria com qualquer outro programa de código aberto que seja distribuído como um arquivo de origem. Primeiro, faça o download do pacote, guarde-o no seu computador (de preferência, seu diretório inicial) e extraia seu conteúdo usando um utilitário gerenciador de arquivos.
Em seguida, mude para o local onde você extraiu o arquivo em um emulador de terminal (por exemplo, cd /home/softoware/dnsmasq-2.72 - replace & lsquo; softoware & rsquo; com seu nome de usuário), execute o & lsquo; ./ configure & amp ; & amp; faça & rsquo; comando para configurar e compilar o programa, seguido pelo & lsquo; sudo make install & rsquo; comando para instalá-lo em todo o sistema.
Funciona em GNU / Linux, BSD e Mac OS X
Dnsmasq suporta vários sistemas operacionais, incluindo Linux (Debian, Gentoo, Slackware, Smoothwall, SUSE, IP-Cop, Firebox, floppyfw, LEAF, CoyoteLinux, Clarkconnect, Freesco, etc.), BSD (FreeBSD) e Mac OS X. Ele é executado em plataformas de computador de 32 bits e 64 bits.
O que é novo nesta versão:
- Gerar um erro quando configurado com um loop CNAME, em vez de um bloqueio. Obrigado a George Metz por detectar este problema.
- Calcule o comprimento do pacote de resposta de erro TFTP corretamente. Isso corrige um problema quando a mensagem de erro em um pacote TFTP excede o limite arbitrário de 500 caracteres. A mensagem foi truncada corretamente, mas não o comprimento do pacote, então dados adicionais foram anexados. Este é um possível risco de segurança, uma vez que os dados adicionais provêm de um buffer que também é usado para DNS, de modo que as consultas ou respostas DNS anteriores podem ser vazadas. Obrigado à Mozilla por financiar a auditoria de segurança que detectou esse erro.
- Corrigir erro de lógica no código Linux netlink. Isso poderia causar o dnsmasq entrar em um loop apertado em sistemas com um número muito grande de interfaces de rede. Graças a Ivan Kokshaysky para o diagnóstico e parche.
- Solucione o problema com --dnssec-timestamp pelo qual o recebimento do SIGHUP incorretamente englova a verificação do timestamp. Obrigado a Kevin Darbyshire-Bryant por este trabalho.
- Bump zone serial no recarregamento / etc / hosts e amigos ao fornecer DNS autenticado. Obrigado a Harrald Dunkel por detectar isso.
- Gerencie os endereços IPv6 mapeados v4 sanely in -synth-domain. Estes têm uma representação padrão como :: ffff: 1.2.3.4 e agora são convertidos em nomes como --ffff-1-2-3-4.
- Gerencie os servidores de amostragem vinculados para uma interface (--server=1.2.3.4@eth0) quando a interface nomeada é destruída e recriada no kernel. Obrigado a Beniamino Galvani pelo patch.
- Permitir registros do CNAME curinga em zonas autorizadas. Por exemplo --cname = *. Example.com, default.example.com Obrigado ao Pro Backup por patrocinar este desenvolvimento.
- Bump o backlog permitido de conexões TCP de 5 a 32, e torná-lo uma opção configurável em tempo de compilação. Obrigado a Donatas Abraitis por diagnosticar isso como um problema potencial.
- Adicionar DNSMASQ_REQUESTED_OPTIONS variável de ambiente ao script de mudança de locação. Obrigado a ZHAO Yu pelo patch.
- Corrigir foobar no código rrfilter, que poderia causar respostas malformadas, especialmente quando a validação DNSSEC e o servidor a montante retorna a resposta com os RRs em uma determinada ordem. O único servidor DNS conhecido por fazer cócegas é Nominum's. Graças a Dave Taht por detectar o bug e ajudar na correção.
- Corrige a página do manual que mentiu que apenas o endereço principal de uma interface é usado por - nome da interface.
- Faça as consultas --localise-apply para nomes de --interface-name. Graças a Kevin Darbyshire-Bryant e Eric Luehrsen por empurrar isso.
- Melhore o gerenciamento de conexões quando conversa com servidores TCP upstream. Especificamente, esteja preparado para abrir uma nova conexão TCP quando queremos fazer várias consultas, mas o servidor upstream aceita menos consultas por conexão.
- Melhore o registro de servidores upstream quando há muitas entradas de "apenas endereços locais". Obrigado a Hannu Nyman pelo patch.
- Faça --bogus-priv aplicar ao IPv6, para os prefixos especificados no RFC6303. Graças a Kevin Darbyshire-Bryant para trabalhar nisso.
- Permitir o uso de endereços MAC com --tftp-unique-root. Obrigado a Floris Bos pelo patch.
- Adicionar --dhcp-resposta-atraso opção. Obrigado a Floris Bos pelo patch.
- Adicionar facilidade de configuração mtu para -ra-param. Obrigado a David Flamand pelo patch.
- Capture STDOUT e STDERR saída de dhcp-script e log-lo como parte do fluxo de log dnsmasq. Facilita a vida para diagnosticar problemas inesperados em scripts. Obrigado a Petr Mensik pelo patch.
- Gerar erros fatais ao não conseguir analisar a saída do script dhcp no modo "init". Evita erros estranhos quando o script acidentalmente emite mensagens de erro. Obrigado a Petr Mensik pelo patch.
- Faça --rev-server para um trabalho de sub-rede RFC1918 mesmo na presença da bandeira --bogus-priv. Obrigado a Vladislav Grishenko pelo patch.
- Extend --ra-param mtu: campo para permitir um nome de interface. Isso permite que a MTU de uma interface WAN seja anunciada nas interfaces internas de um roteador. Obrigado a Vladislav Grishenko pelo patch.
- O ICMP-ping verifica o endereço em uso para DHCPv4 quando o cliente especifica um endereço em DHCPDISCOVER e quando um endereço configurado localmente. Graças a Alin Nastac por detectar o problema.
- Adicionar nova etiqueta DHCP "conhecido-outro" que é configurado quando apenas um host dhcp existe para outra sub-rede. Pode ser usado para garantir que hosts privilegiados não recebam endereços "convidados" por acidente. Obrigado a Todd Sanket pela sugestão.
- Remova a inclusão automática histórica do suporte IDN ao criar suporte de internacionalização. Isso não cabe agora, há uma escolha de bibliotecas IDN. Certifique-se de incluir qualquer -DHAVE_IDN ou -DHAVE_LIBIDN2 para suporte IDN.
O que é novo na versão 2.72:
- Adicione o modo ra-advrouter, para o suporte IPv6 móvel RFC-3775.
- Adicionar suporte para "ipsets" em * BSD, usando pf. Obrigado a Sven Falempim pelo patch.
- Corrigir a condição de corrida que poderia bloquear o dnsmasq quando uma interface diminui rapidamente. Obrigado a Conrad Kostecki por ajudar a perseguir isso.
- Adicione os métodos DBus SetFilterWin2KOption e SetBogusPrivOption. Graças ao projeto Smoothwall para o patch.
- Corrigir falha na compilação contra Nettle-3.0. Obrigado a Steven Barth por detectar isso e encontrar a solução. Ao atribuir concessões de DHCP existentes a interfaces, comparando redes, lida com o caso de que duas ou mais interfaces tenham a mesma parte de rede, mas diferentes comprimentos de prefixo (favorecem o comprimento de prefixo mais longo). Obrigado a Lung-Pin Chang pelo patch.
- Adicione um modo que detecta e elimina os laços de reencaminhamento de DNS, ou seja, uma consulta enviada para um servidor upstream retorna como uma nova consulta para o dnsmasq e, portanto, seria reencaminhada novamente, resultando em uma consulta que acompanha muitas vezes antes de ser descartada. Os servidores ascendentes que estão de volta são desativados e esse evento é logado. Graças a Smoothwall pelo seu patrocínio deste recurso.
- Estenda --conf-dir para permitir a filtragem de arquivos. Então --conf-dir = / etc / dnsmasq.d, *. Conf carregará todos os arquivos em /etc/dnsmasq.d que terminam em .conf
- Corrigir erro quando resultou em respostas NXDOMAIN em vez de NODATA em algumas circunstâncias.
- Corrigir o erro que causou que o dnsmasq se tornasse insensível se não enviasse pacotes devido a uma interface de rede desaparecer. Obrigado a Niels Peen por detectar isso.
- Corrigir problema com a opção - local-service em plataformas big-endian. Graças a Richard Genoud pelo patch.
O que é novo na versão 2.68:
- Use endereços aleatórios para alocações de endereço temporário DHCPv6, em vez de endereços estáveis determinados algoritmicamente.
- Corrigir o erro, o que significou que o DHCPv6 DUID não estava disponível no script DHCP durante a vida útil do processo dnsmasq que criou o DUD de novo. Uma vez que o DUID foi criado e armazenado no arquivo de locação e o dnsmasq foi reiniciado, este erro desapareceu.
- Corrigir erro introduzido em 2.67, o que pode resultar em NXDOMAIN incorreto retorna para consultas CNAME.
- Corrige falhas de compilação no MacOS X e no openBSD.
- Permitir especificações de sub-rede em --auth-zone para ser nomes de interface, bem como literais de endereço. Isso torna possível configurar o DNS autenticado quando os intervalos de endereços locais são dinâmicos e funcionam muito melhor do que o trabalho anterior em que existia DHCP construído a partir da filtragem de endereços IP. Como conseqüência, esse trabalho é removido. Sob certas circunstâncias, essa mudança irá interromper a configuração existente: se você estiver confiando na exceção do intervalo construído, você precisará alterar --auth-zone para especificar a mesma interface que é usada para construir seus intervalos DHCP, provavelmente com uma sequência "/ 6" como este: --auth-zone = example.com, eth0 / 6 para limitar os endereços aos endereços IPv6 do eth0.
- Corrige problemas ao anunciar prefixos IPv6 excluídos. Se o prefixo for excluído (em vez de substituído), ele não será anunciado com zero tempo preferido. Graças a Tsachi para o relatório de erros.
- Corrigir segfault com alguns CNAMEs configurados localmente. Obrigado a Andrew Childs por detectar o problema.
- Corrige o vazamento de memória na re-leitura / etc / hosts e amigos, introduzido em 2.67.
- Verifique a interface de chegada das solicitações DNS e TFTP recebidas via IPv6, mesmo no modo --bind-interfaces. Isso não é possível para o IPv4 e pode gerar avisos assustadores, mas como sempre é possível para o IPv6 (a API sempre existe), então devemos fazê-lo sempre.
- Ajustar as regras sobre prefixos em --dhcp-range para IPv6. A nova regra é que o comprimento do prefixo especificado deve ser maior ou igual ao comprimento do prefixo do endereço correspondente na interface local.
O que é novo na versão 2.63:
- A principal adição nesta versão é um novo modo, --bind-dynamic, que tanto evita a ligação do endereço IP do curinga e lida com interfaces de rede criadas dinamicamente, removendo as principais limitações dos dois modos de rede existentes.
O que é novo na versão 2.61:
- Esta versão tem muito trabalho extra no código DHCPv6 que estreou em 2.60.
- Muitos erros foram corrigidos e foram adicionados recursos extras.
- O recurso de publicidade do roteador agora é muito mais configurável, e há um modo que permite que o dnsmasq faça registros de DNS AAAA para hosts que usam endereços IPAv de SLAAC e endereços DHCP IPv4.
O que é novo na versão 2.59:
- Esta versão aborda alguns problemas que surgiram com o dnsmasq-2.58, o que pode causar problemas na inicialização com os endereços locais do link IPv6.
- Um é uma regressão no dnsmasq e o outro decorre de uma mudança no comportamento das interfaces de bridge em kernels recentes do Linux.
O que é novo na versão 2.58:
- versão 2.58
- Forneça uma definição da macro SA_SIZE onde está faltando. Corrige a falha de compilação no openBSD.
- Não inclua um terminador zero no final das mensagens enviadas para / dev / log quando / dev / log é um datagrama. Obrigado a Didier Rabound por detectar o problema.
- Adicione - dhcp-sequencial-ip flag, para forçar a alocação de endereços IP em ordem crescente. Observe que o modo pseudo-aleatório padrão é, em geral, melhor, mas alguns aplicativos de implantação de servidor precisam disso.
- Corrigir problema onde um servidor-id de 0.0.0.0 é enviado para um cliente quando um relé dhcp está em uso se um cliente renovar uma locação após o reinício do dnsmasq e antes que qualquer cliente na sub-rede obtenha um novo contrato de arrendamento. Obrigado a Mike Ruiz por ter ajudado a perseguir este.
- Não devolva NXDOMAIN a uma consulta AAAA se tivermos o CNAME que aponta apenas para um registro A: NODATA é a resposta correta neste caso. Obrigado a Tom Fernandes por detectar o problema.
- Relaxe a necessidade de fornecer uma máscara de rede em --dhcp-range para redes que usam um relé DHCP. Embora isso ainda seja desejável, na ausência de uma máscara de rede dnsmasq usará um padrão baseado na classe (A, B ou C) do endereço. Isso deve, pelo menos, remover uma causa de falha misteriosa para pessoas que usam endereços e relés RFC1918.
- Adicione suporte para a marcação de conexão do Linux conntrack. Se ativado com --conntrack, a marca de conexão para as consultas DNS recebidas será copiada para as conexões de saída usadas para responder essas consultas. Isso permite tarefas inteligentes de firewall e contabilidade. Apenas disponível se dnsmasq for compilado com HAVE_CONNTRACK e adicione uma dependência em libnetfilter-conntrack. Graças a Ed Wildgoose pela ideia inicial, teste e patrocínio desta função.
- Forneça uma mensagem de erro sã quando alguém tenta combinar uma tag em --dhcp-host.
- Tweak o comportamento de --domain-needed, para evitar problemas com servidores de nomes recursivos a jusante de dnsmasq. O novo comportamento pára apenas as consultas A e AAAA e retorna respostas NODATA em vez de NXDOMAIN.
- Solução de eficiência para configurações DHCP muito grandes, graças a James Gartrell e Mike Ruiz para obter ajuda com isso.
- Permitir que o endereço do servidor TFTP no --dhcp-boot seja um nome de domínio que seja pesquisado em / etc / hosts. Isso pode dar vários endereços IP que são usados round-robin, fazendo assim o balanceamento de carga do servidor TFTP. Obrigado a Sushil Agrawal pelo patch.
- Quando duas opções dhcp marcadas para um número de opção particular são válidas, use aquela que é válida sem uma marca do intervalo dhcp. Permite substituir o valor de uma opção DHCP por um host particular, bem como valores por rede.
- - dhcp-range = set: interface1, ......
- - dhcp-host = conjunto: myhost, .....
- - dhcp-option = tag: interface1, opção: nis-domain, "domain1"
- - dhcp-option = tag: myhost, opção: nis-domain, "domain2"
- irá definir o domínio NIS como domain1 para hosts no intervalo, mas
- substitua isso pelo domain2 para um host específico.
- Corrigir erro que resultou em arquivos truncados e tempos limite para algumas transferências TFTP. O erro ocorre apenas com transferências netascii e precisa de uma relação infeliz entre o tamanho do arquivo, o tamanho do bloco e o número de linhas novas no último bloco antes de se manifestar. Muito obrigado a Alkis Georgopoulos por detectar o problema e fornecer um caso de teste abrangente.
- Corrigir regressão no servidor TFTP em plataformas BSD introduzidas na versão 2.56, devido à confusão com o comprimento Sockaddr. Muito obrigado a LoA & macr; c Pefferkorn por encontrar isso.
- Suporte escopo-ids em endereços IPv6 de servidores de nomes de /etc/resolv.conf e em - opções de servidor. E
- Por exemplo, nameserver fe80 :: 202: a412: 4512: 7bbf% eth0
- server = fe80 :: 202: a412: 4512: 7bbf% eth0. Graças a
- Michael Stapelberg para a sugestão.
- Atualize a tradução em polonês, graças a Jan Psota.
- Atualize a tradução em francês. Graças a Gildas Le Nadan.
O que é novo na versão 2.57:
- Esta versão corrige algumas regressões na versão anterior e adiciona suporte para a plataforma Android.
O que é novo na versão 2.56:
- Adicione um patch para permitir que o dnsmasq obtenha nomes de interface diretamente em uma zona do Solaris. Graças a Dj Padzensky por isso.
- Melhore as heurísticas de análise de tipo de dados para que --dhcp-option = opção: domain-search ,. trata o valor como uma string e não um endereço IP. Obrigado a Clemens Fischer por ter observado isso.
- Adicione suporte IPv6 ao servidor TFTP. Muito obrigado a Jan 'RedBully' Seiffert pelos remendos.
- Registre consultas de DNS no nível LOG_INFO, em vez de LOG_DEBUG. Isso torna as coisas consistentes com o log de DHCP. Obrigado a Adam Pribyl por detectar o problema.
- Certifique-se de que o dnsmasq termina de forma limpa ao usar - syslog-async, mesmo que não possa estabelecer uma conexão com o syslogd.
- Adicionar --add-mac opção. Isto é para suportar instalações de filtragem de DNS atualmente experimentais. Obrigado a Benjamin Petrin pelo patch orignal.
- Corrigir o erro, o que significava que as tags foram ignoradas na configuração do intervalo dhcp especificando o serviço PXE-proxy. Obrigado a Cristiano Cumer por ter observado isso.
- Levante um erro se houver lixo extra, não faz parte de uma opção, na linha de comando.
- Marcar um par de mensagens de log no cache.c como vindo do subsistema DHCP. Obrigado a Olaf Westrik pelo patch.
- Omita os carimbos de data / hora dos logs quando a) logging para stderr e b) - keep-in-forground está definido. A instalação de log na outra extremidade do stderr pode ser assombrada para fornecê-los. Obrigado a John Hallam pelo patch.
- Não se queixar de seqüências de caracteres com mais de 255 caracteres em -txt-record, basta dividir as cadeias longas em 255 blocos de caracteres em vez disso.
- Corrigir crash no duplo-livre. Este erro só pode acontecer quando o script dhcp está em uso e, em seguida, apenas em circunstâncias raras desencadeadas pela alta taxa de transação DHCP e um script lento. Graças a Ferenc Wagner por encontrar o problema
- Registre apenas que um arquivo foi enviado pelo TFTP após a transferência ter concluído com sucesso.
- Uma boa sugestão de Ferenc Wagner: estenda a opção --domain para permitir esse tipo de coisa: --domain = thekelleys.org.uk, 192.168.0.0 / 24, local que cria automaticamente
- - local = / thekelleys.org.uk /
- - local = / 0.168.192.in-addr.arpa /
- Aperte a verificação da sintaxe dos contentes hexadecimais no arquivo de configuração. Obrigado a Fred Damen por ter visto isso.
- Adicione o logotipo / ícone da dnsmasq, contribuído por Justin Swift. Muito obrigado por isso.
- Nunca armazene respostas de DNS que tenham o bit de "cd" configurado, ou que resultem de consultas encaminhadas com o bit 'cd' definido. O bit 'cd' instrui um servidor de validação DNSSEC rio acima para ignorar falhas de assinatura e retornar respostas de qualquer maneira. Sem essa alteração, é possível poluir o cache dnsmasq com dados incorretos, fazendo uma consulta com o bit 'cd' definido e as consultas subseqüentes retornariam esses dados sem que ele seja marcado como suspeito. Obrigado a Anders Kaseorg por apontar este problema.
- Adicione o sinalizador --proxy-dnssec, para conformidade com o RFC 4035. A Dnsmasq agora limpará o bit 'ad' em respostas retornadas da validade a montante dos servidores de nomes, a menos que esta opção esteja definida.
- Permitir um nome de arquivo de "-" para --conf-file para ler o stdin. Sugestão de Timothy Redaelli.
- Gire a ordem dos registros SRV nas respostas, para fornecer balanceamento de carga round-robin quando todas as prioridades forem iguais. Obrigado a Peter McKinney pela sugestão.
- Edite contrib / MacOSX-launchd / uk.org.thekelleys.dnsmasq.plist para que ele não registre todas as consultas em um arquivo por padrão. Agradeço novamente a Peter McKinney.
- Por padrão, definir um endereço IPv4 para um domínio, mas não um endereço IPv6, faz com que o dnsmasq devolva uma resposta NODATA para IPv6 (ou vice-versa). Então --adress = / google.com / 1.2.3.4 impede que consultas IPv6 para * google.com sejam encaminhadas. Permite substituir esse comportamento definindo o sematics se o mesmo domínio aparecer em ambos --server e - address. Nesse caso, a diretiva - tem prioridade para a família de endereços em que aparece, mas o servidor tem prioridade da família de endereços que não aparece em - adddress
- Então:
- - endereço = / google.com / 1.2.3.4
- - servidor = / google.com / #
- Devolverá o 1.2.3.4 para consultas IPv4 para * .google.com, mas encaminhar as consultas IPv6 para o servidor de nomes upstream normal. Da mesma forma, ao configurar um endereço IPv6, somente isso permitirá o encaminhamento de consultas IPv4. Obrigado a William por apontar a necessidade disso.
- Permita mais de um --dhcp-optsfile e --dhcp-hostsfile e faça com que eles entendam os diretórios como argumentos da mesma forma que --addn-hosts. Sugestão de John Hanks.
- Ignore o recheio de pedidos de locações que não conhecemos. Rebind é transmitido, então podemos começar a ouvir uma solicitação para outro servidor DHCP. NAKing this is wrong. Obrigado a Brad D'Hondt por sua ajuda.
- Corrigir bug de cosméticos que produziu resultados estranhos ao verificar estatísticas de cache com algumas configurações. Obrigado a Fedor Kozhevnikov por ter observado isso.
O que é novo na versão 2.55:
- Corrigir falhas quando o / etc / ethers estiver em uso. Obrigado a Gianluigi Tiesi por achar isso.
- Corrigir falha no netlink_multicast (). Obrigado a Arno Wald por encontrar este.
- Permitir o domínio vazio "." nas opções dhcp domain-search (119).
Comentários não encontrado