Repository navigation
Проблема на Keenetic Giga 1011 #276
Replies: 1 comment 2 replies
|
Привет! У меня был в точности такой же случай — Netcraze Ultra NC-1812 (он же Keenetic Ultra), Entware. Тот же симптом: трафик самого роутера обрабатывается стабильно, транзитный трафик клиентов из локальной сети — почти никогда, домен в логе не появляется. Копнули код и нашли баг. Прошивка Keenetic помечает пакеты клиентов своей меткой ещё до цепочек b4: А в b4 проверка «это служебное соединение b4, не обрабатывать» сделана тестом одного бита (0x200000) от метки пакета. Метка 0xffffaaa этот бит содержит (0xffffaaa & 0x200000 != 0), поэтому все клиентские пакеты молча проходят мимо обработки — Подготовил PR с исправлением (точное сравнение метки по маске вместо теста одного бита): #422 Пока PR не принят, можно попробовать обойтись руками — снять бит 0x200000 с клиентских пакетов после того, как прошивка их пометила, и до цепочек b4: Правило должно идти в PREROUTING после переходов в цепочки |
Uh oh!
There was an error while loading. Please reload this page.
Использую B4 на роутере Keenetic Giga 1011 с Entware.
Возникла проблема с обработкой трафика LAN-клиентов: B4 крайне нестабильно определяет соединения/домены клиентов и, соответственно, не применяет к ним настроенные сеты и стратегии.
При этом трафик, созданный непосредственно на самом роутере, обрабатывается B4 стабильно и корректно.
Для тестирования использую
rutracker.org, добавленный в отдельный сет с рабочей стратегией обхода.С LAN-клиентов (Windows ПК и Android-телефон):
в большинстве случаев сайт не открывается, соединение завершается RST;
в панели B4 соответствующее соединение часто вообще не появляется как соединение с определённым доменом;
в основном логе B4 видны TCP-пакеты вида:
TCP 192.168.100.2:xxxxx → x.x.x.x:443 mac=...но имя домена и
tls=...отсутствуют;иногда B4 случайным образом всё же определяет соединение/домен — в этом случае стратегия сразу срабатывает и сайт нормально открывается;
на Android вероятность успешного срабатывания немного выше в режиме инкогнито, но результат нестабильный;
если сайт успешно открылся, он может нормально работать в текущей вкладке до её закрытия;
после создания нового соединения проблема возникает снова;
иногда сразу после перезапуска сервиса B4 несколько соединений определяются успешно, после чего проблема возвращается.
Для сравнения, когда B4 успешно распознаёт TLS-соединение, в логе появляются нормальные записи вида:
TCP ... → ...:443 servers.plex.tv tls=1.3 mac=...То есть TLS/SNI-парсер в принципе работает, но для транзитного трафика LAN-клиентов срабатывает крайне нестабильно.
Важное наблюдение: локальный трафик роутера работает
Если выполнить, например:
curl https://rutracker.orgнепосредственно на самом Keenetic, всё работает стабильно.
B4:
Таким образом, наблюдается явная разница:
локальный OUTPUT-трафик роутера → работает стабильнотранзитный LAN → WAN трафик → домены/SNI определяются крайне редкоЧто уже проверено
Автоматически создаваемые правила B4 присутствуют, счётчики пакетов активно увеличиваются.
Используются очереди:
NFQUEUE 100:103Пакеты TCP/443 действительно попадают в NFQUEUE.
Уменьшение количества рабочих потоков до 1 проблему не решает. Поведение остаётся тем же.
Куда мне копать? Имеет ли место быть какая-либо известная проблема с обработкой транзитного (forwarded) трафика на Keenetic/Entware? Самостоятельно решить проблему пока не смог, откатился на zapret2.
All reactions