Evite los sistemas de inspección de paquetes profundos (DPI) que se basan en SNI. El paquete es solo para Linux. También es totalmente compatible con los enrutadores que ejecutan OpenWRT.
El programa se desarrolló principalmente para evitar la interrupción de YouTube en Rusia.
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.
El programa se distribuye en dos versión:
El programa es compatible con enrutadores basados en OpenWRT, Entware (Keenetic/ASUS) y máquinas host. El programa ofrece binarios a través de acciones de GitHub. Los binarios también están disponibles a través de las versiones de GitHub. Use la última liberación previa para la construcción más actualizada. Echa un vistazo a las acciones de GitHub si quieres ver todos los binarios compilados nunca. Debe conocer la arcitectura de su hardware para usar binarios. En OpenWrt puede verificarlo con Command grep ARCH /etc/openwrt_release
.
En OpenWRT y Entware instala el programa con OPKG. Si recibió un error del sistema de archivos de solo lectura, puede desempaquetar el binario manualmente o especificar la ruta OPKG opkg -o <destdir>
.
Para Windows, use GoodbyedPi por Valdikss (puede encontrar cómo usarlo para YouTube aquí) El mismo comportamiento también se implementa en el paquete Zapret para Linux.
Cuando obtuvo el paquete de lanzamiento, debe instalarlo. Vaya a la interfaz de su enrutador, al software System-> , actualice listas e instale YouTubeUnblock a través del botón Install_package . Luego, debe ir al menú de startup del sistema y recargar el firewall (también puede hacerlo dentro de los servicios-> Menú YouTubeUnblock ).
Para que funcione, debe registrar una regla iptable e instalar módulos de kernel requeridos. La lista de módulos depende de la versión de OpenWRT y qué firewall usas (iptables o nftables). Para la mayoría de las versiones modernas de OpenWRT (v23.x, v22.x), debe usar reglas NFTables, para las más antiguas depende, pero típicamente iptables.
La dependencia común es
kmod-nfnetlink-queue
Pero se proporciona como dependencia de otros paquetes de firewall.
Entonces, si estás en iptables, debes instalar:
kmod-ipt-nfqueue
iptables-mod-nfqueue
kmod-ipt-conntrack-extra
iptables-mod-conntrack-extra
Y, por supuesto, la aplicación de espacio de usuario IPTables debería estar disponible.
En los nftables las dependencias son:
kmod-nft-queue
kmod-nf-conntrack
El siguiente paso es agregar las reglas de firewall requeridas.
Para Nftables en OpenWrt Reglas surge Out of-the-box y almacenado en /usr/share/nftables.d/ruleset-post/537-youtubeUnblock.nft
. Todo lo que necesita son los requisitos de instalación y do /etc/init.d/firewall reload
. Si no, vaya a la configuración de firewall.
Ahora vamos a la configuración. Para OpenWrt aquí está la configuración a través de UCI y LUCI disponibles (CLI y GUI respectivamente).
Para Luci, también conocido como GUI, también conocido como Web-Interface of Router, debe instalar el paquete Luci-App-YoutubeUnblock como lo hizo con el paquete normal de YouTubeUnblock. Tenga en cuenta que las listas de alimentos OPKG oficiales deben cargarse ( hágalo con la opción de listas de actualización ).
Si tiene * pkg_hash_check_unresolved: cannot find dependency luci-lua-runtime for luci-app-youtubeUnblock
, está utilizando Old OpenWrt. Instale este paquete ficticio. Consulte este comentario para obtener más detalles.
La configuración de LUCI vive en los servicios-> Sección de YouTubeunBlock . Es auto descriptivo, con una descripción para cada indicador. Tenga en cuenta que después de presionar el botón Save & Apply
, la configuración se aplica automáticamente y se reinicia el servicio.
La configuración de UCI está disponible en el archivo/etc/config/youtubeunblock, en la sección youtubeUnblock.youtubeUnblock
. La configuración se realiza con banderas. Tenga en cuenta que los nombres de las banderas no son los mismos: debe reemplazar -
con _
, no debe usar el liderazgo --
para la bandera. También habilitará las banderas de alternar (sin parámetros) con 1
.
Por ejemplo, para habilitar registros de trazas que debe hacer
uci set youtubeUnblock.youtubeUnblock.trace=1
Puede verificar los registros en modo CLI con logread -l 200 | grep youtubeUnblock
Comando logread -l 200 | grep youtubeUnblock
.
Para UCI, para guardar las configuraciones, debe hacer uci commit
y luego reload_config
para reiniciar el YouTubeUnblock
En el modo CLI usará YouTubeunBlock como un servicio init.d normal: por ejemplo, puede habilitarlo con /etc/init.d/youtubeUnblock enable
.
Para entware en Keenetic aquí hay una guía de instalación (ruso).
Instale el binario con opkg install youtubeUnblock-*.ipk
. Después de la instalación, el binario in/opt/bin y el script init en /opt/etc/init.d/s51youtubeunblock estarán disponibles. Para ejecutar YouTubeunBlock, simplemente ejecute /opt/etc/init.d/S51youtubeUnblock start
Tenga en cuenta que debe alimentar el kernel objetivo con el módulo del núcleo NFNetLink_Queue. El módulo puede estar deshabilitado o incluso no presente. Entware S51YoutubeUnblock intentará insertar kmods de cualquier manera, pero si no son proporcionados por el software, debe instalarlos manualmente. AFAIK sobre Keenetics aquí hay un repositorio con módulos compilados por el cliente. Puede encontrarlos en algún lugar de la interfaz web de su dispositivo. En otros enrutadores, es posible que desee investigar más profundamente en ese caso y encontrar sus Kmods. Si no puede encontrar nada, puede pedirle al cliente los códigos GPL de Linux Kernel (y puede ser incluso OpenWRT) y compilar KMOD manualmente.
Debe insertar el módulo con (este paso se puede omitir en entware y abrewrt):
modprobe nfnetlink_queue
En el host local, asegúrese de cambiar hacia adelante a la cadena de salida en los siguientes conjuntos de reglas del firewall.
Copiar youtubeUnblock.service
a /usr/lib/systemd/system
(debe cambiar la ruta dentro del archivo a la posición del programa, por ejemplo /usr/bin/youtubeUnblock
, también es posible que desee eliminar la adición de reglas iptables predeterminada en el archivo systemd controláralo manualmente). Y ejecute systemctl start youtubeUnblock
.
En NFTables debe poner las siguientes reglas 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 '
En iptables deberías poner las próximas reglas de 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
Para IPv6 en iptables, debe duplicar las reglas anteriores para 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
Tenga en cuenta que las reglas anteriores usan Conntrack para enrutar solo los primeros 20 paquetes desde la conexión a YouTubeUnblock . Si tiene algunos problemas con él, por ejemplo, YouTubeUnblock no detecta YouTube, intente eliminar Connytes de las reglas. Pero es un comportamiento poco probable y probablemente deberías verificar tu conjunto de reglas.
Puede usar --queue-balance
con múltiples instancias de YouTubeunBlock para el rendimiento. Este comportamiento se admite mediante múltiples lecturas. Simplemente pase --threads=n
donde n representa una cantidad de hilos que desea habilitar. El N valor predeterminado a 1 . Los subprocesos máximos predeterminados a 16 pero pueden modificarse programáticamente. Tenga en cuenta que si está a punto de aumentarlo, aquí hay un 100% de posibilidades de que esté equivocado.
También se prefiere DNS sobre HTTPS para un anonimato adicional.
Aquí está el comando para probar si funciona o no:
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
Debería devolver baja velocidad sin YouTubeUnblock y más rápido con él. Con YouTubeUnblock, la velocidad debe ser la misma que rápida con el siguiente comando:
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
Ponga banderas al binario , no un guión init. Si está en OpenWrt, debe colocar las banderas dentro del script: Open /etc/init.d/youtubeUnblock
con cualquier editor de texto, como VI o Nano y colocar sus banderas después procd_set_param command /usr/bin/youtubeUnblock
Line.
Banderas disponibles:
--sni-domains=<comma separated domain list>|all
los dominios que desea ser manejados por SNI. Use esta cadena si desea cambiar la lista de dominio predeterminada. El valor predeterminado a googlevideo.com,ggpht.com,ytimg.com,youtube.com,play.google.com,youtu.be,googleapis.com,googleusercontent.com,gstatic.com,l.google.com
. Puede aprobar todo si desea que cada Clienthello se maneje. Puede excluir algunos dominios con la bandera --exclude-domains
.
--exclude-domains=<comma separated domain list>
Lista de dominios que se excluirán de la desargumento.
--queue-num=<number of netfilter queue>
el número de netfilter cola a la que se vinculará YouTubeunBlock . El valor predeterminado es 537 .
--fake-sni={0|1}
Esta bandera habilita falsas-SNI que obliga a YouTubeUnblock enviar al menos tres paquetes en lugar de uno con TLS Clienthello : Fake Clienthello , primera parte del Clienthello original, segunda parte del Clienthello original. Este indicador puede estar relacionado con algunos mensajes de error no permitidos, por lo que antes de abrir un problema, consulte la solución de problemas para las ePerm. Predeterminado es 1 .
--fake-sni-seq-len=<length>
Este indicador especifica YouTubeUnblock para construir una complicada construcción de paquetes de saludo del cliente falso. La longitud determina cuántas falsificaciones se enviarán. Predeterminado es 1 .
--fake-sni-type={default|custom|random}
Este indicador especifica qué tipo de mensaje falso debe usarse para paquetes falsos. Para random
, se enviará el mensaje de longitud aleatoria y con carga útil aleatoria. Para default
se utiliza la carga útil predeterminada (sni = www.google.com). Y para la opción custom
, la carga útil de --fake-custom-payload
se utiliza. El valor predeterminado es default
.
--fake-custom-payload=<payload>
Útil con --fake-sni-type=custom
. Debe especificar la carga útil para el mensaje falso manualmente. Use el formato hexagonal: --fake-custom-payload=0001020304
significa que 5 bytes secuencia: 0x00
, 0x01
, 0x02
, 0x03
, 0x04
utilizada como falsa.
--faking-strategy={randseq|ttl|tcp_check|pastseq|md5sum}
Este indicador determina la estrategia de la invalidación de paquetes falsos. El valor predeterminado a randseq
randseq
especifica que se establecerá la secuencia aleatoria/AgradezeGemend Random. Esta opción puede ser manejada por el proveedor que utiliza Conntrack con Drop on Inválido Regla de Firewall de Conntrack State habilitada.ttl
especifica que el paquete se invalidará después de --faking-ttl=n
hops. ttl
es mejor, pero puede causar problemas si no está configurado.pastseq
es como randseq
, pero el número de secuencia no es aleatorio, pero hace referencia al paquete enviado en el pasado (antes de la actualidad).tcp_check
invalidará el paquete de falsificación con suma de verificación no válida. Puede ser manejado y dejado caer por algunos proveedores/TSPUS.md5sum
invalidará el paquete de falsificación con TCP MD5SUM inválido. MD5SUM es una opción TCP manejada por el servidor de destino pero que TSPU puede omitir. --faking-ttl=<ttl>
Sintoniza el tiempo para vivir (TTL) de mensajes SNI falsos. TTL se especifica como que el paquete pasará por el sistema DPI y se capturará por él, pero no llegará al servidor de destino. Predeterminado a 8 .
--fake-seq-offset
sintoniza el desplazamiento del número de secuencia original para paquetes falsos. Utilizado por la estrategia de falsificación de Randseq. El valor predeterminado a 10000. Si 0, se establecerá el número de secuencia aleatoria.
--frag={tcp,ip,none}
Especifica la estrategia de fragmentación para el paquete. TCP se usa por defecto. La fragmentación IP puede ser bloqueada por el sistema DPI. Ninguno no especifica fragmentación. Probablemente esto no funcionará, pero puede ser que funcionará para algunas estrategias falsas de SNI.
--frag-sni-reverse={0|1}
Especifica YouTubeUnblock para enviar fragmentos de Clienthello en el orden inverso. Predeterminado es 1 .
--frag-sni-faked={0|1}
Especifica YouTubeUnblock para enviar paquetes falsos cerca de Clienthello (llena la carga útil con ceros). El valor predeterminado es 0 .
--frag-middle-sni={0|1}
Con estas opciones YouTubeUnblock dividirá el paquete en el medio de los datos SNI. Predeterminado es 1.
--frag-sni-pos=<pos>
Con esta opción YouTubeUnblock dividirá el paquete en la posición pos. Predeterminado es 1.
--quic-drop
Drop todos los paquetes Quic que van a YouTubeUnblock. No afectará a ningún otro paquete UDP. Adecuado para algunos televisores. Tenga en cuenta que para que esta opción funcione también debe agregar proxy UDP a YouTubeUnblock en Firewall. connbytes
también se puede usar con UDP.
--fk-winsize=<winsize>
Especifica el tamaño de la ventana para el paquete TCP fragmentado. Aplicable si desea que la respuesta se fragmente. Puede ralentizar la inicialización de la conexión.
--synfake={1|0}
Si 1, Syn se enviará la carga útil antes de cada solicitud. La idea se toma de los sindatos del proyecto Zapret. La carga útil de SYN normalmente se descartará por punto final, pero puede ser manejada por TSPU. Esta opción envía falso normal en esa carga útil. Tenga en cuenta que la opción funciona para todos los sitios, por lo que los dominios de SNI no cambiarán nada.
--synfake-len=<len>
El paquete falso enviado en Synfake puede ser demasiado grande. Si experimenta problemas, baja la sala de sinfake. Donde Len significa cuánto bytes se deben enviar como sindatos. Pase 0 si desea enviar un paquete falso completo. El valor predeterminado a 0
--sni-detection={parse|brute}
Especifica cómo detectar SNI. PARSE normalmente lo detectará analizando el mensaje de Hello Hello del cliente. Brute pasará por todo el mensaje y verificará la posibilidad de que ocurra SNI. Tenga en cuenta que cuando la opción --sni-domains
no es todo bruto será O (nm) complejidad de tiempo donde n representa la longitud del mensaje y M es el número de dominios. El valor predeterminado se analiza.
--seg2delay=<delay>
Esta bandera obliga a YouTubeUnblock a esperar un poco antes de enviar la segunda parte del paquete dividido.
--silent
deshabilita el modo detallado.
--trace
Máxima verbosidad para fines de depuración.
--no-gso
deshabilita el soporte para los paquetes de grasa de Google Chrome que usa GSO. Esta característica está bien probada ahora, por lo que esta bandera probablemente no corregirá nada.
--no-ipv6
deshabilita el soporte para IPv6. Puede ser útil si no desea que se abra el socket IPv6.
--threads=<threads number>
Especifica la cantidad de hilos que desea ejecutar para su programa. Este valor predeterminado es 1 y no debe editarse para uso normal. Pero si realmente desea múltiples instancias de cola de YouTubeUnblock, tenga en cuenta que debería cambiar --Queue-num a --Queue Balance. Por ejemplo, con 4 hilos, use --queue-balance 537:540
en iptables y queue num 537-540
en nftables.
--packet-mark=<mark>
Use esta opción si YouTubeUnBlock entra en conflicto con otros sistemas dependiendo de la marca de paquetes. Tenga en cuenta que es posible que desee cambiar la regla de aceptación para que los iptables sigan la marca.
--fbegin
y --fend
FLAGS: YouTubeunBlock admite múltiples conjuntos de estrategias para filtros específicos. Es posible que desee iniciar un nuevo conjunto después del predeterminado, como: --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
. Tenga en cuenta que la prioridad de estos conjuntos va hacia atrás: el último es primero, predeterminado (uno que no comienza con --fbegin) es el último. Si inicia la nueva sección, la configuración predeterminada se implementa al igual que YouTubeUnBlock sin ningún parámetro. Tenga en cuenta que la configuración anterior es solo un ejemplo y no funcionará para usted.
Verifique este problema para obtener configuraciones útiles.
Si tiene problemas con algunos sitios y está seguro de que están bloqueados por SNI (YouTube, por ejemplo), el uso puede jugar con banderas y sus combinaciones. Al principio se recomienda probar la bandera --faking-strategy
y --frag-sni-faked=1
. Si tiene problemas con algunos sitios proxy, puede jugar con los valores de las banderas. Por ejemplo, para alguien --faking-strategy=ttl
funciona. Debe especificar adecuado --fake-sni-ttl=<ttl value>
donde ttl es la cantidad de lúpulo entre usted y DPI.
Si está en cromo, es posible que deba deshabilitar a Kyber (la característica que hace que el TLS Clienthello sea muy grande). Tengo el problema con el enrutador, por lo que para escapar de posibles errores, por lo que es mejor deshabilitarlo: en chrome://flags
Busque Kyber y cambiarlo al estado deshabilitado. Alternativamente, puede establecer --sni-detection=brute
y probablemente ajustar el indicador --sni-domains
.
Si su navegador está usando Quic, puede que no funcione correctamente. Deshabilitarlo en Chrome en chrome://flags
y en Firefox network.http.http{2,3}.enable(d)
En about:config
.
Parece que algunos TSPUS comenzaron a bloquear los paquetes de Sightseq, por lo que debe jugar con estrategias de falsificación. Personalmente recomiendo comenzar con la estrategia de falsificación md5sum
.
Los televisores son el mayor dolor de cabeza.
En este problema, el problema se ha resuelto. Y ahora YouTubeunBlock debería funcionar con banderas predeterminadas. Si no, juega con estrategias de falsificación y otras banderas. También es posible que deba deshabilitar el QUIC. Para hacerlo, puede usar el indicador --quic-drop
con configuración adecuada del firewall (verifique la descripción del indicador). Tenga en cuenta que esta bandera no deshabilita GQUIC y algunos televisores pueden transmitirlo. Para deshabilitar GQUIC, deberá bloquear el puerto 443 completo para UDP en la configuración de firewall:
Para los nftables do
nft insert rule inet fw4 forward ip saddr 192.168.. udp dport 443 counter drop
Para iptables
iptables -I OUTPUT --src 192.168.. -p udp --dport 443 -j DROP
Donde tienes que reemplazar 192.168 .. con IP de tu televisor.
El EPM puede ocurrir en muchos lugares, pero generalmente aquí hay dos: MNL_CB_RUN y al enviar el paquete a través de RAWSocket (RAW_FRAGS_SEND y envíe SNI falso).
La operación MNL_CB_RUN no está permitida indica que otra instancia de YouTubeUnblock se está ejecutando en la cola especificada-num.
La operación de RawSocket no está permitida indica que las reglas de Nefilter están abandonando el paquete. De hecho, esta es una pista del núcleo de que está sucediendo algo mal y debemos verificar las reglas del firewall. Antes de sumergirnos en el problema, hagamos que limpie cómo se envían los paquetes destrozados. Nefilter Queue nos proporciona la capacidad de destrozar el paquete de mosca, pero eso no es adecuado para este programa porque necesitamos dividir el paquete a al menos dos paquetes independientes. Por lo tanto, estamos utilizando los enchufes RAW Linux que nos permite enviar cualquier paquete IPv4. El paquete va de la cadena de salida incluso cuando NFQueue se configura en adelante (adecuado para OpenWRT). Así que necesitamos escapar de los rechazos de paquetes aquí.
iptables -I OUTPUT -m mark --mark 32768/32768 -j ACCEPT
o nft insert rule inet fw4 output mark and 0x8000 == 0x8000 counter accept
. Antes de la compilación, asegúrese de que se instale gcc
, make
, autoconf
, automake
, pkg-config
y libtool
. Para Fedora glibc-static
también debe instalarse.
Compilar con make
. Instale con make install
. El paquete incluye libnetfilter_queue
, libnfnetlink
y libmnl
como dependencias estáticas. El paquete requiere que linux-headers
y el kernel construidos con soporte de NetFilter NFQueue.
El paquete también es compatible con los enrutadores. El enrutador debe estar ejecutado por un sistema basado en Linux como OpenWRT.
Puede construir en OpenWRT con dos opciones: Primero: a través del SDK, que se prefiere y el segundo es un compile transversal manualmente con OpenWRT Toolchain.
OpenWRT proporciona un SDK de alto nivel para las compilaciones de paquetes.
El primer paso es descargar o compilar OpenWrt SDK para su plataforma específica. El SDK se puede compilar de acuerdo con este tutorial.
Además del código fuente sin procesar de SDK, OpenWRT también ofrece SDK precompilados para su enrutador. Puede encontrarlo en la página del enrutador. Por ejemplo, tengo un enrutador basado en Ramips/Mt76x8, por lo que para mí el SDK está en https://downloads.openwrt.org/releases/23.05.3/targets/ramips/mt76x8/ y llamó openwrt-sdk-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64
.
Deberá instalar requisitos SDK en su sistema si tiene algún problema, use Docker Ubuntu: Imagen 24.04. Asegúrese de ser un usuario no raíz, ya que algunos Makesystem falla con él. Luego, desgaste el SDK y el CD en él.
Hacer
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
Ahora el paquete está construido y puede importarlo al enrutador. Encuéntrelo en bin/packages/<target>/youtubeUnblock/youtubeUnblock-<version>.ipk
.
La cadena de herramientas precompilada ubicada cerca del SDK. Por ejemplo, se llama openwrt-toolchain-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64.tar.xz
. Cuando descargue la cadena de herramientas, desencadene en alguna parte. Ahora estamos listos para la compilación. Mi Cross GCC me pidió que creara un directorio de puesta en escena y lo pasara como una variable de entorno. También debe notar los paquetes de herramientas y reemplazar mi comando Make con el suyo.
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
Eche un vistazo a CROSS_COMPILE_PLATFORM
es requerido por AutoTools, pero creo que no es necesario. De todos modos, pongo mipsel-buildroot-linux-gnu
aquí. Para el nombre del modelo de su enrutador, tal vez un manual de compilación cruzada de Automake sea útil.
Cuando se realice la compilación, el archivo binario estará en el directorio de compilación. Copielo a su enrutador. Tenga en cuenta que es probable que se requiera un acceso SSH para continuar. Los SSHF no funcionan en mi modelo, así que inyecté la aplicación al enrutador a través de la página del paquete de carga de software . Me ha dado un error, pero también un archivo A /tmp/upload.ipk
que copié en el directorio root, chmod +x
it y ejecutar.
Esta sección describe la versión del módulo del núcleo de YouTubeUnblock. El módulo del núcleo funciona como un módulo normal dentro del núcleo y se integra dentro de la pila de NetFilter para manejar con estatuto los paquetes enviados a través de Internet.
Puede configurar el módulo con sus indicadores en INSMOD:
insmod kyoutubeUnblock.ko fake_sni=1 exclude_domains=.ru quic_drop=1
Tenga en cuenta que los nombres de los banderas son diferentes de los utilizados para el YouTubeUnBlock regular (justo como en la configuración de UCI para OpenWRT): Reemplazar -
con _
y sin liderazgo --
. También para configurar togglers, debe configurarlos en 1
( quic_drop=1
)
También un buen thig para mencionar es la verbosidad. El módulo del núcleo combina -Trace y -Opción silent a la verbosity
de un parámetro. Este parámetro acepta 3 argumentos: trace
, debug
y silent
. No recomiendo habilitar trace
Mod en el enrutador porque puede causar grandes problemas con el rendimiento e incluso congelar su dispositivo.
También se admite una caída de reemplazo para todos los parámetros que excluyen la marca de paquetes. Una caída en el reemplazo no requiere reiniciar el módulo si desea cambiar los parámetros. Puede especificar y verificar los parámetros dentro del directorio del módulo dentro del sysfs: /sys/module/kyoutubeUnblock/parameters/
. Por ejemplo, para establecer quic_drop en true puede usar el siguiente comando:
echo 1 | sudo tee /sys/module/kyoutubeUnblock/parameters/quic_drop
y
cat /sys/module/kyoutubeUnblock/parameters/quic_drop
Para verificar el parámetro.
Para construir el módulo del núcleo en su sistema de host, debe instalar linux-headers
, lo que proporcionará herramientas esenciales de compilación y un conjunto de compiladores gcc
. En el sistema de host puede construir el módulo con
make kmake
Para construir el módulo para el núcleo externo, debe construir ese núcleo localmente y señalarlo. Use KERNEL_BUILDER_MAKEDIR=~/linux
Flag para hacer, por ejemplo:
make kmake KERNEL_BUILDER_MAKEDIR=~/linux
Tenga en cuenta que el núcleo ya debe estar configurado y construido. Consulte los manuales de construcción del núcleo de Linux para obtener más información sobre su caso específico.
Construir con OpenWrt SDK no es algo tan difícil. Lo único que debe hacer es obtener el SDK. Puede encontrarlo mirando a su arquitectura y versión del OpenWRT que se utiliza actualmente. Debe usar exactamente su versión de OpenWRT ya que los kernels allí cambian a menudo. Puede encontrar el SDK de dos maneras: descargándolo desde su sitio o utilizando el contenedor OpenWRT SDK Docker (recomendado).
Si decide descargar el Archivo de Tar, siga los próximos pasos: para mí, el archivo vive en https://downloads.openwrt.org/releases/23.05.3/targets/ramips/mt76x8/ y llamó openwrt-sdk-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64
. Deberá instalar requisitos SDK en su sistema si tiene algún problema, use Docker Ubuntu: Imagen 24.04. Asegúrese de ser un usuario no raíz, ya que algunos Makesystem falla con él. Luego, desgaste el SDK y el CD en él.
O puede obtener la imagen de Docker con SDK integrado: https://hub.docker.com/u/openwrt/sdk. En mi caso, la imagen tiene etiqueta ramips-mt76x8-23.05.3
. Lo bueno aquí es que no necesita instalar ninguna dependencia dentro del contenedor Docker. También Docker Hub tiene una búsqueda perfecta sobre las etiquetas si no se asegura de cuál corresponde a su dispositivo.
Cuando desempaquetó/instaló el SDK, está listo para comenzar con la construcción del módulo del núcleo.
Hacer
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
Cuando terminan los comandos, el módulo está listo. Encuéntralo con find bin -name "kmod-youtubeUnblock*.ipk"
, copie a su host e instale al enrutador a través de la interfaz de software GUI. El módulo debe comenzar de inmediato. Si no, haz modprobe kyoutubeUnblock
.
YouTubeUnblock también puede correr en Padavan. Revise el manual aquí [Rus]
Si tiene alguna pregunta/sugerencia/problemas, no dude en abrir un problema.