Encontramos o problema. Foi um problema de descarregamento de hardware da NIC.
A execução de tcpdump -vvv -s 0 -l -n port 53
encontrou um punhado de erros [bad udp cksum 6279!]
para cada consulta DNS.
Uma pequena pesquisa no Google apontou-me na direção certa. Acontece que, devido ao nosso sistema CentOS executado como VM no XenServer (problemas semelhantes relatados com o VMWare, etc.), o descarregamento de hardware da NIC é ativado por padrão.
A execução de ethtool -k eth0 | grep on
mostrou o seguinte
x-checksumming: on
tx-checksum-ipv4: on
scatter-gather: on
tx-scatter-gather: on
tcp-segmentation-offload: off
tx-tcp-segmentation: off
tx-tcp-ecn-segmentation: off
tx-tcp6-segmentation: off
udp-fragmentation-offload: off [fixed]
generic-segmentation-offload: on
generic-receive-offload: on
tx-gso-robust: on [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: off [fixed]
tx-udp_tnl-segmentation: off [fixed]
A execução de ethtool -K eth0 tx off rx off
desativou o descarregamento do TCP TX.
Eu reiniciei o serviço de rede para uma boa medida
service network restart
e testado BIND. Estamos agora recebendo tempos de resposta muito rápidos do BIND
dig centos.org
; <<>> DiG 9.10.2-P4-RedHat-9.10.2-P4.el6 <<>> centos.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61933
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;centos.org.INA
;; ANSWER SECTION:
centos.org.60INA85.12.30.227
;; Query time: 268 msec
;; SERVER: 192.168.10.25#53(192.168.10.25)
;; WHEN: Thu Sep 17 08:25:39 AEST 2015
;; MSG SIZE rcvd: 55