1. А разве нужно все 37k постоянно резолвить? Тогда TTL нафига? Фильтруем динамический кешь на предмет (TTL<= 1:00) and (TYPE="A" or TYPE="SOA" or TYPE="CNAME") (все остальное лесом, если не прав, поправьте) имеем не более 30 записей. Их и резолвим. Результат в статический кешь (в лог попутно). На практике изменения происходят не чаще одного раза в 2-3 минуты. На вышеприведенный пример смотрим: 6:55 - 10 записей, 6:58 - 1 запись, 7:01 - 6 записей. И т.д. И где тут 37к записей?
2. Совершенно не понятен подход некоторых к проблеме "в лоб". Начинают предлагать гнать весь трафик через фильтр. Зачем!? Делим трафик на 3 потока. "Красный" - жестко забаненные IP. Дропаем (направляем на заглушку) на подлете/вылете. Далее "Оранжевый" - (port=80, 81, 443, 888, 4001, 4002, 5000, 8001, 8080, 8081, 16869) and (IP = ReestrList). Вот его собственно и анализируем, в весь остальной трафик по "зеленому коридору". Имеем не более 5% от суммарного трафика на фильтре.