Eu configurei um servidor DNS BIND no centos 7. Eu criei o registro da zona mestre, é o seguinte:
$ttl 38400
loool.ro. IN SOA ns1.loool.ro. owner.yahoo.com. (
1421842090
10800
3600
604800
38400 )
loool.ro. IN NS loool.ro.
loool.ro. IN A 86.34.156.51
loool.ro. IN MX 10 loool.ro.
loool.ro. IN NS ns1.loool.ro.
ns1.loool.ro. IN A 86.34.156.51
O 86.34.156.51 é um endereço IP público, eu posso acessar o servidor via. A porta 53 é aberta, verificada com o verificador de porta on-line gratuito. O named.service está escutando na porta 53. O nome de domínio está registrado e o ns1 também. Mas quando eu verifico com uma ferramenta dnslookup, a resposta ns1.loool.ro não vem, tempo limite após 3 seg.
O arquivo de configuração do servidor BIND é o seguinte:
options {
listen-on port 53 {
any;
};
#listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-transfer {
none;
};
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
also-notify {
};
allow-query {
any;
};
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "loool.ro" {
type master;
file "/var/named/loool.ro.hosts";
};
Se eu verificar com dig do localhost a resposta vem e corrija, mas de outro host não vem. Se eu definir o allow-query de qualquer um para localhost, o arquivo messages.log registrará as consultas negadas e o endereço IP, para que as consultas cheguem.
Em named.service start, o messages.log mostra o seguinte:
Jan 21 14:31:35 servera named[38627]: using default UDP/IPv4 port range: [1024, 65535]
Jan 21 14:31:35 servera named[38627]: using default UDP/IPv6 port range: [1024, 65535]
Jan 21 14:31:35 servera named[38627]: listening on IPv4 interface lo, 127.0.0.1#53
Jan 21 14:31:35 servera named[38627]: listening on IPv4 interface em1, 10.10.10.100#53
Jan 21 14:31:35 servera named[38627]: listening on IPv4 interface em1, 86.34.156.51#53
Com allow-query = localhost mostra o seguinte:
Jan 21 14:30:55 servera named[38403]: client 109.99.188.88#54374 (loool.ro): query 'loool.ro/A/IN' denied
Jan 21 14:31:08 servera named[38403]: client 74.125.17.211#53668 (loool.ro): query 'loool.ro/AAAA/IN' denied
Qual é o problema? Se o allow-query for algum, não há nenhum log de erro no messages.log. Este será um problema de configuração de rede ou o problema está no linux (port ou selinux) e no servidor BIND (misconfig)? O BIND descarta as consultas?
Dig:
loool.ro. 0 IN NS ns1.loool.ro. ;;
Received 71 bytes from 192.162.16.20#53(sec-dns-a.rotld.ro) in 88 ms
loool.ro. 38400 IN A 86.34.156.51
loool.ro. 38400 IN NS ns1.loool.ro.
loool.ro. 38400 IN NS loool.ro.
;; Received 101 bytes from 10.10.10.100#53(ns1.loool.ro) in 1 ms
Como Andrew B sugeriu, eu capturei os pacotes no localhost (onde o servidor dns está localizado), aqui está o resultado, espero que alguém saiba qual é o problema ou o que está errado aqui:
$tcpdump -i em1 -vvv -s 0 -l -n port 53
tcpdump: listening on em1, link-type EN10MB (Ethernet), capture size 65535 bytes
82.79.24.76.14761 > 10.10.10.100.domain: [udp sum ok] 3532 [1au] A? loool.ro. ar: . OPT UDPsize=4096 OK (37)
22:50:49.723204 IP (tos 0x0, ttl 64, id 63258, offset 0, flags [none], proto UDP (17), length 115)
10.10.10.100.domain > 82.79.24.76.14761: [udp sum ok] 3532*- q: A? loool.ro. 1/1/2 loool.ro. [10h40m] A 86.34.156.51 ns: loool.ro. [10h40m] NS ns1.loool.ro. ar: ns1.loool.ro. [10h40m] A 86.34.156.51, . OPT UDPsize=4096 OK (87)
22:50:49.987990 IP (tos 0x0, ttl 64, id 35514, offset 0, flags [DF], proto UDP (17), length 72)
10.10.10.100.52857 > 193.231.100.130.domain: [udp sum ok] 2042+ PTR? 38.124.41.103.in-addr.arpa. (44)