Skip to content

Instantly share code, notes, and snippets.

@darkk darkk/README.md Secret
Last active Feb 11, 2019

Embed
What would you like to do?
К вопросу о MinTTL

Многие провайдеры на своих рекурсивных DNS-серверах включают повышение TTL до некоторого минимального пороговорго значения.

Для небольших TTL это считается "нормальной" практикой: так поступает Cloudflare на 1.1.1.1, а DNS-сервер knot ставит минимальный TTL в 5 секунд в конфигурации по-умолчанию.

Можно запустить измерение с помощью RIPE Atlas, и узнать, что некоторые российские провайдеры так и поступают:

  • Мароснет — 60 секунд
  • Новотелеком — 2 минуты
  • Ростелеком — от 2.5 до до 10 минут
  • Net by net — 10 минут
  • Корбина (Билайн) — 1 час (что #нивкакиерамки)

Измеряйте интернеты, хостите RIPE Atlas пробы! Это весело и бесплатно!

< RIPE-Atlas-measurement-19491403.json ripe-dns-abuf \
| jq -c 'select([.resultset[].result.min_ttl] | min > 13) | .resultset[] | {from, prb_id, min_ttl: .result.min_ttl, src_addr, dst_addr}' \
| jq -r '(.from + "\t" + (.prb_id | tostring) + "\t" + (.min_ttl | tostring) + "\t" + .src_addr + "\t" + .dst_addr)'
#!/usr/bin/python2
import base64
import json
import sys
import dns.message
for m in sys.stdin:
m = json.loads(m)
for res in m['resultset']:
if 'result' in res:
abuf = res['result']['abuf']
try:
answ = dns.message.from_wire(base64.b64decode(abuf.strip()))
ttl = min(_.ttl for _ in answ.answer)
except Exception as exc:
ttl = -1
res['result']['min_ttl'] = ttl
res['result']['abuf_txt'] = str(answ).strip().split('\n')
for k in m.viewkeys() - {'resultset'}:
if k not in res:
res[k] = m[k]
print(json.dumps(m, sort_keys=True))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.