Umgehalten von DPI -Systemen (Deep Packet Inspection), die auf SNI angewiesen sind. Das Paket ist nur für Linux. Es ist auch vollständig kompatibel mit Routern, die OpenWrt ausführen.
Das Programm wurde in erster Linie entwickelt, um den YouTube -Ausfall in Russland zu umgehen.
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.
Das Programm ist in zwei Versionen verteilt:
Das Programm ist mit Routern kompatibel, die auf OpenWRT, Entware (Keenetic/ASUS) und Host -Maschinen basieren. Das Programm bietet Binärdateien über Github -Aktionen. Die Binärdateien sind auch über Github -Releases erhältlich. Verwenden Sie die neueste Vorabveröffentlichung für den aktuellsten Build. Schauen Sie sich GitHub -Aktionen an, wenn Sie alle Binärdateien jemals sehen möchten. Sie sollten die Arcitecture Ihrer Hardware zur Verwendung von Binärdateien kennen. Auf OpenWRT können Sie es mit dem Befehl grep ARCH /etc/openwrt_release
überprüfen.
Sowohl auf OpenWRT als auch auf Entware installieren Sie das Programm mit OPKG. Wenn Sie schreibgeschützte Dateisystemfehler haben, können Sie das binäre Binäre manuell auspacken oder OPKG -Pfad opkg -o <destdir>
angeben.
Für Windows GoodbyedPi von Valdikss (finden Sie hier für YouTube), dass das gleiche Verhalten auch im Zapret -Paket für Linux implementiert ist.
Wenn Sie das Release -Paket erhalten haben, sollten Sie es installieren. Gehen Sie zu Ihrer Router-Schnittstelle, zu System-> Software , aktualisieren Sie Listen und installieren Sie YouTubeunblock über die Taste "Install_Package" . Anschließend sollten Sie zum System-Startup -Menü gehen und die Firewall neu laden (Sie können es auch im Menü Dienste-> YouTubeunBlock- Menü tun).
Damit Sie es funktionieren, sollten Sie eine Iptables -Regel registrieren und die erforderlichen Kernelmodule installieren. Die Liste der Module hängt von der Version von OpenWRT und welcher Firewall (Iptables oder Nftables) abhängt. Für die meisten modernen Versionen von OpenWRT (v23.x, v22.x) sollten Sie NFTables -Regeln verwenden, für ältere, die es hängt, aber in der Regel iptables.
Die gemeinsame Abhängigkeit ist
kmod-nfnetlink-queue
Es wird jedoch als Abhängigkeit für andere Firewall -Pakete bereitgestellt.
Wenn Sie also in Iptables sind, sollten Sie installieren:
kmod-ipt-nfqueue
iptables-mod-nfqueue
kmod-ipt-conntrack-extra
iptables-mod-conntrack-extra
Und natürlich sollte die Iptables-User-Space-App verfügbar sein.
Auf nftables sind die Abhängigkeiten:
kmod-nft-queue
kmod-nf-conntrack
Der nächste Schritt besteht darin, die erforderlichen Firewall -Regeln hinzuzufügen.
Für NFTables auf OpenWRT-Regeln erfolgt OFF-the-box und wird unter /usr/share/nftables.d/ruleset-post/537-youtubeUnblock.nft
gespeichert. Alles, was Sie benötigen, ist die Installation von Anforderungen und do /etc/init.d/firewall reload
. Wenn nein, gehen Sie zur Firewall -Konfiguration.
Jetzt gehen wir zur Konfiguration. Für OpenWRT gibt es eine Konfiguration über UCI und Luci (CLI bzw. GUI).
Für Luci alias GUI aliS -Web-Interface of Router sollten Sie das Luci-App-Youtubeunblock- Paket installieren, wie Sie es mit dem normalen YouTubeunBlock-Paket getan haben. Beachten Sie, dass die Listen der offiziellen OPKG -Feeds geladen werden sollten ( dies mit der Option "Aktualisierungslisten ).
Wenn Sie * pkg_hash_check_unresolved: cannot find dependency luci-lua-runtime for luci-app-youtubeUnblock
, verwenden Sie Old OpenWrt. Installieren Sie dieses Dummy -Paket. Weitere Informationen finden Sie in diesem Kommentar.
Die Luci-Konfiguration lebt in Diensten-> YouTubeunBlock- Abschnitt. Es ist selbst beschreibend, mit Beschreibung für jede Flagge. Beachten Sie, dass die Konfiguration automatisch angewendet wird und der Dienst neu gestartet wird, nachdem Sie die Schaltfläche Save & Apply
.
Die UCI -Konfiguration ist in/etc/config/youtubeUnblock -Datei in Abschnitt youtubeUnblock.youtubeUnblock
verfügbar. Die Konfiguration erfolgt mit Flags. Beachten Sie, dass die Namen von Flags nicht gleich sind: Sie sollten -
durch _
, Sie sollten keine Führung verwenden --
für Flag. Außerdem aktivieren Sie die Umschaltflags (ohne Parameter) mit 1
.
So sollten Sie beispielsweise Trace -Protokolle aktivieren, die Sie tun sollten
uci set youtubeUnblock.youtubeUnblock.trace=1
Sie können die Protokolle im CLI -Modus mit logread -l 200 | grep youtubeUnblock
überprüfen logread -l 200 | grep youtubeUnblock
-Befehl.
Um die uci commit
reload_config
speichern
Im CLI -Modus verwenden Sie YouTubeunBlock als normalen Init.D -Service: Sie können beispielsweise mit /etc/init.d/youtubeUnblock enable
.
Für Entware on Keenetic finden Sie hier ein Installationshandbuch (Russisch).
Installieren Sie die Binärdatei mit opkg install youtubeUnblock-*.ipk
. Nach der Installation sind das binäre in/opt/bin und das Init -Skript in /opt/etc/init.d/s51youtubeunblock verfügbar. Um den YouTubeunblock auszuführen, run /opt/etc/init.d/S51youtubeUnblock start
Beachten Sie, dass Sie den Zielkern mit NFNetLink_queue -Kernelmodul füttern sollten. Das Modul kann deaktiviert oder sogar nicht vorhanden sein. Entware S51YoutubeUnBlock versucht, KMODS auf eine Weise einzufügen. Wenn sie jedoch nicht von Software bereitgestellt werden, sollten Sie sie manuell installieren. Afaik on Keenetics hier ist ein Repository mit Modulen, die vom Kunden zusammengestellt wurden. Sie finden sie irgendwo in der Weboberfläche Ihres Geräts. Auf anderen Routern möchten Sie in diesem Fall möglicherweise tiefere Forschung durchführen und Ihre KMODS finden. Wenn Sie nichts finden, können Sie den Kunden nach GPL -Codes von Linux -Kernel (und können sogar OpenWrt) bitten und KMODS manuell kompilieren.
Sie sollten das Modul mit einfügen (dieser Schritt kann auf Entware und OpenWrt weggelassen werden):
modprobe nfnetlink_queue
Stellen Sie auf dem lokalen Host sicher, dass Sie in den folgenden Firewall -Regeln in die Ausgangskette wechseln.
youtubeUnblock.service
/usr/lib/systemd/system
/usr/bin/youtubeUnblock
kontrollieren Sie es manuell). Und systemctl start youtubeUnblock
.
Auf nftables sollten Sie die nächsten Nftables -Regeln festlegen:
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 '
Auf iptables sollten Sie die nächsten Iptables -Regeln festlegen:
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
Für IPv6 für Iptables müssen Sie die oben genannten Regeln für IP6Tables duplizieren:
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
Beachten Sie, dass die oben genannten Regeln ConnTrack verwenden, um nur erste 20 Pakete von der Verbindung zu YouTubeunblock zu leiten. Wenn Sie einige Probleme damit haben, versuchen Sie beispielsweise YouTubeUnBlock nicht YouTube, versuchen Sie, Connbytes aus den Regeln zu löschen. Aber es ist ein unwahrscheinliches Verhalten und Sie sollten wahrscheinlich Ihren Regeln überprüfen.
Sie können --queue-balance
mit mehreren Instanzen von YouTubeunblock zur Leistung verwenden. Dieses Verhalten wird durch Multithreading unterstützt. Einfach passieren --threads=n
wobei n für eine Anzahl von Threads steht, die Sie aktiviert werden möchten. Der N stand auf 1 . Die maximalen Threads sind standardmäßig 16 , können jedoch programmatisch geändert werden. Beachten Sie, dass, wenn Sie es erhöhen möchten, hier zu 100% Chance ist, dass Sie falsch sind.
Auch DNS über HTTPS wird für eine zusätzliche Anonymität bevorzugt.
Hier ist der Befehl, um zu testen, ob es funktioniert oder nicht:
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
Es sollte eine niedrige Geschwindigkeit ohne YouTubeunblock und schneller damit zurückgeben. Mit YouTubeunBlock sollte die Geschwindigkeit mit dem nächsten Befehl mit dem schnellen sein:
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
Legen Sie Flaggen an die binäre , kein Init -Skript. Wenn Sie auf OpenWrt sind, sollten Sie die Flags in das Skript einfügen: open /etc/init.d/youtubeUnblock
mit einem beliebigen Texteditor wie VI oder Nano und setzen Sie Ihre Flags nach procd_set_param command /usr/bin/youtubeUnblock
-Zeile ein.
Verfügbare Flaggen:
--sni-domains=<comma separated domain list>|all
Domänenlisten, die Sie von SNI behandeln möchten. Verwenden Sie diese Zeichenfolge, wenn Sie die Standarddomänenliste ändern möchten. Standardmäßig mit googlevideo.com,ggpht.com,ytimg.com,youtube.com,play.google.com,youtu.be,googleapis.com,googleusercontent.com,gstatic.com,l.google.com
. Sie können alles übergeben, wenn Sie möchten, dass jeder Clienthello behandelt wird. Sie können einige Domänen mit --exclude-domains
Flaggen ausschließen.
--exclude-domains=<comma separated domain list>
Liste der Domänen, die von der Targeting ausgeschlossen werden sollen.
--queue-num=<number of netfilter queue>
Die Anzahl der Netfilter-Warteschlangen -YouTubeunblock wird verknüpft. Standardeinstellungen zu 537 .
--fake-sni={0|1}
Dieses Flag ermöglicht Fake-Sni, das YouTubeunBlock zwingt, mindestens drei Pakete anstelle eines mit TLS ClientHello zu senden: Fake ClientHello , 1. Teil des ursprünglichen Clienthello , 2. Teil des ursprünglichen Clienthello . Dieses Flag kann mit einer Operation nicht zulässigen Fehlermeldungen in Verbindung gebracht werden. Bevor Sie ein Problem eröffnen, beziehen Sie sich auf die Fehlerbehebung bei Epermen. Standardmäßig 1 .
--fake-sni-seq-len=<length>
Dieses Flag gibt YouTubeunblock an, um einen komplizierten Konstruktion von gefälschten Kunden-Hallo-Paketen zu erstellen. Länge bestimmt, wie viel Fälschungen gesendet werden. Standardmäßig 1 .
--fake-sni-type={default|custom|random}
Dieses Flag gibt an, welcher Fälschungsnachrichtentyp für gefälschte Pakete verwendet werden soll. Für random
wird die Nachricht von Zufallslänge und mit zufälliger Nutzlast gesendet. Für default
wird die Standardnutzlast (SNI = www.google.com) verwendet. Und für die custom
Option wird die Nutzlast aus dem Abschnitt --fake-custom-payload
verwendet. default
Standard.
--fake-custom-payload=<payload>
Nützlich mit --fake-sni-type=custom
. Sie sollten die Nutzlast für gefälschte Nachricht manuell angeben. Verwenden Sie das HEX-Format: --fake-custom-payload=0001020304
Mittelwert, dass 5 Bytes-Sequenz: 0x00
, 0x01
, 0x02
, 0x03
, 0x04
als Fälschung verwendet werden.
--faking-strategy={randseq|ttl|tcp_check|pastseq|md5sum}
Dieses Flag bestimmt die Strategie der Ungültigkeit falscher Pakete. Standardeinstellungen nach randseq
randseq
gibt an, dass zufällige Sequenz/ReconedGemend -zufällige Random festgelegt wird. Diese Option kann vom Anbieter behandelt werden, der ConnTrack mit Drop auf ungültiger ConnTrack State Firewall -Regel verwendet wird.ttl
gibt an, dass das Paket nach --faking-ttl=n
hops ungültig wird. ttl
ist besser, kann aber Probleme verursachen, wenn sie nicht konfiguriert sind.pastseq
ist wie randseq
, aber die Sequenznummer ist nicht zufällig, verweist jedoch auf das in der Vergangenheit gesendete Paket (vor Strom).tcp_check
wird das Fälschungspaket mit ungültiger Prüfsumme ungültig machen. Kann von einigen Anbietern/Tspus behandelt und fallen gelassen werden.md5sum
wird das Fälschungspaket mit ungültigem TCP MD5SUM ungültig machen. MD5SUM ist eine TCP -Option, die vom Zielserver behandelt wird, kann jedoch von TSPU übersprungen werden. --faking-ttl=<ttl>
Tunniert die Zeit zum Leben (TTL) von gefälschten SNI-Nachrichten. TTL ist so angegeben, dass das Paket das DPI -System durchläuft und von ihm erfasst wird, aber nicht den Zielserver erreicht. Standardeinstellung auf 8 .
--fake-seq-offset
stimmt den Offset von der Originalsequenznummer für gefälschte Pakete ab. Wird von Randseq Faking Strategy verwendet. Standardeinstellungen bis 10000. Wenn 0, wird die zufällige Sequenznummer festgelegt.
--frag={tcp,ip,none}
Gibt die Fragmentierungsstrategie für das Paket an. TCP wird standardmäßig verwendet. Die IP -Fragmentierung kann durch DPI -System blockiert werden. Keiner gibt keine Fragmentierung an. Wahrscheinlich wird dies nicht funktionieren, aber kann für einige gefälschte SNI -Strategien funktionieren.
--frag-sni-reverse={0|1}
Gibt YouTubeunBlock an, um Clienthello- Fragmente in umgekehrter Reihenfolge zu senden. Standardmäßig 1 .
--frag-sni-faked={0|1}
Gibt YouTubeunBlock an, um gefälschte Pakete in der Nähe von ClientHello zu senden (füllt die Nutzlast mit Nulos). Standardmäßig 0 .
--frag-middle-sni={0|1}
Mit diesen Optionen aufteilt YouTubeunBlock das Paket in der Mitte der SNI-Daten. Standardmäßig 1.
--frag-sni-pos=<pos>
Mit dieser Option, die YouTubeunBlock das Paket an der Position POS aufteilt. Standardmäßig 1.
--quic-drop
fallen alle Quic-Pakete ab, die zu YouTubeunBlock gehen. Beeinflusst keine anderen UDP -Pakete. Geeignet für einige Fernseher. Beachten Sie, dass Sie für diese Option auch YouTubeunblock in Firewall Proxy -UDP hinzufügen sollten. connbytes
kann auch mit UDP verwendet werden.
--fk-winsize=<winsize>
Gibt die Fenstergröße für das fragmentierte TCP-Paket an. Anwendbar, wenn Sie die Antwort fragmentiert werden möchten. Kann die Initialisierung der Verbindung verlangsamen.
--synfake={1|0}
Wenn 1, wird vor jeder Anfrage die Syn-Nutzlast gesendet. Die Idee stammt aus Syndata aus dem Zapret Project. Die Syn -Nutzlast wird normalerweise von Endpunkt verworfen, kann jedoch von TSPU behandelt werden. Diese Option sendet eine normale Fälschung in dieser Nutzlast. Bitte beachten Sie, dass die Option für alle Websites funktioniert.
--synfake-len=<len>
Das in Synfake gesendete gefälschte Paket kann zu groß sein. Wenn Sie Probleme haben, senken Sie Synfake-Len. Wo Len dafür steht, wie viel Bytes als Syndata gesendet werden sollten. Pass 0 über, wenn Sie ein ganzes gefälschtes Paket senden möchten. Standardmäßig 0
--sni-detection={parse|brute}
Gibt an, wie SNI erfasst wird. Parse wird es normalerweise erkennen, indem er die Hello -Nachricht analysiert. Brute durchläuft die gesamte Nachricht und prüft die Möglichkeit des SNI -Vorkommens. Bitte beachten Sie, dass, wenn die Option --sni-domains
Option ist, nicht alle Brute o (nm) Zeitkomplexität sein wird, wobei N für die Länge der Nachricht und m die Anzahl der Domänen steht. Standardmäßig analysieren.
--seg2delay=<delay>
Diese Flagge erzwingt YouTubeunBlock , ein wenig zu warten, bevor er den zweiten Teil des Split-Pakets senden.
--silent
deaktiviert den ausführlichen Modus.
--trace
Ausführlichkeit für Debugging-Zwecke.
--no-gso
deaktiviert die Unterstützung für Google Chrome-Fettpakete, die GSO verwenden. Diese Funktion ist jetzt gut getestet, daher wird diese Flagge wahrscheinlich nichts beheben.
--no-ipv6
deaktiviert die Unterstützung für IPv6. Kann nützlich sein, wenn Sie nicht möchten, dass der IPv6 -Socket geöffnet wird.
--threads=<threads number>
Gibt die Anzahl der Threads an, die Sie für Ihr Programm ausführen möchten. Dies ist standardmäßig 1 und sollte nicht für den normalen Gebrauch bearbeitet werden. Aber wenn Sie wirklich mehrere Warteschlangeninstanzen von YouTubeUnBlock wünschen, sollten Sie-Queue-Num-Queue-Gleichgewicht ändern. Verwenden Sie beispielsweise mit 4 Threads- --queue-balance 537:540
auf Iptables und queue num 537-540
auf Nftables.
--packet-mark=<mark>
Verwenden Sie diese Option, wenn YouTubeunBlock mit anderen Systemen auf Paketmarke in Konflikt steht. Beachten Sie, dass Sie möglicherweise die Akzeptanzregel für Iptables ändern möchten, um der Marke zu folgen.
--fbegin
UND --fend
-FLAGS: YouTubeUnBlock unterstützt mehrere Strategiensätze für bestimmte Filter. Möglicherweise möchten Sie nach --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
Standard einen neuen Satz initiieren, z. --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
. Beachten Sie, dass die Priorität dieser Sets rückwärts geht: Letzteres ist zuerst, Standard (eine, die nicht mit -Fabingin) zuletzt ist. Wenn Sie den neuen Abschnitt starten, werden die Standardeinstellungen wie YouTubeunBlock ohne Parameter genauso implementiert. Beachten Sie, dass die obige Konfiguration nur ein Beispiel ist und für Sie nicht funktioniert.
Überprüfen Sie dieses Problem für nützliche Konfigurationen.
Wenn Sie Probleme mit einigen Websites haben und sicher sind, dass sie von SNI (z. Zunächst wird empfohlen, die Flagge zu versuchen --faking-strategy
und --frag-sni-faked=1
. Wenn Sie Probleme haben, wenn einige Websites in den Vorermacht sind, können Sie mit Flaggenwerten spielen. Zum Beispiel für jemanden --faking-strategy=ttl
funktioniert. Sie sollten ordnungsgemäß angeben --fake-sni-ttl=<ttl value>
wobei TTL die Menge an Hopfen zwischen Ihnen und DPI ist.
Wenn Sie in Chromium sind, müssen Sie möglicherweise Kyber deaktivieren (die Funktion, die den TLS ClientHello sehr groß macht). Ich habe das Problem mit dem Router damit, also mögliche Fehler zu entkommen. Daher ist es besser, es zu deaktivieren: In chrome://flags
suchen Sie nach Kyber und schalten Sie es in den behinderten Zustand. Alternativ können Sie --sni-detection=brute
und wahrscheinlich einstellen --sni-domains
-Flag.
Wenn Ihr Browser Quic verwendet, funktioniert dies möglicherweise nicht ordnungsgemäß. Deaktivieren Sie es in Chrome in chrome://flags
und in Firefox network.http.http{2,3}.enable(d)
in about:config
-Option.
Es scheint, als ob einige TSPus anfingen, falsche Pakete zu blockieren, also sollten Sie mit Fälschungsstrategien herumspielen. Ich persönlich empfehle, mit der md5sum
-Fälschungstrategie zu beginnen.
Fernseher sind die größten Kopfschmerzen.
In diesem Problem wurde das Problem gelöst. Und jetzt sollte YouTubeunblock mit Standardflaggen funktionieren. Wenn nicht, spielen Sie mit Fälschungsstrategien und anderen Flaggen herum. Möglicherweise müssen Sie auch Quic deaktivieren. Zu diesem Zweck können Sie --quic-drop
-Flag mit der richtigen Firewall-Konfiguration (Beschreibung des Flags überprüfen) verwenden. Beachten Sie, dass diese Flagge Gquic nicht deaktiviert und einige Fernseher möglicherweise darauf weitergeben. Um Gquic zu deaktivieren, müssen Sie den gesamten 443 -Port für UDP in der Firewall -Konfiguration blockieren:
Für nftables tun
nft insert rule inet fw4 forward ip saddr 192.168.. udp dport 443 counter drop
Für iptables
iptables -I OUTPUT --src 192.168.. -p udp --dport 443 -j DROP
Wo Sie 192.168 ersetzen müssen. Durch IP Ihres Fernsehers.
Eperm kann an vielen Orten auftreten, aber im Allgemeinen sind hier zwei: mnl_cb_run und beim Senden des Pakets über RAWSocket (RAW_FRAGS_Send und sende gefälschte SNI).
MNL_CB_RUN -Operation nicht zulässig zeigt, dass eine andere Instanz von YouTubeunblock auf der angegebenen Warteschlangen-Num ausgeführt wird.
Rawsocket Operation NICHT erlaubt zeigt, dass das Paket von den Nefilter -Regeln fallen gelassen wird. Tatsächlich ist dies ein Hinweis aus dem Kernel, dass etwas falsch ist und wir die Firewall -Regeln überprüfen sollten. Bevor wir in das Problem eintauchen, lassen Sie es uns sauber machen, wie die verstümmelten Pakete gesendet werden. Die Nefilter -Warteschlange bietet uns die Möglichkeit, das Paket in Fly zu merken, aber das ist für dieses Programm nicht geeignet, da wir das Paket auf mindestens zwei unabhängige Pakete teilen müssen. Daher verwenden wir Linux -Rohstecke, mit denen wir ein IPv4 -Paket senden können. Das Paket geht von der Ausgangskette aus, selbst wenn NFQUEUE vorwärts eingerichtet ist (geeignet für OpenWRT). Wir müssen uns also hier Paketverletzungen entziehen.
iptables -I OUTPUT -m mark --mark 32768/32768 -j ACCEPT
oder nft insert rule inet fw4 output mark and 0x8000 == 0x8000 counter accept
. Stellen Sie vor der Kompilierung sicher, dass gcc
, make
, autoconf
, automake
, pkg-config
und libtool
installiert sind. Für Fedora sollte auch glibc-static
installiert werden.
Kompilieren mit make
. Installieren Sie mit make install
. Das Paket umfasst libnetfilter_queue
, libnfnetlink
und libmnl
als statische Abhängigkeiten. Das Paket erfordert linux-headers
und Kernel, die mit NFQUEUE-Unterstützung von Netfilter gebaut wurden.
Das Paket ist auch mit Routern kompatibel. Der Router sollte durch Linux-basiertes System wie OpenWRT ausgeführt werden.
Sie können unter OpenWRT mit zwei Optionen bauen: Erstens - über die SDK, die bevorzugt wird, und zweitens ist manuell mit OpenWrt Toolchain ein Kreuzkompilieren.
OpenWRT bietet einen hochrangigen SDK für die Paketbaute.
Der erste Schritt besteht darin, OpenWRT SDK für Ihre spezifische Plattform herunterzuladen oder zu kompilieren. Der SDK kann nach diesem Tutorial zusammengestellt werden.
OpenWRT bietet neben dem RAW -Quellcode von SDK auch vorkompilierte SDKs für Ihren Router an. Sie finden es auf der Router -Seite. Zum Beispiel habe ich RAMIPS/MT76X8-basierter Router, so dass der SDK für mich unter https://downloads.openwrt.org/releass/23.05.3/targets/ramips/mt76x8/ ist und openwrt-sdk-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64
.
Sie müssen die SDK -Anforderungen in Ihrem System installieren, wenn Sie Probleme haben, verwenden Sie Docker Ubuntu: 24.04 -Bild. Stellen Sie sicher, dass Sie ein Nicht-Root-Benutzer sein, da einige MakeSystems damit fehlschlagen. Als nächstes Untar das SDK und die CD hinein.
Tun
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
Jetzt ist das Paket gebaut und Sie können es in den Router importieren. Finden Sie es in bin/packages/<target>/youtubeUnblock/youtubeUnblock-<version>.ipk
.
Die vorkompilierte Toolchain in der Nähe des SDK. Zum Beispiel wird es openwrt-toolchain-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64.tar.xz
genannt. Wenn Sie die Toolchain herunterladen, entaret sie irgendwo. Jetzt sind wir bereit für die Zusammenstellung. Mein Cross GCC hat mich gebeten, ein Staging -Dir dafür zu erstellen und als Umgebungsvariable zu bestehen. Außerdem sollten Sie Toolsuite -Pakete bemerken und meinen Befehl make -Befehl durch Ihren ersetzen.
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
Schauen Sie sich CROSS_COMPILE_PLATFORM
an, es wird von Autotools benötigt, aber ich denke, es ist nicht notwendig. Wie auch immer, ich habe mipsel-buildroot-linux-gnu
hier reingelegt. Für Ihren Router-Modellname ist ein Automake-Cross-Compile-Handbuch möglicherweise hilfreich.
Nach Abschluss der Zusammenstellung befindet sich die Binärdatei im Build -Verzeichnis. Kopieren Sie es in Ihren Router. Beachten Sie, dass ein SSH -Zugriff wahrscheinlich erforderlich ist, um fortzufahren. SSHFs funktionieren nicht auf meinem Modell, daher habe ich die Anwendung über Software -Upload -Paket -Seite an den Router injiziert. Es hat mir einen Fehler gegeben, aber auch a /tmp/upload.ipk
-Datei, die ich in Root Directory, chmod +x
IT kopiert habe und ausgeführt habe.
In diesem Abschnitt wird die Kernel -Modulversion von YouTubeunBlock beschrieben. Das Kernel -Modul arbeitet als normales Modul im Kernel und integriert sich in den Netfilter -Stapel, um die über das Internet gesendeten Pakete auf Staurlos zu fördern.
Sie können das Modul mit seinen Flags in INSMOD konfigurieren:
insmod kyoutubeUnblock.ko fake_sni=1 exclude_domains=.ru quic_drop=1
Beachten Sie, dass sich die Flagsnamen von denen unterscheiden, die für den regulären YouTubeunBlock verwendet werden (direkt wie in der UCI -Konfiguration für OpenWRT): Ersetzen Sie -
durch _
und ohne Führung --
. Um Toggers auch zu konfigurieren, sollten Sie sie auf 1
einstellen ( quic_drop=1
)
Auch ein gutes, um erwähntes Tat zu erwähnen, ist Ausführlichkeit. Das Kernel -Modul kombiniert -übertrieben und -klasse Option zu der einen verbosity
. Dieser Parameter akzeptiert 3 Argumente: trace
, debug
und silent
. Ich empfehle nicht, trace
Mod auf dem Router zu aktivieren, da dies große Probleme bei der Leistung verursachen und Ihr Gerät sogar einfrieren kann.
Auch ein Rückgang des Ersatzes wird für alle Parameter mit Ausnahme der Paketmarke unterstützt. Für ein Ersatzabfall muss kein Modul neu gestartet werden, wenn Sie die Parameter ändern möchten. Sie können die Parameter im Verzeichnis des Moduls im Verzeichnis des /sys/module/kyoutubeUnblock/parameters/
angeben und überprüfen. Um beispielsweise Quic_drop auf true festzulegen, können Sie den nächsten Befehl verwenden:
echo 1 | sudo tee /sys/module/kyoutubeUnblock/parameters/quic_drop
Und
cat /sys/module/kyoutubeUnblock/parameters/quic_drop
So überprüfen Sie den Parameter.
Um das Kernel-Modul auf Ihrem Host-System zu erstellen, sollten Sie linux-headers
installieren, die Build Wesentliche Tools und gcc
Compiler Suite bereitstellen. Auf dem Hostsystem können Sie das Modul mit erstellen
make kmake
Um das Modul für einen externen Kernel zu bauen, sollten Sie diesen Kernel lokal bauen und darauf Punkt machen. Verwenden Sie KERNEL_BUILDER_MAKEDIR=~/linux
-Flag zum Beispiel:
make kmake KERNEL_BUILDER_MAKEDIR=~/linux
Beachten Sie, dass der Kernel bereits konfiguriert und erstellt werden sollte. Weitere Informationen zu Ihrem speziellen Fall finden Sie unter Linux -Kernel -Gebäudehandbüchern.
Das Aufbau mit OpenWRT SDK ist keine so schwierige Sache. Das einzige, was Sie tun sollten, ist, den SDK zu erhalten. Sie können es finden, indem Sie Ihre Architektur und Version des derzeit verwendeten OpenWRT suchen. Sie sollten die genau Ihre Version von OpenWRT verwenden, da sich die Kernel dort häufig ändern. Sie finden das SDK auf zwei Arten: indem Sie ihn von ihrer Website herunterladen oder den OpenWRT SDK Docker -Container verwenden (empfohlen).
Wenn Sie sich für das Herunterladen des TAR-Archivs entscheiden, befolgen Sie die nächsten Schritte: Für mich lebt das Archiv in https://downloads.openwrt.org/releases/23.05.3/targets/ramips/mt76x8/ und namens openwrt-sdk-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64
. Sie müssen die SDK -Anforderungen in Ihrem System installieren, wenn Sie Probleme haben, verwenden Sie Docker Ubuntu: 24.04 -Bild. Stellen Sie sicher, dass Sie ein Nicht-Root-Benutzer sein, da einige MakeSystems damit fehlschlagen. Als nächstes Untar das SDK und die CD hinein.
Oder Sie können das Docker-Bild mit SDK integriert: https://hub.docker.com/u/openwrt/sdk. In meinem Fall hat das Bild Tag ramips-mt76x8-23.05.3
. Eine gute Sache hier ist, dass Sie keine Abhängigkeiten im Docker -Container installieren müssen. Auch Docker Hub hat eine perfekte Suche in Tags, wenn Sie sich nicht sicher sind, welches Ihrem Gerät entspricht.
Wenn Sie das SDK auspackt/installiert haben, können Sie mit dem Bau des Kernel -Moduls beginnen.
Tun
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
Wenn die Befehle fertig sind, ist das Modul fertig. Finden Sie es mit find bin -name "kmod-youtubeUnblock*.ipk"
, kopieren Sie Ihren Host und installieren Sie sie über GUI -Software -Schnittstelle an den Router. Das Modul sollte sofort beginnen. Wenn nicht, modprobe kyoutubeUnblock
.
YouTubeunblock kann auch auf Padavan laufen. Überprüfen Sie hier das Handbuch [RUS]
Wenn Sie Fragen/Vorschläge/Probleme haben, können Sie ein Problem öffnen.