Contourne les systèmes d'inspection des paquets profonds (DPI) qui s'appuie sur SNI. Le package est réservé à Linux. Il est également entièrement compatible avec les routeurs exécutant OpenWRT.
Le programme a été principalement développé pour contourner la panne de YouTube en Russie.
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.
Le programme est distribué en deux versions:
Le programme est compatible avec les routeurs basés sur les machines OpenWRT, ENTWare (Kenetic / ASUS) et hôte. Le programme propose des binaires via des actions GitHub. Les binaires sont également disponibles via les sorties GitHub. Utilisez le dernier pré-libération pour la construction la plus à jour. Consultez les actions GitHub si vous souhaitez voir tous les binaires compilés jamais. Vous devez connaître l'architecture de votre matériel pour utiliser des binaires. Sur OpenWrt, vous pouvez le vérifier avec la commande grep ARCH /etc/openwrt_release
.
Sur OpenWRT et ENTWare, installez le programme avec OPKG. Si vous avez une erreur de système de fichiers en lecture seule, vous pouvez déballer le binaire manuellement ou spécifier le chemin OPKG opkg -o <destdir>
.
Pour Windows, utilisez GoodByEdPI par Valdikss (vous pouvez trouver comment l'utiliser pour YouTube ici), le même comportement est également implémenté dans le package Zapret pour Linux.
Lorsque vous obtenez le package de version, vous devez l'installer. Accédez à votre interface de routeur, à System-> Logiciel , faites des listes de mise à jour et installez YouTubeunBlock via le bouton Installer_Package . Ensuite, vous devriez aller dans le menu System-Startup et recharger le pare-feu (vous pouvez également le faire dans les services-> menu YouTubeUnlock ).
Pour le faire fonctionner, vous devez enregistrer une règle iptables et installer les modules de noyau requis. La liste des modules dépend de la version d'OpenWRT et du pare-feu utilisez-vous (iptables ou nftables). Pour la plupart des versions modernes d'OpenWRT (v23.x, v22.x), vous devez utiliser les règles NFTables, pour les plus âgées, cela dépend, mais généralement iptables.
La dépendance commune est
kmod-nfnetlink-queue
Mais il est fourni comme dépendance pour un autre package de pare-feu.
Donc, si vous êtes sur iptables, vous devez installer:
kmod-ipt-nfqueue
iptables-mod-nfqueue
kmod-ipt-conntrack-extra
iptables-mod-conntrack-extra
Et bien sûr, l'application Iptables User-Space devrait être disponible.
Sur nftables, les dépendances sont:
kmod-nft-queue
kmod-nf-conntrack
La prochaine étape consiste à ajouter des règles de pare-feu requises.
Pour Nftables sur les règles OpenWRT, sort de la boîte et stocké sous /usr/share/nftables.d/ruleset-post/537-youtubeUnblock.nft
. Tout ce dont vous avez besoin est d'installer les exigences et /etc/init.d/firewall reload
. Si non, accédez à la configuration du pare-feu.
Maintenant, nous allons à la configuration. Pour OpenWRT, voici la configuration via UCI et LUCI disponibles (CLI et GUI respectivement).
Pour Luci AKA GUI AKA Interface Web de routeur, vous devez installer le package luci-app-youtubeunlock comme vous l'avez fait avec le package YouTubeUnlock normal. Remarque que les listes de flux OPKG officielles doivent être chargées ( faites-le avec l'option de listes de mise à jour ).
Si vous obtenez * pkg_hash_check_unresolved: cannot find dependency luci-lua-runtime for luci-app-youtubeUnblock
, vous utilisez Old OpenWrt. Installez ce package factice. Vérifiez ce commentaire pour plus de détails.
Luci Configuration vit dans les services-> Section YouTubeUnblock . Il est auto-descriptif, avec description de chaque drapeau. Remarque qu'après avoir appuyé sur le bouton Save & Apply
, la configuration est appliquée automatiquement et le service est redémarré.
La configuration UCI est disponible dans / etc / config / youtubeunblock fichier, dans la section youtubeUnblock.youtubeUnblock
. La configuration se fait avec des drapeaux. Remarque, que les noms des drapeaux ne sont pas les mêmes: vous devez remplacer -
par _
, vous ne devez pas utiliser de leader --
pour le drapeau. Vous allez également activer les drapeaux à basculer (sans paramètres) avec 1
.
Par exemple, pour permettre des journaux de trace que vous devez faire
uci set youtubeUnblock.youtubeUnblock.trace=1
Vous pouvez vérifier les journaux en mode CLI avec logread -l 200 | grep youtubeUnblock
Commande logread -l 200 | grep youtubeUnblock
.
Pour UCI, pour enregistrer les configurations, vous devez faire uci commit
, puis reload_config
pour redémarrer le YouTubeunlock
En mode CLI, vous utiliserez YouTuBeUnblock comme service init.d normal: par exemple, vous pouvez l'activer avec /etc/init.d/youtubeUnblock enable
.
Pour ENTWare sur Kenetic, voici un guide d'installation (russe).
Installez le binaire avec opkg install youtubeUnblock-*.ipk
. Après l'installation, le binaire IN / OPT / BIN et le script init dans /opt/etc/init.d/s51youtubeunblock seront disponibles. Pour exécuter le YouTubeUnlock, exécutez simplement /opt/etc/init.d/S51youtubeUnblock start
Remarquez que vous devez alimenter le noyau cible avec le module du noyau NFNetLink_Queue. Le module peut être désactivé ou même non présent. Entware S51YouTUBEUnblock essaiera d'insérer des KMOD de quelque façon que ce soit, mais s'ils ne sont pas fournis par le logiciel, vous devez les installer manuellement. Afaik sur Keenetics Voici un référentiel avec des modules compilés par le client. Vous pouvez les trouver quelque part dans l'interface Web de votre appareil. Sur d'autres routeurs, vous voudrez peut-être faire des recherches plus approfondies dans ce cas et trouver vos KMOD. Si vous ne trouvez rien, vous pouvez demander au client des codes GPL du noyau Linux (et peut même être OpenWRT) et compiler les KMOD manuellement.
Vous devez insérer le module avec (cette étape peut être omise sur ENTWare et OpenWRT):
modprobe nfnetlink_queue
Sur l'hôte local, assurez-vous de passer à l'avant en chaîne de sortie dans les ensembles de règles de pare-feu suivants.
Copiez youtubeUnblock.service
vers /usr/lib/systemd/system
(vous devez modifier le chemin à l'intérieur du fichier en position de programme, par exemple /usr/bin/youtubeUnblock
, vous pouvez également supprimer l'ajout de règle iptable par défaut dans le fichier systemd dans le contrôler manuellement). Et exécuter systemctl start youtubeUnblock
.
Sur nftables, vous devriez mettre les prochaines règles 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 '
Sur Iptables, vous devriez mettre les prochaines règles 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
Pour IPv6 sur iptables, vous devez dupliquer les règles ci-dessus pour 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
Notez que les règles ci-dessus utilisent ConnTrack pour acheminer uniquement les 20 premiers paquets de la connexion à YouTubeUnblock . Si vous avez des problèmes avec cela, par exemple YouTubeunBlock ne détecte pas YouTube, essayez de supprimer Connbytes des règles. Mais c'est un comportement improbable et vous devriez probablement vérifier votre ensemble de règles.
Vous pouvez utiliser --queue-balance
avec plusieurs instances de YouTubeUnblock pour les performances. Ce comportement est pris en charge via le multithreading. Il suffit de passer --threads=n
où n représente un nombre de threads que vous souhaitez être activés. Le n par défaut est 1 . Les threads maximaux par défaut sont par défaut mais peuvent être modifiés par programme. Notez que si vous êtes sur le point de l'augmenter, voici 100% de chances que vous soyez dans le mauvais sens.
DNS sur HTTPS est également préféré pour l'anonymat supplémentaire.
Voici la commande pour tester si elle fonctionne ou non:
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
Il doit retourner à basse vitesse sans youtubeunblock et plus rapidement avec. Avec YouTubeUnblock, la vitesse doit être la même que vite avec la commande suivante:
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
Mettez des drapeaux au binaire , pas un script init. Si vous êtes sur OpenWRT, vous devez mettre les drapeaux à l'intérieur du script: ouvrir /etc/init.d/youtubeUnblock
avec n'importe quel éditeur de texte, comme vi ou nano et mettre vos drapeaux après procd_set_param command /usr/bin/youtubeUnblock
line.
Drapeaux disponibles:
--sni-domains=<comma separated domain list>|all
liste de domaines que vous souhaitez gérer par SNI. Utilisez cette chaîne si vous souhaitez modifier la liste de domaines par défaut. Par défaut sur googlevideo.com,ggpht.com,ytimg.com,youtube.com,play.google.com,youtu.be,googleapis.com,googleusercontent.com,gstatic.com,l.google.com
. Vous pouvez tout passer si vous souhaitez que chaque Clienthello soit gérée. Vous pouvez exclure certains domaines avec le drapeau --exclude-domains
.
--exclude-domains=<comma separated domain list>
Liste des domaines à exclure du ciblage.
--queue-num=<number of netfilter queue>
Le nombre de file d'attente NetFilter YouTubeunBlock sera lié. Par défaut est 537 .
--fake-sni={0|1}
Cet drapeau permet à Fake-SNI qui oblige YouTubeunBlock à envoyer au moins trois paquets au lieu d'un avec TLS ClientHello : Fake ClientHello , 1ère partie de ClientHello d'origine, 2e partie de ClientHello d'origine. Cet drapeau peut être lié à certains messages d'erreur d'opération non autorisés, donc avant d'ouvrir un problème, reportez-vous au dépannage pour EPERMS. Par défaut est 1 .
--fake-sni-seq-len=<length>
Cet drapeau spécifie YouTubeUnblock pour construire une construction compliquée de faux paquets Hello Client. La longueur détermine la quantité de contrefaçons envoyées. Par défaut est 1 .
--fake-sni-type={default|custom|random}
Cet drapeau spécifie le type de message de simulation doit être utilisé pour les faux paquets. Pour random
, le message de longueur aléatoire et de charge utile aléatoire sera envoyé. Pour default
la charge utile par défaut (sni = www.google.com) est utilisée. Et pour l'option custom
, la charge utile de la section --fake-custom-payload
utilisée. Par défaut par default
.
--fake-custom-payload=<payload>
utile avec --fake-sni-type=custom
. Vous devez spécifier manuellement la charge utile pour un faux message. Utilisez Format Hex: --fake-custom-payload=0001020304
signifie que 5 octets Séquence: 0x00
, 0x01
, 0x02
, 0x03
, 0x04
utilisé comme faux.
--faking-strategy={randseq|ttl|tcp_check|pastseq|md5sum}
Cet drapeau détermine la stratégie d'invalidation de faux paquets. Par défaut à randseq
randseq
spécifie que la séquence aléatoire / Random de remerciements aléatoire sera définie. Cette option peut être gérée par le fournisseur qui utilise ConnTrack avec Drop on Invalid ConnTrack State Firewall Rule Rule.ttl
spécifie que le paquet sera invalidé après --faking-ttl=n
Hops. ttl
est meilleur mais peut causer des problèmes s'ils sont non configurés.pastseq
est comme randseq
mais le numéro de séquence n'est pas aléatoire mais fait référence au paquet envoyé dans le passé (avant le courant).tcp_check
invalidera le paquet de truquage avec somme de contrôle non valide. Peut être manipulé et déposé par certains fournisseurs / tspus.md5sum
invalidera le paquet de truquage avec TCP MD5SUM non valide. MD5SUM est une option TCP qui est gérée par le serveur de destination mais peut être ignorée par TSPU. --faking-ttl=<ttl>
Participe le temps de vivre (TTL) de faux messages SNI. TTL est spécifié comme ce que le paquet passera par le système DPI et le capturé, mais n'atteindra pas le serveur de destination. Par défaut est 8 .
--fake-seq-offset
Toapset Le décalage du numéro de séquence d'origine pour les faux paquets. Utilisé par la stratégie de simulation Randseq. Par défaut à 10000. Si 0, le numéro de séquence aléatoire sera défini.
--frag={tcp,ip,none}
Spécifie la stratégie de fragmentation du paquet. TCP est utilisé par défaut. La fragmentation IP peut être bloquée par le système DPI. Aucun ne spécifie aucune fragmentation. Cela ne fonctionnera probablement pas, mais peut-être fonctionnera pour de fausses stratégies SNI.
--frag-sni-reverse={0|1}
Spécifie YouTubeUnblock pour envoyer des fragments ClientHello dans l'ordre inverse. Par défaut est 1 .
--frag-sni-faked={0|1}
Spécifie YouTubeUnblock pour envoyer de faux paquets près de ClientHello (remplit la charge utile de zéros). Par défaut est 0 .
--frag-middle-sni={0|1}
avec ces options youtubeunblock divisera le paquet au milieu des données SNI. Par défaut est 1.
--frag-sni-pos=<pos>
avec cette option youtubeunblock divisera le paquet à la position pos. Par défaut est 1.
--quic-drop
DROP TOUS LES PACKETS QUIC qui va sur YouTubeUnblock. N'affectera aucun autre paquet UDP. Convient pour certains téléviseurs. Remarque que pour cette option de fonctionnement, vous devez également ajouter un proxy UDP à YouTubeUnblock dans le pare-feu. connbytes
peut également être utilisé avec UDP.
--fk-winsize=<winsize>
Spécifie la taille de la fenêtre pour le paquet TCP fragmenté. Applicable si vous souhaitez que la réponse soit fragmentée. Peut ralentir l'initialisation de la connexion.
--synfake={1|0}
Si 1, la charge utile syn sera envoyée avant chaque demande. L'idée est tirée de Syndata de Zapret Project. La charge utile SYN sera normalement rejetée par point de terminaison mais peut être gérée par TSPU. Cette option envoie des faux normaux dans cette charge utile. Veuillez noter que l'option fonctionne pour tous les sites, donc - Sni-Domains ne changera rien.
--synfake-len=<len>
Le faux paquet envoyé en synfake peut être trop grand. Si vous rencontrez des problèmes, abaissez Synfake-Len. où Len représente la quantité d'octets qui doit être envoyée sous forme de syndata. Passez 0 si vous souhaitez envoyer un faux paquet entier. Par défaut est 0
--sni-detection={parse|brute}
spécifie comment détecter sni. Parse le détectera normalement en analysant le message Hello Client. Brute passera par l'ensemble du message et vérifiera la possibilité d'une occurrence SNI. Veuillez noter que lorsque l'option --sni-domains
n'est pas que la brute ne sera pas une complexité temporelle O (nm) où N représente la durée du message et m est un nombre de domaines. Par défaut à l'analyse.
--seg2delay=<delay>
Cet drapeau force YouTubeUnblock pour attendre un peu avant d'envoyer la 2ème partie du paquet fendu.
--silent
désactive le mode verbeux.
--trace
Verbosité maximale à des fins de débogage.
--no-gso
désactive la prise en charge des paquets de graisses Google Chrome qui utilisent le GSO. Cette fonctionnalité est bien testée maintenant, donc ce drapeau ne réparera probablement rien.
--no-ipv6
désactive la prise en charge de l'IPv6. Peut être utile si vous ne souhaitez pas que la prise IPv6 soit ouverte.
--threads=<threads number>
spécifie la quantité de threads que vous souhaitez exécuter pour votre programme. Cela par défaut est 1 et ne devrait pas être modifié pour une utilisation normale. Mais si vous voulez vraiment plusieurs instances de file d'attente de YouTubeUnblock, notez que vous devez changer --queue-num to --queue Balance. Par exemple, avec 4 threads, utilisez --queue-balance 537:540
sur Iptables et queue num 537-540
sur NFTABLES.
--packet-mark=<mark>
Utilisez cette option si YouTubeUnblock les conflits avec d'autres systèmes reposent sur la marque de paquets. Notez que vous voudrez peut-être modifier la règle d'acceptation pour les iptables pour suivre la marque.
--fbegin
et --fend
Faculteurs: YouTubeunBlock prend en charge plusieurs ensembles de stratégies pour des filtres spécifiques. Vous voudrez peut-être initier un nouvel ensemble après celui par défaut, comme: --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
. Remarque que la priorité de ces ensembles recule: le dernier est le premier, par défaut (celui qui ne commence pas par - fbegin) est le dernier. Si vous démarrez la nouvelle section, les paramètres par défaut sont implémentés comme YouTuBeUnblock sans aucun paramètre. Notez que la configuration ci-dessus est juste un exemple et ne fonctionnera pas pour vous.
Vérifiez ce problème pour des configurations utiles.
Si vous avez des problèmes avec certains sites et que vous êtes sûr qu'ils sont bloqués par SNI (YouTube par exemple), l'utilisation peut jouer avec les drapeaux et leurs combinaisons. Au début, il est recommandé d'essayer --faking-strategy
et --frag-sni-faked=1
. Si vous avez des problèmes avec certains sites proxys, vous pouvez jouer avec les valeurs des drapeaux. Par exemple, pour quelqu'un --faking-strategy=ttl
fonctionne. Vous devez spécifier correctement --fake-sni-ttl=<ttl value>
où TTL est la quantité de houblon entre vous et DPI.
Si vous êtes sur Chromium, vous devrez peut-être désactiver Kyber (la fonctionnalité qui rend le TLS Clienthello très gros). J'ai le problème avec lui sur le routeur, donc pour échapper aux erreurs possibles, il est donc préférable de le désactiver: dans chrome://flags
Recherchez Kyber et le basculer à l'état désactivé. Alternativement, vous pouvez définir --sni-detection=brute
ET PROBABLISSEZ ADAGER --sni-domains
Flag.
Si votre navigateur utilise Quic, cela peut ne pas fonctionner correctement. Désactivez-le dans Chrome dans chrome://flags
et dans Firefox network.http.http{2,3}.enable(d)
Dans l'option about:config
.
Il semble que certains TSPU aient commencé à bloquer les paquets erronés, vous devriez donc jouer avec des stratégies de truqué. Je recommande personnellement de commencer par la stratégie de simulation md5sum
.
Les téléviseurs sont le plus gros mal de tête.
Dans ce numéro, le problème a été résolu. Et maintenant, YouTubeUnblock devrait fonctionner avec les drapeaux par défaut. Sinon, jouez avec des stratégies de simulation et d'autres drapeaux. Vous pourriez également avoir à désactiver la quic. Pour le faire, vous pouvez utiliser --quic-drop
avec une configuration de pare-feu appropriée (vérifiez la description de l'indicateur). Notez que ce drapeau ne désactivera pas GQUIC et que certains téléviseurs peuvent se relayer. Pour désactiver GQUIC, vous devrez bloquer l'ensemble du port 443 pour UDP dans la configuration du pare-feu:
Pour nftables faire
nft insert rule inet fw4 forward ip saddr 192.168.. udp dport 443 counter drop
Pour iptables
iptables -I OUTPUT --src 192.168.. -p udp --dport 443 -j DROP
Où vous devez remplacer 192.168 .. par IP de votre téléviseur.
EPERM peut se produire dans de nombreux endroits, mais en général, voici deux: MNL_CB_RUN et lors de l'envoi du paquet via Rawsocket (RAW_FRAGS_SEND et envoyez un faux sni).
L'opération MNL_CB_RUN non autorisée indique qu'une autre instance de YouTubeunBlock fonctionne sur la file d'attente spécifiée.
L'opération Rawsocket non autorisée indique que le paquet est supprimé par les règles de Néfiltre. En fait, c'est un indice du noyau que quelque chose de mal se passe et nous devons vérifier les règles du pare-feu. Avant de plonger dans le problème, faisons nettoyer la façon dont les paquets mutilés sont envoyés. NEFILTER FIDUE nous offre la possibilité de goûter le paquet sur la mouche, mais cela ne convient pas à ce programme car nous devons diviser le paquet en au moins deux paquets indépendants. Nous utilisons donc des sockets bruts Linux qui nous permet d'envoyer n'importe quel paquet IPv4. Le paquet va de la chaîne de sortie même lorsque NFQueue est configuré en avant (adapté à OpenWRT). Nous devons donc échapper aux rejets de paquets ici.
iptables -I OUTPUT -m mark --mark 32768/32768 -j ACCEPT
ou nft insert rule inet fw4 output mark and 0x8000 == 0x8000 counter accept
. Avant la compilation, assurez-vous que gcc
, make
, autoconf
, automake
, pkg-config
et libtool
sont installés. Pour Fedora glibc-static
il faut également être installé.
Compiler avec make
. Installez avec make install
. Le package comprend libnetfilter_queue
, libnfnetlink
et libmnl
comme dépendances statiques. Le package nécessite linux-headers
et du noyau construites avec la prise en charge de NetFilter NFQueue.
Le package est également compatible avec les routeurs. Le routeur doit être exécuté par un système basé sur Linux tel que OpenWRT.
Vous pouvez construire sous OpenWRT avec deux options: Premièrement - via le SDK, qui est la voie préférée et la deuxième est transversale manuellement avec OpenWRT Toolchain.
OpenWRT fournit un SDK de haut niveau pour les versions de package.
La première étape consiste à télécharger ou à compiler le SDK OpenWRT pour votre plate-forme spécifique. Le SDK peut être compilé en fonction de ce tutoriel.
Outre le code source brut du SDK, OpenWRT propose également des SDK précompilés pour votre routeur. Vous pouvez le trouver sur la page du routeur. Par exemple, j'ai un routeur basé sur Ramips / MT76X8, donc pour moi le SDK est sur https://downloads.openwrt.org/releases/23.05.3/targets/ramips/mt76x8/ et appelé openwrt-sdk-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64
.
Vous devrez installer les exigences du SDK sur votre système si vous avez des problèmes, utilisez Docker Ubuntu: 24.04 Image. Assurez-vous d'être un utilisateur non root car certains MakeSystem échouent avec lui. Ensuite, il y a un SDK et du CD.
Faire
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
Maintenant, le paquet est construit et vous pouvez l'importer dans le routeur. Trouvez-le dans bin/packages/<target>/youtubeUnblock/youtubeUnblock-<version>.ipk
.
La chaîne d'outils précompilée située près du SDK. Par exemple, il est appelé openwrt-toolchain-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64.tar.xz
. Lorsque vous téléchargez la chaîne d'outils, déposez-le quelque part. Maintenant, nous sommes prêts pour la compilation. Mon Cross GCC m'a demandé de créer un DIR de mise en scène et de le passer comme une variable d'environnement. Vous devez également remarquer des packages Toolsuit et remplacer ma commande de marque par la vôtre.
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
Jetez un œil à CROSS_COMPILE_PLATFORM
il est nécessaire par AutoTools mais je pense que ce n'est pas nécessaire. Quoi qu'il en soit, j'ai mis mipsel-buildroot-linux-gnu
ici. Pour le nom de votre modèle de routeur, peut-être qu'un manuel de compilation croisée automake sera utile.
Une fois la compilation terminée, le fichier binaire sera dans le répertoire de construction. Copiez-le sur votre routeur. Notez qu'un accès SSH est susceptible d'être tenu de procéder. Les SSHF ne fonctionnent pas sur mon modèle, j'ai donc injecté l'application au routeur via la page Package de téléchargement de logiciels . Cela m'a donné une erreur, mais aussi un fichier a /tmp/upload.ipk
que j'ai copié dans Root Directory, chmod +x
It et Exécuter.
Cette section décrit la version du module du noyau de YouTubeUnblock. Le module du noyau fonctionne comme un module normal à l'intérieur du noyau et s'intègre dans la pile NetFilter pour manquer sans état les paquets envoyés sur Internet.
Vous pouvez configurer le module avec ses drapeaux dans INSMOD:
insmod kyoutubeUnblock.ko fake_sni=1 exclude_domains=.ru quic_drop=1
Notez que les noms des drapeaux sont différents de ceux utilisés pour le YouTuBeUnblock régulier (à droite comme dans la configuration UCI pour OpenWRT): Remplacez -
par _
et pas de leaders --
. Pour configurer également les billets, vous devez les définir sur 1
( quic_drop=1
)
Un bon thig à mentionner est également la verbosité. Le module du noyau combine --Trace et - Option Silent à la verbosity
du paramètre. Ce paramètre accepte 3 arguments: trace
, debug
et silent
. Je ne recommande fortement pas d'activer le mod trace
sur le routeur car il peut causer d'énormes problèmes avec les performances et même congeler votre appareil.
Une chute de remplacement est également prise en charge pour tous les paramètres excluant la marque de paquet. Une goutte de remplacement ne nécessite pas de redémarrage du module si vous souhaitez modifier les paramètres. Vous pouvez spécifier et vérifier les paramètres dans le répertoire du module à l'intérieur du sysfs: /sys/module/kyoutubeUnblock/parameters/
. Par exemple, pour définir quic_drop sur true, vous pouvez utiliser la commande suivante:
echo 1 | sudo tee /sys/module/kyoutubeUnblock/parameters/quic_drop
et
cat /sys/module/kyoutubeUnblock/parameters/quic_drop
Pour vérifier le paramètre.
Pour créer le module du noyau sur votre système hôte, vous devez installer linux-headers
qui fourniront des outils essentiels et une suite de compilateur gcc
. Sur le système hôte, vous pouvez construire le module avec
make kmake
Pour construire le module pour le noyau externe, vous devez construire ce noyau localement et le point. Utilisez KERNEL_BUILDER_MAKEDIR=~/linux
pour faire, par exemple:
make kmake KERNEL_BUILDER_MAKEDIR=~/linux
Notez que le noyau doit être déjà configuré et construit. Voir les manuels de construction du noyau Linux pour plus d'informations sur votre cas spécifique.
Construire avec OpenWRT SDK n'est pas une chose si difficile. La seule chose que vous devriez faire est d'obtenir le SDK. Vous pouvez le trouver en recherchant votre architecture et votre version de l'OpenWRT actuellement utilisé. Vous devez utiliser exactement votre version d'OpenWRT car les noyaux y changent souvent. Vous pouvez trouver le SDK de deux manières: en le téléchargeant à partir de leur site ou en utilisant le conteneur OpenWrt SDK Docker (recommandé).
Si vous décidez de télécharger les archives TAR, suivez les prochaines étapes: Pour moi, l'archive vit en https://downloads.openwrt.org/releases/23.05.3/targets/ramips/mt76x8/ et appelé openwrt-sdk-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64
. Vous devrez installer les exigences du SDK sur votre système si vous avez des problèmes, utilisez Docker Ubuntu: 24.04 Image. Assurez-vous d'être un utilisateur non root car certains MakeSystem échouent avec lui. Ensuite, il y a un SDK et du CD.
Ou vous pouvez obtenir l'image Docker avec SDK intégré: https://hub.docker.com/u/openwrt/sdk. Dans mon cas, l'image a Tag ramips-mt76x8-23.05.3
. Une bonne chose ici est que vous n'avez pas besoin d'installer de dépendances dans le conteneur Docker. Docker Hub a également une recherche parfaite autour des balises si vous ne savez pas laquelle correspond à votre appareil.
Lorsque vous avez déballé / installé le SDK, vous êtes prêt à commencer par la construction du module du noyau.
Faire
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
Lorsque les commandes se terminent, le module est prêt. Trouvez-le avec find bin -name "kmod-youtubeUnblock*.ipk"
, copiez sur votre hôte et installez sur le routeur via l'interface logicielle GUI. Le module doit démarrer immédiatement. Sinon, faites modprobe kyoutubeUnblock
.
YouTubeUnblock peut également fonctionner sur Padavan. Vérifiez le manuel ici [RUS]
Si vous avez des questions / suggestions / problèmes, n'hésitez pas à ouvrir un problème.