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

kvas crypt: доводки #222

Closed
AltGrF13 opened this issue Nov 18, 2024 · 17 comments
Closed

kvas crypt: доводки #222

AltGrF13 opened this issue Nov 18, 2024 · 17 comments

Comments

@AltGrF13
Copy link
Contributor

AltGrF13 commented Nov 18, 2024

  1. Включил, вызвал отключение kvas crypt off. Команда выполнялась "бесконечно", хотя и все замены в конфигах сделала.

  2. При kvas crypt on в dnsmasq.conf установлено server=127.0.0.1#9153. Т.е. все запросы пойдут туда. Это верно. Но в файле kvas.dnsmasq для каждого сервера указано

ipset=/artifacts.elastic.co/kvas_ipset
server=/artifacts.elastic.co/127.0.0.1#9153

Обычно server для домена указывается, когда нужно изменить от общего на частное. Но тут они равны. Не нужно повторяться. Для каждого домена при kvas crypt on должен быть указан лишь ipset=/artifacts.elastic.co/kvas_ipset.

  1. При kvas crypt off в dnsmasq.conf установлено server=9.9.9.9. Т.е. все запросы пойдут туда. Это верно. Но в файле kvas.dnsmasq для каждого сервера указан лишь ipset=/artifacts.elastic.co/kvas_ipset. Т.е. запросы для списка пойдут открытым протоколом на 9.9.9.9; где их можно как банить, так и отслеживать. Запросы для списка всегда должны ходить шифрованно, в независимости от установки флага kvas crypt. Т.е. в этом режиме я как раз ожидал бы в файле
ipset=/artifacts.elastic.co/kvas_ipset
server=/artifacts.elastic.co/127.0.0.1#9153

Именно в таком виде, в DNSCrypt; у них свой отдельный DNS, не совпадающий с общим, тут это уместно. Т.е. DNSCrypt должен всегда работать. В режиме on на все запросы, в режиме off обслуживать лишь защищённый список (на то он и защищённый).

  1. filter-rr=HTTPS тоже не плохо ложится на kvas crypt. Когда off, то смело можем фильтровать защиту DNS filter-rr=HTTPS. Когда on, то насильное откидывание ECH — плохая идея, лучше закомментировать #filter-rr=HTTPS.
@qzeleza
Copy link
Owner

qzeleza commented Nov 19, 2024

Не совсем понятно, что Вы предлагаете сделать по пп. 1-4?

@AltGrF13
Copy link
Contributor Author

AltGrF13 commented Nov 19, 2024

Начнём последовательно. Пункт 1 у Вас не воспроизводится? Если поделать команды kvas crypt off, kvas crypt on, kvas crypt off последовательно; то команда off выходит, бесконечно не висит?

2 и 3 — неправильно заполняется kvas.dnsmasq, нужно как бы "инвертировать" режимы

4 — добавить включение и отключение этого флага по аналогии с кучей других.

@qzeleza
Copy link
Owner

qzeleza commented Nov 19, 2024

  1. В крайней бете - все штатно - зависаний нет
    2-3. Совсем не понял суть изменений - поясните пожалуйста, что на что необходимо изменить?
  2. Пожалуйста, поясните конкретно, что на что заменить и при каких условиях?

@AltGrF13
Copy link
Contributor Author

AltGrF13 commented Nov 19, 2024

kvas.dnsmasq

При kvas crypt on должен быть просто список с ipset:

ipset=/artifacts.elastic.co/kvas_ipset
ipset=/jetbrains.com/kvas_ipset
ipset=/www.soapui.org/kvas_ipset

Потому что весь трафик итак уже идёт через DNSCrypt.

При kvas crypt off должен быть список пар:

ipset=/artifacts.elastic.co/kvas_ipset
server=/artifacts.elastic.co/127.0.0.1#9153

Трафик человека пойдёт через незашифрованный канал, но защищённый список должен всегда ходить через DNSCrypt.

@AltGrF13
Copy link
Contributor Author

AltGrF13 commented Nov 19, 2024

