В настоящее время я использую кэширующий DNS-сервер, чтобы уменьшить задержку в сети.
Возникает вопрос: могу ли я переопределить TTL, который я получаю с сервера, используя BIND9 или другое программное обеспечение в Linux?
коротко "копать www.google.com" здесь:
; << >> DiG 9.6.1-P2 << >> www.google.com
;; РАЗДЕЛ ОТВЕТОВ: www.google.com. 604441 В CNAME www.l.google.com. www.l.google.com. 300 IN A 74.125.45.147
Могу ли я изменить эти «300» на 15 минут?
Большое спасибо за ваше время !!.
САМОЕ ГРЯЗНОЕ, самое уродливое, что можно сделать, - это ...
1-загрузка исходного кода 2-найти файл с именем cache.c 3-найти функцию is_expired
4- Измените это таким образом
static int is_expired(time_t now, struct crec *crecp)
{
if (crecp->flags & F_IMMORTAL)
return 0;
if (difftime(now, crecp->ttd) < 0)
return 0;
return 0; // IT WAS IN ONE
}
Когда истек срок действия функционального запроса? мы всегда видели нет
Таким образом, он никогда не истечет, и вы завоюете мир.
ВЫВОД:
; <<>> DiG 9.6.1-P2 <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28477
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.google.com. IN A
;; ANSWER SECTION:
www.google.com. 603937 IN CNAME www.l.google.com.
www.l.google.com. 4294966733 IN A 209.85.195.99
www.l.google.com. 4294966733 IN A 209.85.195.104
www.l.google.com. 4294966733 IN A 209.85.195.147
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Feb 17 18:34:47 2010
;; MSG SIZE rcvd: 110
ЖЕСТЯНАЯ БАНКА это сделать? Конечно, есть сломанные DNS-серверы (например, те, которые работает AOL), которые делают это, и каждый админ, которого я знаю, ненавидит.
ДОЛЖЕН это сделать? Почти наверняка нет.
Вообще говоря, для TTL было установлено определенное значение по какой-то причине (в случае Google, вероятно, отказоустойчивость: вы не сможете связаться с Google только в течение 5 минут, если этот сервер взорвется), и вы не должны возиться с ним .
Вы уже получаете повышение производительности, сохраняя запись google.com в своем кеше в течение 5 минут, в течение которых она предназначена для жизни, поскольку ваши отдельные рабочие станции не будут выходить в Интернет для разрешения - не оптимизируйте чрезмерно и нарушить ожидаемое поведение :)
Если вас действительно интересует история, а не точность, самый быстрый Самый грязный прием, который вы можете сделать, - это, вероятно, сделать ваш сервер имен авторитетным мастером домена и воссоздавать файл зоны так часто, как это необходимо, с помощью сценария. Определенно рекомендуется только для покорения мира, а не для реальной жизни.
В общем, если вы действительно хотите, чтобы запись с очень коротким TTL сохранялась в приложении, кажется, что единственный разумный способ - кэшировать ее в приложении.
Мин. TTL
да, вы можете сделать это в ISC Bind, просто изменив их исходный код. Они не предоставят вам для этого механизма по идеологическим причинам.
да, вы также можете установить или переопределить min-ttl рекурсивных DNS-запросов в Несвязанный DNS без необходимости ничего перекомпилировать. Тем не менее, вы должен скомпилируйте последнюю версию, так как ветка 1.4 в репозитории EPEL содержит несколько ошибок, которые не будут исправлены, и вы можете установить все флаги защиты glibc.
cache-min-ttl: 60
Хотя правильно, что люди должны проявлять осторожность при применении этого к рекурсорам, используемым многими приложениями и / или людьми, есть несколько вариантов использования, где это может быть целесообразно. Это предполагает, что лицо, подавляющее min-ttl, понимает, какие приложения используют их инфраструктуру DNS и какое влияние это может иметь. Сказать, что этого никогда не следует делать, было бы неправильным обобщением.
Мой личный опыт
Я использовал cache-min-ttl:
настройку несвязанного DNS для смягчения некоторых атак на конфиденциальность отслеживающих веб-сайтов. Я также использовал его для исправления неверного DNS, установленного людьми, которые устанавливают TTL равным 0
что технически нарушает несколько RFC. Учитывая, что я контролирую свои собственные рекурсоры, и они используются только мной, риск очень низкий.
См. Аналогичный вопрос здесь dnsmasq: как увеличить TTL? и еще один здесь Есть ли альтернатива "dnsmasq"?