Como impor o dnsmasq para usar um servidor DNS upstream apenas para alguns nomes de domínio especificados?

Como impor o dnsmasq para usar um servidor DNS upstream apenas para alguns nomes de domínio especificados?

No momento, tenho a seguinte linha em dnsmasq.conf, que lida bem com todas as solicitações ( /#/corresponde a qualquer domínio; isso é obrigatório):

address=/#/127.0.0.1

No entanto, existem alguns domínios que precisam ser resolvidos para endereços IP diferentes de 127.0.0.1.

Como solução temporária, eles foram adicionados a /etc/hosts:

209.85.148.95   ajax.googleapis.com
207.97.227.245  underscorejs.org
72.21.194.31    s3.amazonaws.com

Infelizmente, esta é uma solução muito temporária: ela irá parar de funcionar assim que o endereço IP de qualquer domínio de destino mudar.

Minha pergunta é: como impor o dnsmasq para usar um servidor DNS upstream para resolver os endereços IP de alguns nomes de domínio (especificados)?

Responder1

Você pode fazer isso usando a server=diretiva, por exemplo

server=/ajax.googleapis.com/8.8.8.8

consultaria o servidor DNS público do Google para o domínio ajax.googleapis.com, da mesma forma

server=/amazonaws.com/209.244.0.3

consultaria o servidor DNS público da Level3 para o domínio amazonaws.com.

Você pode agrupar vários domínios

server=/co.uk/com/8.8.4.4

Enviaria os domínios .co.uk e .com para o servidor DNS em 8.8.4.4

Você também pode ter várias server=diretivas

−S, --server=[/[<domínio>]/[domínio/]][<ipaddr>[#<porta>][@<fonte>[#<porta>]]]

Especifique o endereço IP dos servidores upstream diretamente. Definir este sinalizador não suprime a leitura de /etc/resolv.conf, use -R para fazer isso. Se um ou mais domínios opcionais forem fornecidos, esse servidor será usado somente para esses domínios e eles serão consultados apenas usando o servidor especificado. Isso se destina a servidores de nomes privados: se você tiver um servidor de nomes em sua rede que lide com nomes no formato xxx.internal.thekelleys.org.uk em 192.168.1.1, em seguida, forneça o sinalizador -S /internal.thekelleys.org.uk/ 192.168.1.1 enviará todas as consultas de máquinas internas para esse servidor de nomes, todo o resto irá para os servidores em /etc/resolv.conf. Uma especificação de domínio vazia, // tem o significado especial de "somente nomes não qualificados", ou seja, nomes sem pontos. Uma porta não padrão pode ser especificada como parte do endereço IP usando um caractere #. Mais de um sinalizador -S é permitido, com partes repetidas de domínio ou ipaddr, conforme necessário.

Também é permitido um sinalizador -S que fornece um domínio, mas nenhum endereço IP; isso informa ao dnsmasq que um domínio é local e pode responder a consultas de /etc/hosts ou DHCP, mas nunca deve encaminhar consultas nesse domínio para qualquer servidor upstream. local é sinônimo de servidor para tornar os arquivos de configuração mais claros neste caso.

O segundo endereço IP opcional após o caractere @ informa ao dnsmasq como definir o endereço de origem das consultas para este servidor de nomes. Deve ser um endereço pertencente à máquina na qual o dnsmasq está sendo executado, caso contrário esta linha do servidor será registrada e ignorada. O sinalizador query-port é ignorado para quaisquer servidores que tenham um endereço de origem especificado, mas a porta pode ser especificada diretamente como parte do endereço de origem.

informação relacionada