Обезживает системы глубокой проверки пакетов (DPI), которые опираются на SNI. Пакет предназначен только для Linux. Он также полностью совместим с маршрутизаторами, работающими OpenWRT.
Программа была в первую очередь разработана для обхода отключений на YouTube в России.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
Программа распространяется в двух версиях:
Программа совместима с маршрутизаторами, основанными на OpenWRT, Entware (Keenetic/Asus) и хост -машинах. Программа предлагает двоичные файлы с помощью действий GitHub. Двоичные файлы также доступны через выпуск GitHub. Используйте последнюю предварительную релиз для самой современной сборки. Проверьте действия GitHub, если вы хотите увидеть все двоичные файлы, скомпилированные. Вы должны знать аркцептуру вашего оборудования для использования двоичных файлов. На OpenWRT вы можете проверить его с помощью командной grep ARCH /etc/openwrt_release
.
На OpenWRT и Entware установите программу с OPKG. Если вы получили ошибку файловой системы только для чтения, вы можете распаковать двоичный вручную или указать PATH OPKG opkg -o <destdir>
.
Для Windows используйте Goodbyedpi от valdikss (вы можете найти, как использовать его для YouTube здесь), то же поведение также реализуется в пакете Zapret для Linux.
Когда вы получите пакет выпуска, вы должны установить его. Перейдите на свой интерфейс маршрутизатора, в System-> программное обеспечение , выполните списки обновлений и установите YouTubeUnblock через кнопку install_package . Затем вам следует перейти в меню системы и перезагрузить брандмауэр (вы также можете сделать это в меню Services-> YouTubeUnblock ).
Чтобы он работал, вы должны зарегистрировать правило iptables и установить необходимые модули ядра. Список модулей зависит от версии OpenWRT и какого брандмауэра вы используете (iptables или NFTables). Для большинства современных версий OpenWRT (V23.x, V22.x) вы должны использовать правила NFTABLES, для более старых это зависит, но обычно iptables.
Общая зависимость
kmod-nfnetlink-queue
Но это обеспечивается как зависимость для других пакетов брандмауэра.
Итак, если вы находитесь на iptables, вы должны установить:
kmod-ipt-nfqueue
iptables-mod-nfqueue
kmod-ipt-conntrack-extra
iptables-mod-conntrack-extra
И, конечно, должно быть доступно приложение пользовательского пространства iptables.
На nftables зависимости:
kmod-nft-queue
kmod-nf-conntrack
Следующим шагом является добавление необходимых правил брандмауэра.
Для NFTABLES на RopeWRT правила поступают в сторону и хранятся в /usr/share/nftables.d/ruleset-post/537-youtubeUnblock.nft
. Все, что вам нужно, это установить требования и do /etc/init.d/firewall reload
. Если нет, перейдите в конфигурацию брандмауэра.
Теперь мы переходим к конфигурации. Для OpenWRT здесь находится конфигурация через UCI и LUCI доступен (CLI и GUI соответственно).
Для Luci gui gui , как веб-интерфейс маршрутизатора, вы должны установить пакет Luci-appyubeUnblock, как вы это сделали с обычным пакетом YouTubeUnblock. Обратите внимание, что списки официальных каналов OPKG должны быть загружены ( сделайте это с опцией списков обновлений ).
Если у вас есть * pkg_hash_check_unresolved: cannot find dependency luci-lua-runtime for luci-app-youtubeUnblock
, вы используете Old OpenWrt. Установите этот фиктивный пакет. Проверьте этот комментарий для получения более подробной информации.
Luci Configuration Lives в Services-> Раздел YouTubeUnblock . Это самооценка, с описанием для каждого флага. Обратите внимание, что после нажатия кнопки Save & Apply
настройка применяется автоматически, и служба перезапускается.
Конфигурация UCI доступна в файле/etc/config/youtubeunblock, в разделе youtubeUnblock.youtubeUnblock
. Конфигурация выполняется с флагами. Обратите внимание, что имена флагов не одинаковы: вы должны заменить -
с _
, вы не должны использовать Leader --
для флага. Также вы будете включать флаги (без параметров) с 1
.
Например, чтобы включить журналы трассировки, которые вы должны сделать
uci set youtubeUnblock.youtubeUnblock.trace=1
Вы можете проверить журналы в режиме CLI с logread -l 200 | grep youtubeUnblock
Command.
Для UCI, чтобы сохранить конфигурации, вы должны выполнить uci commit
, а затем reload_config
для перезагрузки YouTubeUnblock
В режиме CLI вы будете использовать YouTubeUnblock в качестве обычной службы init.d: например, вы можете включить его с помощью /etc/init.d/youtubeUnblock enable
.
Для Entware на Keenetic здесь находится Руководство по установке (русский язык).
Установите двоичный файл с opkg install youtubeUnblock-*.ipk
. После установки будут доступны бинарный в/opt/bin и сценарий init в /пт/etc/init.d/s51youtubeunblock. Чтобы запустить YouTubeUnblock, просто запустите /opt/etc/init.d/S51youtubeUnblock start
Обратите внимание, что вы должны подавать целевое ядро с помощью модуля ядра nfnetlink_queue. Модуль может быть отключен или даже не присутствовать. Entware S51YoutubeUnblock попытается вставить KMODS в любом случае, но если они не предоставляются программным обеспечением, вы должны установить их вручную. AFAIK на Keenetics здесь представляет собой репозиторий с модулями, скомпилированными клиентом. Вы можете найти их где -то в веб -интерфейсе вашего устройства. На других маршрутизаторах вы можете провести более глубокое исследование в этом случае и найти свои KMOD. Если вы ничего не можете найти, вы можете попросить клиента о кодах GPL ядра Linux (и может быть даже OpenWRT) и компилировать KMOD вручную.
Вы должны вставить модуль с (этот шаг может быть опущен на Entware и OpenWRT):
modprobe nfnetlink_queue
На локальном хосте обязательно перейти к цепочке вывода в следующих наборах правил брандмауэра.
Скопируйте youtubeUnblock.service
to /usr/lib/systemd/system
(вы должны изменить путь внутри файла в позицию программы, например, /usr/bin/youtubeUnblock
, также вы можете удалить добавление правил iptables defaul управлять этим вручную). И запустить systemctl start youtubeUnblock
.
На nftables вы должны установить следующие правила nftables:
nft add chain inet fw4 youtubeUnblock ' { type filter hook postrouting priority mangle - 1; policy accept; } '
nft add rule inet fw4 youtubeUnblock ' meta l4proto { tcp, udp } th dport 443 ct original packets < 20 counter queue num 537 bypass '
nft insert rule inet fw4 output ' mark and 0x8000 == 0x8000 counter accept '
На iptables вы должны поставить следующие правила iptables:
iptables -t mangle -N YOUTUBEUNBLOCK
iptables -t mangle -A YOUTUBEUNBLOCK -p tcp --dport 443 -m connbytes --connbytes-dir original --connbytes-mode packets --connbytes 0:19 -j NFQUEUE --queue-num 537 --queue-bypass
iptables -t mangle -A YOUTUBEUNBLOCK -p udp --dport 443 -m connbytes --connbytes-dir original --connbytes-mode packets --connbytes 0:19 -j NFQUEUE --queue-num 537 --queue-bypass
iptables -t mangle -A POSTROUTING -j YOUTUBEUNBLOCK
iptables -I OUTPUT -m mark --mark 32768/32768 -j ACCEPT
Для IPv6 на iptables вам нужно дублировать правила выше для IP6Tables:
ip6tables -t mangle -N YOUTUBEUNBLOCK
ip6tables -t mangle -A YOUTUBEUNBLOCK -p tcp --dport 443 -m connbytes --connbytes-dir original --connbytes-mode packets --connbytes 0:19 -j NFQUEUE --queue-num 537 --queue-bypass
ip6tables -t mangle -A YOUTUBEUNBLOCK -p udp --dport 443 -m connbytes --connbytes-dir original --connbytes-mode packets --connbytes 0:19 -j NFQUEUE --queue-num 537 --queue-bypass
ip6tables -t mangle -A POSTROUTING -j YOUTUBEUNBLOCK
ip6tables -I OUTPUT -m mark --mark 32768/32768 -j ACCEPT
Обратите внимание, что выше правила используйте Conntrack для маршрутизации только первых 20 пакетов из соединения с YouTubeUnblock . Если у вас есть некоторые проблемы с этим, например, YouTubeUnblock не обнаруживает YouTube, попробуйте удалить Connbytes из правил. Но это маловероятное поведение, и вы, вероятно, должны проверить свой набор правил.
Вы можете использовать --queue-balance
с несколькими экземплярами YouTubeUnblock для производительности. Такое поведение поддерживается с помощью многопоточного чтения. Просто передайте --threads=n
, где n обозначает количество потоков, которые вы хотите включить. N nefaula по умолчанию к 1 . Максимальные потоки по умолчанию по умолчанию до 16 , но могут быть изменены программно. Обратите внимание, что если вы собираетесь увеличить его, вот на 100% вероятность, что вы не в неправильном пути.
Также DNS над HTTPS предпочтительнее для дополнительной анонимности.
Вот команда, чтобы проверить, работает ли она или нет:
curl -o/dev/null -k --connect-to ::google.com -k -L -H Host: mirror.gcr.io https://test.googlevideo.com/v2/cimg/android/blobs/sha256:6fd8bdac3da660bde7bd0b6f2b6a46e1b686afb74b9a4614def32532b73f5eaa
Он должен вернуть низкую скорость без YouTubeUnblock и быстрее с ним. С YouTubeUnblock скорость должна быть такой же, как и следующая команда:
curl -o/dev/null -k --connect-to ::google.com -k -L -H Host: mirror.gcr.io https://mirror.gcr.io/v2/cimg/android/blobs/sha256:6fd8bdac3da660bde7bd0b6f2b6a46e1b686afb74b9a4614def32532b73f5eaa
Поместите флаги в двоичный , а не сценарий init. Если вы находитесь на OpenWRT, вам следует поместить флаги в скрипт: Open /etc/init.d/youtubeUnblock
с любым текстовым редактором, например, Vi или Nano и поместите свои флаги после procd_set_param command /usr/bin/youtubeUnblock
.
Доступные флаги:
--sni-domains=<comma separated domain list>|all
список доменов, с которыми вы хотите обрабатывать SNI. Используйте эту строку, если вы хотите изменить список доменов по умолчанию. По умолчанию googlevideo.com,ggpht.com,ytimg.com,youtube.com,play.google.com,youtu.be,googleapis.com,googleusercontent.com,gstatic.com,l.google.com
. Вы можете пройти все , если вы хотите, чтобы каждый клиент Hhello был обработан. Вы можете исключить некоторые домены с помощью флага --exclude-domains
.
--exclude-domains=<comma separated domain list>
Список доменов, которые должны быть исключены из Targetting.
--queue-num=<number of netfilter queue>
Количество очереди netfilter youtubeunblock будет связано. По умолчанию до 537 .
--fake-sni={0|1}
Этот флаг позволяет фальшиво-sni, который заставляет YouTubeUnblock отправлять как минимум три пакета вместо одного с TLS ClientHello : Fake ClientHello , 1-я часть оригинального ClientHello , 2-й части оригинального ClientHello . Этот флаг может быть связан с какой -то операцией, не разрешенной сообщениями об ошибках, поэтому перед открытием проблемы см. Устранение неполадок для Eperms. По умолчанию 1 .
--fake-sni-seq-len=<length>
Этот флаг указывает YouTubeUnblock , чтобы построить сложную конструкцию поддельных клиентских пакетов Hello. Длина определяет, сколько подделок будет отправлено. По умолчанию 1 .
--fake-sni-type={default|custom|random}
Этот флаг указывает, какой тип фальшивого сообщения следует использовать для поддельных пакетов. Для random
, сообщение о случайной длине и со случайной полезной нагрузкой будет отправлено. Для default
используется полезная нагрузка по умолчанию (sni = www.google.com). И для custom
опции используется полезная нагрузка от раздела --fake-custom-payload
. По умолчанию default
.
--fake-custom-payload=<payload>
Полезно с --fake-sni-type=custom
. Вы должны указать полезную нагрузку для поддельного сообщения вручную. Используйте Hex 0x03
0x00
-Fake 0x04
--fake-custom-payload=0001020304
0x01
0x02
--faking-strategy={randseq|ttl|tcp_check|pastseq|md5sum}
Этот флаг определяет стратегию фальшивых пакетов. Несомненно. По умолчанию в randseq
randseq
указывает, что будет установлена случайная последовательность/ancenceledgemend. Эта опция может быть обработана провайдером, который использует Conntrack с включенным правилом брандмауэра штата Conntrack .ttl
указывает, что пакет будет недействительным после --faking-ttl=n
HOPS. ttl
лучше, но может вызвать проблемы, если неконфигурировано.pastseq
подобен randseq
, но номер последовательности не является случайным, но ссылается на пакет, отправленный в прошлом (до текущего).tcp_check
будет недействительным фальшивый пакет с недействительной контрольной суммой. Может быть обработан и сброшен некоторыми поставщиками/pspus.md5sum
будет аннулировать фальшивый пакет с недействительным TCP MD5SUM. MD5SUM - это опция TCP, которая обрабатывается сервером назначения, но может быть пропущен TSPU. --faking-ttl=<ttl>
настраивает время для жизни (TTL) поддельных сообщений SNI. TTL указывается так, что пакет пройдет через систему DPI и захвачен им, но не будет достигать сервера назначения. По умолчанию 8 .
--fake-seq-offset
Tune Tumpset от исходного номера последовательности для поддельных пакетов. Используется стратегией подделки Randseq. По умолчанию до 10000. Если будет установлено 0, будет установлено число случайных последовательности.
--frag={tcp,ip,none}
Указывает стратегию фрагментации для пакета. TCP используется по умолчанию. Фрагментация IP может быть заблокирована системой DPI. Никто не указывает фрагментацию. Вероятно, это не сработает, но, возможно, будет работать для некоторых поддельных стратегий SNI.
--frag-sni-reverse={0|1}
Определяет YouTubeUnblock для отправки фрагментов ClientHello в обратном порядке. По умолчанию 1 .
--frag-sni-faked={0|1}
Определяет YouTubeUnblock для отправки поддельных пакетов возле ClientHello (заполняет полезную нагрузку с помощью нулей). По умолчанию к 0 .
--frag-middle-sni={0|1}
С этими параметрами YouTubeUnblock разделяет пакет в середине данных SNI. По умолчанию 1.
--frag-sni-pos=<pos>
с этой опцией YoutubeUnblock разделяет пакет на положении POS. По умолчанию 1.
--quic-drop
Drop все пакеты Quic, которые переходят на YouTubeUnblock. Не повлияет на другие пакеты UDP. Подходит для некоторых телевизоров. Обратите внимание, что для этой опции вы должны также добавить Proxy UDP на YouTubeUnblock в брандмауэре. connbytes
также могут использоваться с UDP.
--fk-winsize=<winsize>
Указывает размер окна для фрагментированного пакета TCP. Применимо, если вы хотите, чтобы ответ был фрагментирован. Может инициализация подключения замедления.
--synfake={1|0}
Если 1, син-полевая нагрузка будет отправлена до каждого запроса. Идея взята из Syndata из проекта Zapret. Син -нагрузка обычно отбрасывается конечной точкой, но может обрабатываться TSPU. Эта опция отправляет обычную подделку в этой полезной нагрузке. Обратите внимание, что вариант работает для всех сайтов, поэтому-SNI-Domains ничего не изменит.
--synfake-len=<len>
поддельный пакет, отправленный в синфейке, может быть слишком большим. Если вы испытываете проблемы, понизите Synfake-Len. где Лен обозначает, сколько байтов следует отправлять в качестве Syndata. Пропустите 0, если вы хотите отправить весь поддельный пакет. По умолчанию к 0
--sni-detection={parse|brute}
Указывает, как обнаружить SNI. Parse обычно обнаруживает его, анализируя клиент Hello Message. Брут пройдет через все сообщение и проверит возможность возникновения SNI. Обратите внимание, что когда опция --sni-domains
не все, что не все, будет O (NM), где n означает длину сообщения, а M-количество доменов. По умолчанию в Parse.
--seg2delay=<delay>
Этот флаг заставляет YouTubeUnblock немного подождать, прежде чем отправить вторую часть разделенного пакета.
--silent
отключает режим словеса.
--trace
многословия для целей отладки.
--no-gso
отключает поддержку для Google Chrome Fat Packets, которые используют GSO. Эта функция сейчас хорошо протестирована, поэтому этот флаг, вероятно, ничего не исправят.
--no-ipv6
отключает поддержку IPv6. Может быть полезным, если вы не хотите открыть разъем IPv6.
--threads=<threads number>
Указывает количество потоков, которые вы хотите запустить для своей программы. Это по умолчанию до 1 и не должно быть отредактировано для нормального использования. Но если вы действительно хотите несколько экземпляров очереди на YouTubeUnblock, обратите внимание, что вы должны изменить-Queue-Num на баланс-Queeue. Например, с 4 потоками используйте --queue-balance 537:540
на iptables и queue num 537-540
на nftables.
--packet-mark=<mark>
Используйте эту опцию, если YouTubeUnblock Conflick с другими системами полагаются на марку пакетов. Обратите внимание, что вы можете изменить правило принять правило для iptables, чтобы следовать отмечке.
--fbegin
и --fend
FLAGS: YouTubeUnblock поддерживает несколько наборов стратегий для конкретных фильтров. Вы можете захотеть инициировать новый набор после по умолчанию, например: --sni-domains=googlevideo.com --faking-strategy=md5sum --fbegin --sni-domains=youtube.com --faking-strategy=tcp_check --fend --fbegin --sni-domains=l.google.com --faking-strategy=pastseq --fend
. Обратите внимание, что приоритет этих наборов уходит задом наперед: последнее -первое, по умолчанию (тот, который не начинается с - -fbegin) последним. Если вы запустите новый раздел, настройки по умолчанию реализованы так же, как YouTubeUnblock без каких -либо параметров. Обратите внимание, что конфигурация выше является просто примером и не будет работать для вас.
Проверьте эту проблему для полезных конфигураций.
Если у вас есть проблемы с некоторыми сайтами, и вы уверены, что они заблокированы SNI (например, YouTube), использование может играть с флагами и их комбинациями. Сначала рекомендуется попробовать --faking-strategy
и --frag-sni-faked=1
. Если у вас есть проблемы с прокси -сайтами, вы можете играть со значениями флагов. Например, для кого-то --faking-strategy=ttl
работает. Вы должны указать правильный --fake-sni-ttl=<ttl value>
, где TTL-это количество хмеля между вами и DPI.
Если вы находитесь на хроме, вам, возможно, придется отключить Kyber (функция, которая делает TLS ClientHello очень большой). У меня есть проблема с этим на маршрутизаторе, поэтому избежать возможных ошибок, поэтому лучше отключить его: в chrome://flags
Search для Kyber и переключить его в состояние отключения. В качестве альтернативы вы можете установить --sni-detection=brute
и, вероятно, настроить флаг --sni-domains
.
Если ваш браузер использует QUIC, он может работать неправильно. Отключите его в Chrome в chrome://flags
и в Firefox network.http.http{2,3}.enable(d)
в опции about:config
.
Похоже, что некоторые TSPU начали блокировать ProningSeq Packets, поэтому вам следует играть с фальшивыми стратегиями. Я лично рекомендую начать со стратегии фальсификации md5sum
.
Телевизии - самая большая головная боль.
В этом выпуске проблема была решена. А теперь YouTubeUnblock должен работать с флагами по умолчанию. Если нет, поиграйте с фальшивыми стратегиями и другими флагами. Также вам может придется отключить QUIC. Для этого вы можете использовать-флаг --quic-drop
с надлежащей конфигурацией брандмауэра (проверьте описание флага). Обратите внимание, что этот флаг не отключает gquic, и некоторые телевизоры могут передаваться на него. Чтобы отключить gquic, вам нужно будет заблокировать весь порт 443 для UDP в конфигурации брандмауэра:
Для NFTABLES
nft insert rule inet fw4 forward ip saddr 192.168.. udp dport 443 counter drop
Для iptables
iptables -I OUTPUT --src 192.168.. -p udp --dport 443 -j DROP
Где вы должны заменить 192.168 .. на IP вашего телевизора.
Eperm может возникнуть во многих местах, но, как правило, вот два: mnl_cb_run и при отправке пакета через Rawsocket (raw_frags_send и отправьте поддельный SNI).
Операция MNL_CB_RUN Не разрешена, указывает на то, что другой экземпляр YouTubeUnblock работает на указанной очереди.
Работа с сырьями не допускается, указывает на то, что пакет отбрасывается правилами Nefilter. На самом деле это намек от ядра, что происходит что -то не так, и мы должны проверить правила брандмауэра. Прежде чем погрузиться в проблему, давайте убрать ее, как отправляются искаженные пакеты. Queue Nefilter дает нам возможность управлять пакетом на мухе, но это не подходит для этой программы, потому что нам нужно разделить пакет, по крайней мере, на два независимых пакета. Таким образом, мы используем сокеты Linux Raw, которые позволяют нам отправлять любой пакет IPv4. Пакет выходит из выходной цепи, даже когда NFQUEUE установлен на вперед (подходит для OpenWRT). Таким образом, нам нужно сбежать здесь.
iptables -I OUTPUT -m mark --mark 32768/32768 -j ACCEPT
или nft insert rule inet fw4 output mark and 0x8000 == 0x8000 counter accept
. Перед компиляцией убедитесь, что gcc
, make
, autoconf
, automake
, pkg-config
и libtool
установлены. Для Fedora glibc-static
также должен быть установлен.
Скомпилируйте с make
. Установите с помощью make install
. Пакет включает в себя libnetfilter_queue
, libnfnetlink
и libmnl
в качестве статических зависимостей. Пакет требует, чтобы linux-headers
и ядра были построены с поддержкой NetFilter Nfqueue.
Пакет также совместим с маршрутизаторами. Маршрутизатор должен работать с помощью системы на основе Linux, такой как OpenWRT.
Вы можете построить под OpenWRT с двумя вариантами: во -первых, через SDK, который является предпочтительным способом, а во -вторых, кросс -компиляция вручную с OpenWRT Toolchain.
OpenWRT предоставляет SDK высокого уровня для сборки пакета.
Первым шагом является загрузка или компиляция OpenWRT SDK для вашей конкретной платформы. SDK может быть составлен в соответствии с этим учебником.
Помимо необработанного кода SDK SDK, OpenWRT также предлагает предварительные SDK для вашего маршрутизатора. Вы можете найти его на странице маршрутизатора. Например, у меня есть маршрутизатор на основе Ramips/Mt76x8, поэтому для меня SDK находится на https://downloads.openwrt.org/releases/23.05.3/targets/ramips/mt76x8/ и называется openwrt-sdk-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64
.
Вам нужно будет установить требования SDK в вашу систему, если у вас возникнут проблемы, используйте Docker Ubuntu: 24.04 Image. Убедитесь, что он не пользователь, не являющийся корнями, так как некоторые макиязы проваливаются с ней. Далее, не задействуйте SDK и CD в него.
Делать
echo " src-git youtubeUnblock https://github.com/Waujito/youtubeUnblock.git;openwrt " >> feeds.conf
./scripts/feeds update youtubeUnblock
./scripts/feeds install -a -p youtubeUnblock
make package/youtubeUnblock/compile
Теперь пакет построен, и вы можете импортировать его в маршрутизатор. Найдите его в bin/packages/<target>/youtubeUnblock/youtubeUnblock-<version>.ipk
.
Предварительный инструмент, расположенный недалеко от SDK. Например, он называется openwrt-toolchain-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64.tar.xz
. Когда вы загружаете набор инструментов, где -нибудь не затрагивайте его. Теперь мы готовы к компиляции. Мой Cross GCC попросил меня создать режиссер для постановки и передать его в качестве переменной среды. Кроме того, вы должны заметить пакеты Toolsuite и заменить мою команду Make на вашу.
STAGING_DIR=temp make CC=/usr/bin/mipsel-openwrt-linux-gcc LD=/usr/bin/mipsel-openwrt-linux-ld AR=/usr/bin/mipsel-openwrt-linux-ar OBJDUMP=/usr/bin/mipsel-openwrt-linux-objdump NM=/usr/bin/mipsel-openwrt-linux-nm STRIP=/usr/bin/mipsel-openwrt-linux-strip CROSS_COMPILE_PLATFORM=mipsel-buildroot-linux-gnu
Взгляните на CROSS_COMPILE_PLATFORM
. Это требуется для AutoTools, но я думаю, что в этом нет необходимости. В любом случае я поместил здесь mipsel-buildroot-linux-gnu
. Для вашего названия модели маршрутизатора, возможно, будет полезно, что руководство по кросс-компиляции Automake.
Когда компиляция будет выполнена, двоичный файл будет в каталоге сборки. Скопируйте его на свой роутер. Обратите внимание, что доступ к SSH, вероятно, потребуется для продолжения. SSHF не работают над моей моделью, поэтому я вводил приложение на страницу пакета программного обеспечения с помощью программного обеспечения . Это дало мне ошибку, но также и файл /tmp/upload.ipk
, который я скопировал в корневом каталоге, chmod +x
его и запускаю.
В этом разделе описывается модуль ядра YouTubeUnblock. Модуль ядра работает как обычный модуль внутри ядра и интегрирует в стек NetFilter, чтобы без сохранения состояния управлять пакетами, отправленными через Интернет.
Вы можете настроить модуль с его флагами в INSMOD:
insmod kyoutubeUnblock.ko fake_sni=1 exclude_domains=.ru quic_drop=1
Обратите внимание, что имена флагов отличаются от тех, которые используются для обычного YouTubeUnblock (как в конфигурации UCI для OpenWRT): замените -
на _
и без ведущего --
. Также для настройки Togglers вы должны установить их на 1
( quic_drop=1
)
Также хороший тиг, чтобы упомянуть - это условно. Модуль ядра объединяет -Trace и -Silent опция к одному verbosity
параметру. Этот параметр принимает 3 аргументы: trace
, debug
и silent
. Я настоятельно не рекомендую включать trace
Mod на маршрутизаторе, потому что он может вызвать огромные проблемы с производительностью и даже заморозить ваше устройство.
Также поддерживается снижение замены для всех параметров, за исключением отметки пакета. Падение замены не требует перезапуска модуля, если вы хотите изменить параметры. Вы можете указать и проверить параметры в каталоге модуля внутри sysfs: /sys/module/kyoutubeUnblock/parameters/
. Например, чтобы установить quic_drop true, вы можете использовать следующую команду:
echo 1 | sudo tee /sys/module/kyoutubeUnblock/parameters/quic_drop
и
cat /sys/module/kyoutubeUnblock/parameters/quic_drop
Чтобы проверить параметр.
Чтобы построить модуль ядра в вашей хост-системе, вы должны установить linux-headers
, которые обеспечат сборку основных инструментов и компилятор gcc
. В хост -системе вы можете построить модуль с
make kmake
Чтобы построить модуль для внешнего ядра, вы должны построить это ядро локально и точечно сделать его. Используйте KERNEL_BUILDER_MAKEDIR=~/linux
flag для Make, например:
make kmake KERNEL_BUILDER_MAKEDIR=~/linux
Обратите внимание, что ядро должно быть уже настроено и построено. См. Руководства по строительству ядра Linux для получения дополнительной информации о вашем конкретном случае.
Строительство с OpenWRT SDK не такая сложная вещь. Единственное, что вы должны сделать, это получить SDK. Вы можете найти его, посмотрев на свою архитектуру и версию OpenWRT, используемой в настоящее время. Вы должны использовать именно свою версию OpenWRT, так как ядра часто меняются. Вы можете найти SDK двумя способами: загрузив его с их сайта или используя контейнер OpenWRT SDK Docker (рекомендуется).
Если вы решите загрузить TAR Archive, следуйте следующим шагам: для меня архив живет в https://downloads.openwrt.org/releases/23.05.3/targets/ramips/mt76x8/ и называется openwrt-sdk-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64
. Вам нужно будет установить требования SDK в вашу систему, если у вас возникнут проблемы, используйте Docker Ubuntu: 24.04 Image. Убедитесь, что он не пользователь, не являющийся корнями, так как некоторые макиязы проваливаются с ней. Далее, не задействуйте SDK и CD в него.
Или вы можете получить изображение Docker с SDK встроенным: https://hub.docker.com/u/openwrt/sdk. В моем случае изображение имеет теги ramips-mt76x8-23.05.3
. Хорошая вещь здесь заключается в том, что вам не нужно устанавливать какие -либо зависимости в контейнере Docker. Также Docker Hub имеет идеальный поиск тегов, если вы не уверены, кто соответствует вашему устройству.
Когда вы распаковали/установили SDK, вы готовы начать с создания модуля ядра.
Делать
echo " src-git youtubeUnblock https://github.com/Waujito/youtubeUnblock.git;openwrt " >> feeds.conf
./scripts/feeds update youtubeUnblock
./scripts/feeds install -a -p youtubeUnblock
make defconfig
make package/kyoutubeUnblock/compile V=s
Когда команды закончат, модуль готов. Найдите его с find bin -name "kmod-youtubeUnblock*.ipk"
, скопируйте на свой хост и установите на маршрутизатор через программный интерфейс GUI. Модуль должен начать немедленно. Если нет, делайте modprobe kyoutubeUnblock
.
YouTubeUnblock также может работать на Падаване. Проверьте руководство здесь [Rus]
Если у вас есть какие -либо вопросы/предложения/проблемы, не стесняйтесь открывать проблему.