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 и политики доступа в интернет Keenetic #41

Open
kilia07 opened this issue Feb 26, 2023 · 7 comments
Open
Labels
bug Something isn't working invalid This doesn't seem right

Comments

@kilia07
Copy link

kilia07 commented Feb 26, 2023

Описание проблемы.
Если создать профиль доступа в интернет на страничке http://192.168.1.1/controlPanel/policies и в созданный профиль добавить клиента wifi, то сайты из списка разблокировки kvas перестают открываться. При этом сайты не из списка разблокировки открываются как надо.

Мои шаги, приведшие к ошибке/проблеме.

  1. Открыл следующую страницу (http://192.168.1.1/controlPanel/policies)
  2. Создал профиль "Test" и включил все доступные подключения аналогично профилю по умолчанию
  3. На вкладке присвоения политик клиентам добавил клиента в профиль Test
  4. Проверил открывается ли сайт 2ip.ru, rutracker.org - получил ошибку открытия сайта, проверил 2ip.ua - сайт открылся
  5. Выполнил kvas debug, и полный ребут роутера - картина та же

Ожидания о поведении программы.
Хотелось бы чтобы KVAS обрабатывал другие профили доступа в интернет также как и профиль по умолчанию

Информация о системе с которой происходит тестирование пакета на роутере (пожалуйста, заполните следующую информацию):

  • Операционная система (MacOS) и версия: [Бета 13.3 (22E5219e)]
  • Браузер и его версия [Yandex Браузер 23.1.2.978, safari 16.4]
  • SSH клиент и его версия [терминал MacOS]

Информация о роутере (пожалуйста, заполните следующую информацию):

  • Производитель: [Keenetic]
  • Прошивка на роутере: [3.8.4]
  • Тип устройства [Ultra KN-1011]

Дополнительные пояснения.
Проверял поведение KVAS при создании профиля на прошивке 3.9, результат тот же.
В прошивке 3.9 на той же странице профилей появилась возможность создавать профиль с интеллектуальной балансировкой трафика при использовании нескольких интернет-подключений. В моем случае по итогу мне наиболее критично использовать KVAS с подобным профилем, так как у меня есть несколько интернет-подключений (проводно+модем+соседский wifi).

@kilia07 kilia07 added bug Something isn't working invalid This doesn't seem right labels Feb 26, 2023
@qzeleza
Copy link
Owner

qzeleza commented Mar 2, 2023

Доброго дня,
Спасибо, по моему мы на страницах форума уже обсуждали данный функционал?
В любом случае, данный функционал постараюсь реализовать уже в КВАС 2.0 после реализации WUI для него.

@kilia07
Copy link
Author

kilia07 commented Mar 2, 2023

Добрый день! Да я писал, но подумал продублирую тут, тут вроде как все структурированней=)

@AltGrF13
Copy link
Contributor

AltGrF13 commented Mar 29, 2024

Небольшое исследование через iptables-save &> /opt/tmp/iptables.txt до и после указанных действий при основном соединении SS для 192.168.1.32

  1. Добавляется REDIRECT
:_NDM_UPNP_REDIRECT_0 - [0:0]
-A PREROUTING -j _NDM_UPNP_REDIRECT_0
  1. Добавляется FORWARD
:_NDM_UPNP_FORWARD_0 - [0:0]
-A _NDM_FORWARD -j _NDM_UPNP_FORWARD_0
  1. Добавляется PROTECT
-A _NDM_IP_PROTECT -p udp -m udp --dport 41100 -j _NDM_SL_PROTECT
-A _NDM_IP_PROTECT -p tcp -m tcp --dport 41100 -j _NDM_SL_PROTECT
  1. Добавляется большой блок редиректов DNS, SSDP, NAT PMP
-A _NDM_HOTSPOT_DNSREDIR -i br0 -p udp -m mark --mark 0xffffaab -m pkttype --pkt-type unicast -m udp --dport 53 -j REDIRECT --to-ports 41100
-A _NDM_HOTSPOT_DNSREDIR -i br0 -p tcp -m mark --mark 0xffffaab -m pkttype --pkt-type unicast -m tcp --dport 53 -j REDIRECT --to-ports 41100
-A _NDM_HOTSPOT_DNSREDIR -i br0 -p udp -m mark --mark 0xffffaab -m pkttype --pkt-type unicast -m udp --dport 1900 -j REDIRECT --to-ports 41300
-A _NDM_HOTSPOT_DNSREDIR -i br0 -p udp -m mark --mark 0xffffaab -m pkttype --pkt-type unicast -m udp --dport 5351 -j REDIRECT --to-ports 41301
-A _NDM_HOTSPOT_DNSREDIR -i br0 -p tcp -m mark --mark 0xffffaab -m pkttype --pkt-type unicast -m tcp --dport 1900 -j REDIRECT --to-ports 41300
-A _NDM_HOTSPOT_DNSREDIR -i br1 -p udp -m mark --mark 0xffffaab -m pkttype --pkt-type unicast -m udp --dport 53 -j REDIRECT --to-ports 41100
-A _NDM_HOTSPOT_DNSREDIR -i br1 -p tcp -m mark --mark 0xffffaab -m pkttype --pkt-type unicast -m tcp --dport 53 -j REDIRECT --to-ports 41100
-A _NDM_HOTSPOT_DNSREDIR -i br1 -p udp -m mark --mark 0xffffaab -m pkttype --pkt-type unicast -m udp --dport 1900 -j REDIRECT --to-ports 41300
-A _NDM_HOTSPOT_DNSREDIR -i br1 -p udp -m mark --mark 0xffffaab -m pkttype --pkt-type unicast -m udp --dport 5351 -j REDIRECT --to-ports 41301
-A _NDM_HOTSPOT_DNSREDIR -i br1 -p tcp -m mark --mark 0xffffaab -m pkttype --pkt-type unicast -m tcp --dport 1900 -j REDIRECT --to-ports 41300
  1. Смена правил
