Привет! Помогите разобраться, пожалуйста.
На волне последних известий "с полей", громких разоблачений и срывов покровов (да и вообще давно руки чесались) ограничил бездумное обращение рабочих машин к гугловскому 8.8.8.8, сделав в iptables редирект на локальный pdnsd. Но работает всё совсем не так, как ожидается.
Конфиг pdns
global {
perm_cache=10240;
cache_dir="/var/cache/pdnsd";
run_as="pdnsd";
//server_ip = any; // Use eth0 here if you want to allow other
// machines on your network to query pdnsd.
status_ctl = on;
paranoid=on;
min_ttl=1d; // Retain cached entries at least * minutes.
max_ttl=1w; // One week.
timeout=10; // Global timeout option (10 seconds).
par_queries=4;
}
server {
//label="resolvconf";
ip=77.88.8.8, 212.44.130.6, 77.88.8.1, 195.68.135.5, 8.8.8.8;
timeout=5;
uptest=none;
interval=240m;
preset=on;
}
Правило в iptables
/sbin/iptables -A PREROUTING -t nat -i eth1 -p udp --dport 53 --dst 8.8.8.8 -j REDIRECT --to-port 53
Делаю запрос из подсети:
dig chi12345678901.ru @8.8.8.8 +noedns
Возвращается ответ от
pdnsd, что такого адреса нет. Смотрю акулой что происходит:
Происходит следующее, по строкам:
-- роутер XXX получает запрос от машины 157...6, отдаёт его на растерзание pdnsd
-- pdnsd в соответствии с конфигом посылает 4 параллельных запроса.
Теперь pdnsd должен дождаться четырёх отказов "No such name" и сделать запрос к следующим четырём dns-серверам, вдруг, они что-нибудь знают. И только когда все известные ему серверы (он знает пять штук) ответят отказом, тогда клиенту возвращается "no such name". Но вместо этого pdnsd
ВНЕЗАПНО возвращает первый пришедший ответ (от 77.88.8.8 ). И это первая странность.
Вторая странность - он и не думает дёргать 8.8.8.8, хотя тот вполне может знать ответ.
Третья странность - на запоздалый ответ от 77.88.8.1 сервер огрызается "Port Unreachable", т.е. pdnsd ограничился одним, самым быстрым ответом, и уже не слушает остальные. Даже если первый был неудачным.
Ну, и про четвёртую странность писать наверное не стоит... Как видно из дампа, не пришли два из четырёх ответов, от dns Билайна. Хотя вручную через dig адреса отвечают, они живые.