Encontrei. A solução é adicionar:
allow-query {
any;
};
EDITAR: A solução do Rui F Ribeiro funciona, mas preciso criar um servidor público. Se você quiser evitar os problemas de segurança, consulte os comentários.
Eu criei um servidor DNS baseado em bind9 para funcionar apenas no modo de encaminhamento:
Este é o meu arquivo named.conf.options:
#acl goodclients {
# localhost;
# localnets;
#};
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
recursion yes;
#allow-query { goodclients; };
forwarders {
8.8.8.8;
8.8.4.4;
};
forward only;
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
Eu configurei o cliente e tudo funciona bem, mas recebi erros como este:
May 15 08:54:49 digitalocean named[3294]: client x.x.x.x#8137 (unix.stackexchange.com): query (cache) 'unix.stackexchange.com/A/IN' denied
Onde x.x.x.x é o meu endereço IP público.
Observe que o servidor DNS é público e estou usando seu IP público na configuração do cliente.
Devo ignorar a mensagem de erro?
Quando cavar o google.com usando o IP público do servidor DNS (y.y.y.y):
dig @y.y.y.y google.com
; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> @y.y.y.y google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 28091
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com. IN A
;; Query time: 15 msec
;; SERVER: y.y.y.y#53(y.y.y.y)
;; WHEN: Sun May 15 14:57:56 CEST 2016
;; MSG SIZE rcvd: 39
Isso é confuso.
Não está funcionando porque você comentou as diretivas allow-query
e goodclients
. Você deve removê-los do comentário e preencher goodclients
com os IPs / redes que o BIND deve responder às consultas.
acl goodclients {
localhost;
x.x.x.0/24;
};
options {
...
allow-query { goodclients; };
}
De link
allow-query defines an match list of IP address(es) which are allowed to issue queries to the server.
Por favor, note que a partir do BIND 9.4.1-P1, o comportamento padrão de allow-query
mudou de permitido para proibido.
Tags dns networking bind