Как я могу переопределить TTL интернет-адреса?

В настоящее время я использую кеширующий DNS-сервер, чтобы улучшить задержки в сети.

Вопрос в том, могу ли я переопределить TTL, который я получаю с сервера, используя BIND9 или другое программное обеспечение в Linux?

коротко "копать www.google.com" здесь:

; << >> DiG 9.6.1-P2 << >> www.google.com

;; РАЗДЕЛ ОТВЕТА: www.google.com. 604441 IN CNAME www.l.google.com. www.l.google.com. 300 В 74.125.45.147

Могу ли я изменить это "300" за 15 минут?

Большое вам спасибо за ваше время!

5 ответов

Решение

Самое грязное, самое уродливое, что можно сделать, это...

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
}

Когда истек срок действия функции ask? мы всегда не видели нет

Таким образом, он никогда не истечет, и вы покорите мир.

ВЫХОД:

; <<>> 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-запросов в Unbound DNS без необходимости что-либо перекомпилировать. Тем не менее, вы должны скомпилировать последнюю версию, так как ветка 1.4 в репозитории EPEL содержит несколько ошибок, которые не будут исправлены, и поэтому вы можете установить все флаги защиты glibc.

cache-min-ttl: 60

Хотя верно, что люди должны соблюдать осторожность при применении этого к рекурсорам, используемым многими приложениями и / или людьми, есть несколько случаев использования, где это может быть уместно. Это предполагает, что человек, переопределяющий min-ttl, понимает, какие приложения используют свою инфраструктуру DNS, и какое влияние это может оказать на переопределение. Сказать, что этого никогда не следует делать, было бы неверным обобщением.

Мой личный опыт

Я использовал cache-min-ttl: настройка в Unbound DNS для смягчения некоторых атак на конфиденциальность отслеживания веб-сайтов. Я также использовал его, чтобы исправить недействительный DNS, установленный людьми, которые устанавливают TTL 0 что технически нарушает несколько RFC. Учитывая, что я контролирую своих собственных рекурсоров и они используются только мной, риск очень низок.

Смотрите аналогичный вопрос здесь dnsmasq: как увеличить TTL? и еще один здесь Есть ли альтернатива "dnsmasq"?

Другие вопросы по тегам