Após mais algumas pesquisas, ocorreu-me que talvez o UDP também seja necessário, além do TCP, e que parece ser o caso de fato (note para si mesmo: provavelmente teria ajudado se eu tivesse usado um tcpdump / tshark ...):
Protocol transport
DNS primarily uses the User Datagram Protocol (UDP) on port number 53 to serve requests. DNS queries consist of a single UDP request from the client followed by a single UDP reply from the server. The Transmission Control Protocol (TCP) is used when the response data size exceeds 512 bytes, or for tasks such as zone transfers. Some resolver implementations use TCP for all queries.
O mesmo também é sugerido por este artigo antigo sobre DNS de balanceamento de carga com keepalived escrito em 2006.
Em consequência, adicionei a seguinte configuração do UDP ao que já estava presente:
virtual_server 192.168.0.10 53 {
delay_loop 6
! use round-robin as a load balancing algorithm
lb_algo rr
! we are doing NAT
lb_kind NAT
nat_mask 255.255.255.0
protocol UDP
! there can be as many real_server blocks as you need
real_server 192.168.0.2 53 {
! if we used weighted round-robin or a similar lb algo,
! we include the weight of this server
weight 1
}
real_server 192.168.0.3 53 {
! if we used weighted round-robin or a similar lb algo,
! we include the weight of this server
weight 1
}
}
Nota: No PDF de instruções do LVS mini , havia um < em> pegadinha :
2.2. Gotchas: you need an outside client (the director and realservers can’t access the virtual service)
Como o PDF também parece antigo (2006), não é mais o caso. Agora sou capaz de cavar a partir do próprio balanceador de carga; no entanto, ao usar uma máquina cliente diferente da mesma rede, recebo um ;; reply from unexpected source: 192.168.0.2#53, expected 192.168.0.10#53
. Eu tentei a sugestão abaixo de esta pergunta , mas até agora não funciona:
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv4.vs.conntrack=1
iptables -t nat -A POSTROUTING -j MASQUERADE
Pelo que eu aprendi até agora, isso pode ter algo a ver com a topologia de rede e configuração de NAT, mas ainda tenho que descobrir isso.
Parece que ainda tenho navegação, mas pelo menos tenho algo com que trabalhar e agora sei que 1 NIC é suficiente para balancear a carga dos 2 servidores DNS (pelo menos para os testes que estou fazendo agora).