В крайней бете - все штатно - зависаний нет

У меня off не отрабатывает и периодически (если вызвать несколько раз по циклу включение-отключение на заполненном списке) полностью очищает файл /opt/etc/dnsmasq.d/kvas.dnsmasq. У Вас цикличный вызов (раза 2) с полным списком всегда корректно меняет его содержимое? Может имеет смысл всегда пересобирать этот файл с нуля (как после экспорта), а не sed'ить?

@AltGrF13
Copy link
Contributor Author

filter-rr=HTTPS в /opt/etc/dnsmasq.conf

При kvas crypt off включать

filter-rr=HTTPS

При kvas crypt on отключать

#filter-rr=HTTPS

@qzeleza
Copy link
Owner

qzeleza commented Nov 19, 2024

включил все выше и пересобрал 1.1.9b9

@AltGrF13
Copy link
Contributor Author

AltGrF13 commented Nov 19, 2024

Обновил. Со старта было нормально, но после импортов ситуация опять "зеркальная".

kvas crypt off

Делаю

kvas crypt off
kvas clear
kvas import /opt/tmp/unblock.txt

В файле /opt/etc/dnsmasq.d/kvas.dnsmasq

ipset=/artifacts.elastic.co/kvas_ipset
ipset=/jetbrains.com/kvas_ipset
ipset=/www.soapui.org/kvas_ipset

Хотя ожидается

ipset=/artifacts.elastic.co/kvas_ipset
server=/artifacts.elastic.co/127.0.0.1#9153
ipset=/jetbrains.com/kvas_ipset
server=/jetbrains.com/127.0.0.1#9153
ipset=/www.soapui.org/kvas_ipset
server=/www.soapui.org/127.0.0.1#9153

Ведь DNS доменов из защищённого списка всегда должны ходить через DNSCrypt.

kvas crypt on

Делаю

kvas crypt on
kvas clear
kvas import /opt/tmp/unblock.txt

В файле /opt/etc/dnsmasq.d/kvas.dnsmasq тоже не то. Ситуация в этот раз не с переключением режимов, а с импортом после них.

@qzeleza
Copy link
Owner

qzeleza commented Nov 20, 2024

Попробуйте проверить состояние /opt/etc/dnsmasq.d/kvas.dnsmasq сразу после kvas crypt on и kvas crypt off.
Все ли правильно добавляется, если нет, то поправлю, если да, то тогда нужно уже смотреть что не так сimport.
Но это уже другая подзадача.

@AltGrF13
Copy link
Contributor Author

Да, давайте разделим, пока речь только о переключениях. Пункты 1 и 4 сделаны. Устанавливаю с нуля. Судя по kvas crypt шифрование включено. Файл /opt/etc/dnsmasq.d/kvas.dnsmasq правильный.

Делаю kvas crypt off. В файле

ipset=/2ip.ru/kvas_ipset
ipset=/ifconfig.me/kvas_ipset
ipset=/myip2.ru/kvas_ipset

секции server=/*/127.0.0.1#9153 по-прежнему нет.

Делаю ещё цикл включения-отключения. server=/*/127.0.0.1#9153 появляется, но теперь в шифрованном режиме перестаёт удаляться.

@qzeleza
Copy link
Owner

qzeleza commented Nov 20, 2024

Нашел в коде ошибку - забыл указать в sed параметр -i чтобы в файле происходили изменения
Сейчас поправлю

@AltGrF13
Copy link
Contributor Author

AltGrF13 commented Nov 21, 2024

Установил с нуля. Судя по kvas crypt шифрование включено. Файл /opt/etc/dnsmasq.d/kvas.dnsmasq правильный.
Делаю kvas crypt off, появляются секции server=/myip2.ru/127.0.0.1#9153, всё верно.
Делаю kvas crypt on, секции server=/myip2.ru/127.0.0.1#9153 остались.
Делаю ещё раз kvas crypt off, пошло задвоение секции сервер. Видимо, off отрабатывает верно, c on проблемы.

