Open kilia07 opened 1 year ago
Доброго дня, Спасибо, по моему мы на страницах форума уже обсуждали данный функционал? В любом случае, данный функционал постараюсь реализовать уже в КВАС 2.0 после реализации WUI для него.
Добрый день! Да я писал, но подумал продублирую тут, тут вроде как все структурированней=)
Небольшое исследование через iptables-save &> /opt/tmp/iptables.txt
до и после указанных действий при основном соединении SS для 192.168.1.32
:_NDM_UPNP_REDIRECT_0 - [0:0]
-A PREROUTING -j _NDM_UPNP_REDIRECT_0
:_NDM_UPNP_FORWARD_0 - [0:0]
-A _NDM_FORWARD -j _NDM_UPNP_FORWARD_0
-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
-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
-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
Если в 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, и такое поведение довольно тупо.
Есть такое костыльное решение (скрипт, который постоянно прибивает эти правила от Кинетика), нужно проверить. Но из-за этого какие-то ограничения политик могут перестать работать.
Благодарю Вас за столь подробные исследования вопроса. Просто отлично.
Как мне кажется, вопрос можно закрывать.
dns-proxy no intercept enable
и dns-proxy filter profile Policy0 no intercept enable
растут оттуда же), но воз и ныне там (для политик не отключаемы). В общем, скорее, вопрос к Keenetic.
Описание проблемы. Если создать профиль доступа в интернет на страничке http://192.168.1.1/controlPanel/policies и в созданный профиль добавить клиента wifi, то сайты из списка разблокировки kvas перестают открываться. При этом сайты не из списка разблокировки открываются как надо.
Мои шаги, приведшие к ошибке/проблеме.
Ожидания о поведении программы. Хотелось бы чтобы KVAS обрабатывал другие профили доступа в интернет также как и профиль по умолчанию
Информация о системе с которой происходит тестирование пакета на роутере (пожалуйста, заполните следующую информацию):
Информация о роутере (пожалуйста, заполните следующую информацию):
Дополнительные пояснения. Проверял поведение KVAS при создании профиля на прошивке 3.9, результат тот же. В прошивке 3.9 на той же странице профилей появилась возможность создавать профиль с интеллектуальной балансировкой трафика при использовании нескольких интернет-подключений. В моем случае по итогу мне наиболее критично использовать KVAS с подобным профилем, так как у меня есть несколько интернет-подключений (проводно+модем+соседский wifi).