-A _NDM_HOTSPOT_PRERT -s 192.168.1.32/32 -i br0 -m connndmmark --mark 0x0/0x0 -j CONNNDMMARK --set-xmark 0x14/0x0
-A _NDM_HOTSPOT_PRERT -s 192.168.1.32/32 -i br0 -j RETURN

на

-A _NDM_HOTSPOT_PRERT -s 192.168.1.32/32 -i br0 -m connndmmark --mark 0x0/0x0 -j CONNNDMMARK --set-xmark 0x14/0x0
-A _NDM_HOTSPOT_PRERT -s 192.168.1.32/32 -i br0 -j MARK --set-xmark 0xffffaab/0xffffffff
-A _NDM_HOTSPOT_PRERT -s 192.168.1.32/32 -i br0 -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A _NDM_HOTSPOT_PRERT -s 192.168.1.32/32 -i br0 -j RETURN

Мысли

Как минимум, проблема в том, что у устройства из альтернативной политики DNS трафик редиректится на порт 41100 (проблемные правила легко проверять через iptables-save | grep " 53 "). У всех там 41100? А если несколько политик?

Заставить Dnsmasq слушать два порта возможности нет, нужно что-то делать именно с этими правилами

-A _NDM_HOTSPOT_DNSREDIR -i br0 -p udp -m mark --mark 0xffffaaa -m pkttype --pkt-type unicast -m udp --dport 53 -j REDIRECT --to-ports 41100
-A _NDM_HOTSPOT_DNSREDIR -i br0 -p tcp -m mark --mark 0xffffaaa -m pkttype --pkt-type unicast -m tcp --dport 53 -j REDIRECT --to-ports 41100
-A _NDM_HOTSPOT_DNSREDIR -i br1 -p udp -m mark --mark 0xffffaaa -m pkttype --pkt-type unicast -m udp --dport 53 -j REDIRECT --to-ports 41100
-A _NDM_HOTSPOT_DNSREDIR -i br1 -p tcp -m mark --mark 0xffffaaa -m pkttype --pkt-type unicast -m tcp --dport 53 -j REDIRECT --to-ports 41100

@AltGrF13
Copy link
Contributor

AltGrF13 commented Mar 30, 2024

Если в Web cli (по адресу /a) выполнить show dns-proxy, можно увидеть 2 профиля. У Policy0 видим настройку встроенного DNS Proxy с этим самым портом

dns_tcp_port = 41100
dns_udp_port = 41100

dns-proxy no intercept enable сообщает disable intercept for system profile.
dns-proxy filter profile Policy0 no intercept enable не находит профиль Policy0.
Т.е. команда отключения проксирования DNS работает лишь с профилем по умолчанию, не у политикового (где перехват и включен).

Если покопать, то узнаём, что DNS-прокси отключить нельзя из-за внутренних процессов в прошивке. При использовании политик работает безусловный перехват днс, тут это обсуждали.

opkg dns-override просто освобождает 53 порт, не отключает встроенный DNS целиком. При использовании профилей/политик DNS трафик, перехваченный встроенным в прошивку прокси, не достаётся дефолтному DNS, и такое поведение довольно тупо.

@AltGrF13
Copy link
Contributor

AltGrF13 commented Mar 30, 2024

Есть такое костыльное решение (скрипт, который постоянно прибивает эти правила от Кинетика), нужно проверить. Но из-за этого какие-то ограничения политик могут перестать работать.

@qzeleza
Copy link
Owner

qzeleza commented Mar 31, 2024

Благодарю Вас за столь подробные исследования вопроса.
Просто отлично.

@AltGrF13
Copy link
Contributor

AltGrF13 commented Apr 15, 2024

Как мне кажется, вопрос можно закрывать.

  1. Открытыми удобнее держать задачи, требующие вмешательства.
  2. Здесь решение весьма корявое, вмешивающееся в работу прошивки; внедрение этого для всех не выглядит хорошим решением.
  3. На форуме админами несколько раз велись разговоры об отключаемом DNS-прокси (собственно, команды dns-proxy no intercept enable и dns-proxy filter profile Policy0 no intercept enable растут оттуда же), но воз и ныне там (для политик не отключаемы). В общем, скорее, вопрос к Keenetic.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working invalid This doesn't seem right
Projects
None yet
Development

No branches or pull requests

3 participants