-
Notifications
You must be signed in to change notification settings - Fork 63
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
Padavan support #163
Padavan support #163
Conversation
Спасибо за PR! Несколько замечаний по оформлению: в README.md всё написать на английском, сделать ссылку на Padavan.md с меткой [rus]. В Padavan.md оставить ссылку на этот пул реквест для обсуждения. Дальше по содержанию: есть ли реальный смысл отдельно кросскомпилироваться? Что даёт ваш пач? Что такого особенного в ядре падавана, что отличается от других роутерах на достаточно старых ядрах, на которых всё работает? Я не вникал в точное поведение этих строк, но логика подсказывает, что UNBIND перед BIND это не корректно. И вот я крайне не уверен, что это вообще имеет смысл. К тому же, в ядре v3.0.101 у нас спокойно себе существует NFQNL_CFG_CMD_BIND, в то время, как PF_(UN)BIND вообще игнорируются https://elixir.bootlin.com/linux/v3.0.101/source/net/netfilter/nfnetlink_queue.c#L726 Также я крайне не поддерживаю идею оставить ссылку на бинарник из другого репозитория. Всё должно компилироваться на месте, прозрачно, через GH Actions. Вообще, мне кажется, что существующие бинарники должны спокойно работать у вас. А чтобы не писать правила руками, есть версия для entware. Тогда единственный вопрос, который остаётся - где достать модули. И раз мы убрали все предыдущие пункты, можно просто написать об этом в главном README (на английском). И тут опять ссылка на ваш профиль с скомпилированными модулями только для вашего ядра и для вашей архитектуры. У других эти модули могут в лучшем случае не запуститься, в худшем - убить ядро. Я бы хотел увидеть ссылки на источники, где взять эти модули от производителя для конкретного устройства. Вот на кинетиках они из прошивки ставятся, насколько я знаю. А тут как? UPD: насчёт NFQNL_CFG_CMD_PF_BIND у падавана такая же ситуация: https://gitlab.com/hadzhioglu/padavan-ng/-/blob/master/trunk/linux-3.4.x/net/netfilter/nfnetlink_queue.c?ref_type=heads#L810 |
Можно в README.md на английском Кросскомпилировать нет смысла. Я оформил в виде патча, но надо просто включить код как есть. Тогда бинарь mipsel-static должен заработать и на падаване и на прочих. На старых ядрах скорее всего не работает, просто никто не проверял. Это нужен древний Attitude Adjustment 12.09 и я на него даже не смог пакет nfqueue найти. Я оставил ссылку на бинарник, чтобы можно было запустить все прямо сейчас. Когда будет рабочий бинарь в Assets, то ссылку уберем. У падавана одна архитектура и одно ядро. Модули собираются с прошивкой, но это как-то накладно, а больше их взять негде. UPD Такая же, но может они 15 строками выше задействуются |
Это мой на тп линке) только там ядро v4. Я посмотрю еще в сторону этих pfов на старых ядрах. В целом, можно будет включить, если они работе не мешают. Всё равно после 3.8 точно игнорируются. |
Да, я попробовал запустить на ядре v3.0 и оно действительно работает только с этим патчем. Также у меня заработал ipv6 если продублировать этот патч, поменяв PF_INET на PF_INET6. Сейчас я еще потестирую и, скорее всего, включим в youtubeUnblock.c |
The behaviour of nfnetlink_queue is changed since then but old kernels require BIND/UNBIND_PF commands. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0360ae412d09bc6f4864c801effcb20bfd84520e Co-Authored-by: renr4 <renr4@users.noreply.github.com>
Закоммитил вам в репозиторий изменения в youtubeUnblock.c Остались правки по readme (см. выше). Также уберите ссылки на сторонние репозитории. Еще лучше убрать упоминание о правиле фаервола без connbytes. Люди могут слепо поставить его, а потом жаловаться, что анблок мешает скорости. Да и лишний раз грузить роутеры не к чему. С модулями еще подумаем что делать |
Надеюсь теперь будет работать и на ядре 2.6.36 на ASUS RT-AC68U! |
Попробуйте отсюда установить |
Начиная с 1.0rc2 перестало запускаться на старом entware arm-2.6 😞 |
Хм, интересно. Возьмите static версию вместо entware и попробуйте запустить вручную |
Static версия падает с illegal instruction:
Позже попробую собрать из исходников через ASUS toolchain. |
Какой именно бинарник ставите? |
strace для youtubeUnblock-static-armv7.zip:
cat /proc/cpuinfo
|
Вспомнил, что у ASUS RT-AC68U архитектура ARM7 без hardware float (soft float) и подходят бинарники, собранные для ARM5. |
вроде бы собрал для armv7sf:
|
Теперь не падает, но появилась ошибка обработки очереди...
|
Вам надо включить модуль ядра.
Если не включается, поищите его в /lib/modules или где-то у производителя. |
Я уже пересобрал прошивку и включил этот параметр в ядро (
Видимо для старого ядра 2.6.36 еще какие-то доработки нужны. |
Я не вижу проблем со старым ядром. На ubuntu 10.04 (2.6.32-38-generic) всё заработало. У вас всё-таки не работает, скорее всего, из-за модулей. Может, ему еще просто надо включить nfnetlink помимо nfnetlink_queue? И лучше не компильте ядро с модулями, а пока что просто собирайте их отдельно. UPD: |
Огромное спасибо! |
Супер! Тогда поддержка есть, скорее всего, до 2.6.25 ядра. До него нет опции SO_MARK у равсокета, и невозможно маркировать пакеты от анблока традиционным путём |
Ещё раз огромное спасибо за замечательную программу и активную помощь! |
Открыл у падавана ишью. Может быть, добавят внутрь ядра модули по дефолту. https://gitlab.com/hadzhioglu/padavan-ng/-/issues/37 |
В этом нет смысла. Прошивки собирают сами пользователи под свои железки и выкладывают на форуме 4pda и репозиторий не один, их много и нет единого хранилища готовых сборок как в опенврт и не будет. Идея была в том, чтобы запустить YU на любой уже прошитой железке без компиляций и прочего. Есть большая разница между выполнением 10 команд в веб-интерфейсе и самостоятельной сборкой прошивки с нуля, никто просто не будет этим заморачиваться. Почему не использовать опенврт? Потому что он тормозной из-за открытых драйверов и ест слишком много ресурсов. Короткая команда нужна чтобы определить, поддерживает штатный iptables --num-queue параметр или нет, но можно добавить уточнение Можно перенести архив с модулями сюда в каталог Padavan и положить инструкцию рядом. Я думал еще написать скрипт для установки и обновления YU одной командой. Теоретически можно также написать action для сборки модулей и запускать его вручную, но я не силен в этом. |
Да, мэйнтейнер сказал, что не будет это добавлять потому что не всем это нужно. Но он добавил пример в padavan builder workflow. https://github.com/hadzhioglu/padavan-builder-workflow/blob/TEST/build.config#L163 Я бы предпочёл документацию по сборке модулей из gh actions, чем выкладывать бинари. Также юзерспейс айпитэйблс не надо заменять, он и так с расширениями идёт, судя по структуре в прокте. Вообще, нам не обязательно пересобирать прошивку целиком. Мы можем собрать только модули: |
3aa09bd
to
235bf82
Compare
Разобрался почему на ядре 3.4 не работало. Можно потом включить патч в исходный код и тогда ...mipsel-static.tar.gz будет работать, но все-равно инструкция нужна, потому-что там свои нюансы. Но писать на английском просто нет смысла.