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.