@qzeleza
Copy link
Owner

qzeleza commented Nov 21, 2024

Обновил и перезалил 9 бету в канале, так как изменений почти нет - не стал писать об этом там.
Перепроверил практически - при kvas crypt on секция стабильно удаляется

@AltGrF13
Copy link
Contributor Author

Установил. По умолчанию со старта kvas crypt подключен, но секция server= в /opt/etc/dnsmasq.d/kvas.dnsmasq есть.
Отключаю kvas crypt off — задвоение.
Включаю kvas crypt on — задвоение остаётся.

Если после этого почистить руками до

ipset=/2ip.ru/kvas_ipset
ipset=/ifconfig.me/kvas_ipset
ipset=/myip2.ru/kvas_ipset

и отключить, то сразу задвоенные строчки.

@AltGrF13
Copy link
Contributor Author

AltGrF13 commented Nov 24, 2024

Установил. По умолчанию со старта kvas crypt подключен, cекции server= в /opt/etc/dnsmasq.d/kvas.dnsmasq нет. Всё хорошо.

Отключаю вызовом kvas crypt off — секция server= появилась, основные настройки переключились, снова всё хорошо.

Включаю kvas crypt on — секция server= осталась, не удалилась.
При этом в этом режиме сделал импорт, и залилось всё верно, без server=.
Импорт с отключенным крипт тоже работает верно, с секцией сервер.

Итого: есть проблема лишь при переходе из состояния kvas crypt off в kvas crypt on при заполненном списке, секция server= не удаляется.

@AltGrF13 AltGrF13 changed the title Dnscrypt: включение и отключение Режимы kvas crypt Nov 24, 2024
@AltGrF13 AltGrF13 changed the title Режимы kvas crypt kvas crypt доводки Nov 24, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Nov 25, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Nov 25, 2024
@AltGrF13 AltGrF13 changed the title kvas crypt доводки kvas crypt: доводки Nov 25, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Nov 25, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Nov 25, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Nov 25, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Nov 25, 2024
@qzeleza
Copy link
Owner

qzeleza commented Nov 25, 2024

image Не увидел проблем - на рисунке ситуация не подтверждается

@AltGrF13
Copy link
Contributor Author

AltGrF13 commented Nov 25, 2024

Я как раз описал, что импорт работает верно (что проверяете Вы). Не верным остаётся сам список после включения.

Как воспроизвести

Перескачиваю последнюю версию (106519 байт)

kvas uninstall full
reboot
opkg install /opt/tmp/kvas_1.1.9-beta_9_all.ipk | tee /opt/tmp/kvas_install.log
kvas setup | tee -a /opt/tmp/kvas_setup.log
cat /opt/etc/dnsmasq.d/kvas.dnsmasq
# верный вывод без server=
kvas crypt off
cat /opt/etc/dnsmasq.d/kvas.dnsmasq
# верный вывод с server=
kvas crypt on
cat /opt/etc/dnsmasq.d/kvas.dnsmasq
# не верный вывод:
ipset=/2ip.ru/kvas_ipset
server=/2ip.ru/127.0.0.1#9153
ipset=/ifconfig.me/kvas_ipset
server=/ifconfig.me/127.0.0.1#9153
ipset=/myip2.ru/kvas_ipset
server=/myip2.ru/127.0.0.1#9153

kvas add abc.com
cat /opt/etc/dnsmasq.d/kvas.dnsmasq
# верный вывод без server=

Может после включения (а может и отключения, для упрощения кода) просто вызывать пересборку /opt/etc/dnsmasq.d/kvas.dnsmasq? Не адаптировать файл руками, а вызывать единый метод перегенерации (раз он работает верно)?
UPD Так и поступил, ситуация теперь отрабатывает корректно.

AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Nov 26, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Nov 26, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Nov 26, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Nov 26, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Dec 12, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Dec 12, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Dec 12, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Dec 12, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Dec 12, 2024
AltGrF13 pushed a commit to AltGrF13/kvas that referenced this issue Dec 12, 2024
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