Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IPSet: заполнение, истечение #241

Closed
AltGrF13 opened this issue Dec 10, 2024 · 4 comments
Closed

IPSet: заполнение, истечение #241

AltGrF13 opened this issue Dec 10, 2024 · 4 comments

Comments

@AltGrF13
Copy link
Contributor

AltGrF13 commented Dec 10, 2024

Давно обещал дополнительно проверить истечение таймаутов и работу в целом. После #225 появились новые механизмы доработки (часть из которых заводил под проблему ttl), поэтому начнём.

@AltGrF13
Copy link
Contributor Author

AltGrF13 commented Dec 10, 2024

Динамическое заполнение при отсутствии в ipset

А. Сделаем

/opt/etc/init.d/S56dnsmasq restart
kvas ipset flush
ipset list KVAS_LIST | grep 81.90.181.105

Записи myip2.ru нет. Всё хорошо.

Б. Кинем с пользовательского устройства nslookup myip2.ru, запись в IPSet появляется. Всё хорошо.

В. Удалим

ipset del KVAS_LIST 81.90.181.105

На пользовательском устройстве ipconfig /flushdns, новый NSLookup — и ничего. Записи нет, она должна заполняться, но этого не происходит.

Г. Перезапустим

/opt/etc/init.d/S56dnsmasq restart
kvas ipset

Видим, что ipset при перезапуске не сбрасывается. Но в этот раз после nslookup myip2.ru, запись в IPSet появляется. Всё хорошо.

Но новый прогон опять спотыкается на В. Пока не перезапустишь. При перезапуске происходит сброс кэша. Проверим эту теорию, отключим cache-size=0 и снова прогоним А–В. «В» начинает заполняться стабильно!

Вывод: если DNSMasq берёт запись из кэша, то он не производит заполнение ipset. В нём надо будет отключить, в DNSCrypt включить. К сожалению, на режиме crypt off это скажется отрицательно (большая часть DNS вне кэша). А жаль, потому что именно он сейчас позволяет жить с IPv6 интернетом.

Можно запускать два процесса DNSCrypt (ну или более лёгковесный stubby), каждый на своём порту. Один бы ловил запросы списка (где обрезал бы IPv6), другой этого бы не делал (для остального интернета). Оба бы кэшировали DNS. Но эта фантазия точно не относится к релизу.

UPD. Что означает этот параметр DNSMasq, ибо текст документации не однозначен.

  /* Return the Max TTL value if it is lower than the actual TTL */
  if (daemon->max_ttl == 0 || ((unsigned)(crecp->ttd - now) < daemon->max_ttl))
    return crecp->ttd - now;
  else
    return daemon->max_ttl;

@AltGrF13
Copy link
Contributor Author

Заполнение при истечении ttl

ipset -exist add KVAS_LIST 81.90.181.105 timeout 10000
ipset list KVAS_LIST | grep 81.90.181.105
81.90.181.105 timeout 9997

С пользовательского устройства делаем

ipconfig /flushdns
nslookup myip2.ru

Снова на роутере

ipset list KVAS_LIST | grep 81.90.181.105
81.90.181.105 timeout 86397

Вывод: проблема не подтверждена! Даже если запись в ipset близка к истечению, новый DNS-запрос запускает отсчёт заново, продляет ttl.

AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Dec 11, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Dec 11, 2024
Попробуем кардинальное «2 DNS-запроса в сутки»
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Dec 11, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Dec 11, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Dec 11, 2024
@qzeleza
Copy link
Owner

qzeleza commented Dec 13, 2024

Благодарю Вас.
PR внес в основной код, выпущена версия 1.1.9 beta10-3

@AltGrF13
Copy link
Contributor Author

Снова прогнал все тесты, всё отлично

AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Dec 25, 2024
badigit added a commit to badigit/kvas that referenced this issue Dec 25, 2024
commit bd39073
Author: AltGrF13 <[email protected]>
Date:   Wed Dec 25 16:56:53 2024 +0300

    qzeleza#241 очередные донастройки dnsmasq
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants