Sistem Inspeksi Paket Deep Packet (DPI) yang bergantung pada SNI. Paketnya hanya untuk Linux. Ini juga sepenuhnya kompatibel dengan router yang menjalankan OpenWrt.
Program ini terutama dikembangkan untuk memotong pemadaman YouTube di 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.
Program ini didistribusikan dalam dua versi:
Program ini kompatibel dengan router berdasarkan OpenWRT, Entware (Keenetic/Asus) dan mesin host. Program ini menawarkan binari melalui tindakan GitHub. Binari juga tersedia melalui rilis GitHub. Gunakan pra-rilis terbaru untuk pembangunan terbaru. Lihatlah tindakan GitHub jika Anda ingin melihat semua binari yang pernah dikompilasi. Anda harus mengetahui arcitecture perangkat keras Anda untuk menggunakan binari. Di OpenWrt Anda dapat memeriksanya dengan perintah grep ARCH /etc/openwrt_release
.
Baik OpenWRT dan Entware menginstal program dengan OPKG. Jika Anda mendapat kesalahan sistem file -read -only, Anda dapat membongkar biner secara manual atau menentukan OPKG Path opkg -o <destdir>
.
Untuk Windows menggunakan Goodbyedpi oleh Valdikss (Anda dapat menemukan cara menggunakannya untuk YouTube di sini) Perilaku yang sama juga diimplementasikan dalam paket Zapret untuk Linux.
Saat Anda mendapatkan paket rilis, Anda harus menginstalnya. Buka antarmuka router Anda, ke System-> Software , lakukan daftar pembaruan dan instal youtubeunblock melalui tombol install_package . Kemudian, Anda harus pergi ke menu sistem-startup dan memuat ulang firewall (Anda juga dapat melakukannya dalam layanan-> menu youtubeunblock ).
Untuk membuatnya berfungsi, Anda harus mendaftarkan aturan ptables dan menginstal modul kernel yang diperlukan. Daftar modul tergantung pada versi OpenWRT dan firewall mana yang Anda gunakan (ptables atau nftables). Untuk sebagian besar versi modern dari OpenWrt (v23.x, v22.x) Anda harus menggunakan aturan nftables, untuk yang lebih tua tergantung, tetapi biasanya ptable.
Ketergantungan umum adalah
kmod-nfnetlink-queue
tetapi disediakan sebagai ketergantungan untuk paket firewall lain.
Jadi, jika Anda berada di ptables, Anda harus menginstal:
kmod-ipt-nfqueue
iptables-mod-nfqueue
kmod-ipt-conntrack-extra
iptables-mod-conntrack-extra
Dan tentu saja, aplikasi ruang pengguna IPLABLES harus tersedia.
Pada nftables dependensi adalah:
kmod-nft-queue
kmod-nf-conntrack
Langkah selanjutnya adalah menambahkan aturan firewall yang diperlukan.
Untuk nftables pada aturan openwrt datang di luar kotak dan disimpan di bawah /usr/share/nftables.d/ruleset-post/537-youtubeUnblock.nft
. Yang Anda butuhkan hanyalah menginstal persyaratan dan melakukan /etc/init.d/firewall reload
. Jika tidak, buka konfigurasi firewall.
Sekarang kita pergi ke konfigurasi. Untuk OpenWrt di sini adalah konfigurasi melalui UCI dan Luci tersedia (CLI dan GUI masing -masing).
Untuk Luci alias GUI alias Web-antarmuka router, Anda harus menginstal paket Luci-App-youtubeunblock seperti yang Anda lakukan dengan paket youtubeunblock normal. Catatan, bahwa daftar umpan OPKG resmi harus dimuat ( lakukan dengan opsi daftar pembaruan ).
Jika Anda mendapatkan * pkg_hash_check_unresolved: cannot find dependency luci-lua-runtime for luci-app-youtubeUnblock
, Anda menggunakan OpenWrt lama. Instal Paket Dummy ini. Periksa komentar ini untuk detail lebih lanjut.
Konfigurasi LUCI tinggal di bagian Layanan-> Bagian YouTubeunblock . Ini deskriptif diri, dengan deskripsi untuk setiap bendera. Catatan, bahwa setelah Anda menekan tombol Save & Apply
, konfigurasi diterapkan secara otomatis dan layanan dimulai kembali.
Konfigurasi UCI tersedia di/etc/config/youtubeunblock file, di bagian youtubeUnblock.youtubeUnblock
. Konfigurasi dilakukan dengan bendera. Perhatikan, bahwa nama -nama bendera tidak sama: Anda harus mengganti -
dengan _
, Anda tidak boleh menggunakan bendera utama --
untuk bendera. Anda juga akan mengaktifkan bendera sakelar (tanpa parameter) dengan 1
.
Misalnya, untuk mengaktifkan log jejak yang harus Anda lakukan
uci set youtubeUnblock.youtubeUnblock.trace=1
Anda dapat memeriksa log dalam mode CLI dengan logread -l 200 | grep youtubeUnblock
perintah logread -l 200 | grep youtubeUnblock
.
Untuk UCI, untuk menyimpan konfigurasi Anda harus melakukan uci commit
dan kemudian reload_config
untuk memulai kembali youtubeunblock
Dalam mode CLI Anda akan menggunakan youtubeunblock sebagai layanan init.d normal: misalnya, Anda dapat mengaktifkannya dengan /etc/init.d/youtubeUnblock enable
.
Untuk Entware on Keenetic di sini adalah panduan instalasi (Rusia).
Instal biner dengan opkg install youtubeUnblock-*.ipk
. Setelah instalasi, biner in/opt/bin dan skrip init di /opt/etc/init.d/s51youtubeunblock akan tersedia. Untuk menjalankan youtubeunblock, cukup jalankan /opt/etc/init.d/S51youtubeUnblock start
Perhatikan, bahwa Anda harus memberi makan kernel target dengan modul kernel nfnetlink_queue. Modul dapat dinonaktifkan atau bahkan tidak ada. Entware S51YoutubeunBlock akan mencoba memasukkan KMOD dengan cara apa pun tetapi jika tidak disediakan oleh perangkat lunak, Anda harus menginstalnya secara manual. Afaik on Keenetics Berikut adalah repositori dengan modul yang dikompilasi oleh pelanggan. Anda dapat menemukannya di suatu tempat di antarmuka web perangkat Anda. Pada router lain, Anda mungkin ingin melakukan penelitian yang lebih dalam dalam kasus itu dan menemukan KMOD Anda. Jika Anda tidak dapat menemukan apa pun, Anda dapat meminta pelanggan untuk Kode GPL Kernel Linux (dan bahkan mungkin OpenWrt) dan menyusun KMOD secara manual.
Anda harus memasukkan modul dengan (langkah ini dapat dihilangkan pada entware dan openwrt):
modprobe nfnetlink_queue
Pada tuan rumah lokal pastikan untuk berubah maju ke rantai output dalam aturan firewall berikut.
Salin youtubeUnblock.service
to /usr/lib/systemd/system
(Anda harus mengubah jalur di dalam file ke posisi program, misalnya /usr/bin/youtubeUnblock
, juga Anda mungkin ingin menghapus penambahan aturan ptables default ke file systemd ke untuk ke file untuk ke file untuk ke file untuk ke file untuk ke file untuk ke file ke untuk file ke untuk file untuk mengontrolnya secara manual). Dan jalankan systemctl start youtubeUnblock
.
Pada nftables Anda harus menempatkan aturan nftable berikutnya:
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 '
Pada iptables Anda harus menempatkan aturan ptables berikutnya:
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
Untuk IPv6 pada iptables, Anda perlu menduplikasi aturan di atas untuk 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
Perhatikan bahwa aturan di atas menggunakan Conntrack untuk hanya merutekan 20 paket pertama dari koneksi ke youtubeunblock . Jika Anda mendapat beberapa masalah dengan itu, misalnya YouTubeunBlock tidak mendeteksi YouTube, cobalah untuk menghapus Connbytes dari aturan. Tapi itu adalah perilaku yang tidak mungkin dan Anda mungkin harus memeriksa aturan Anda.
Anda dapat menggunakan --queue-balance
dengan beberapa contoh youtubeunblock untuk kinerja. Perilaku ini didukung melalui multithreading. Lewati saja --threads=n
di mana n singkatan dari sejumlah utas yang ingin Anda aktifkan. N default ke 1 . Utas maksimum default menjadi 16 tetapi dapat diubah secara terprogram. Perhatikan, bahwa jika Anda akan meningkatkannya, berikut adalah kemungkinan 100% Anda berada di jalan yang salah.
Juga DNS daripada HTTPS lebih disukai untuk anonimitas tambahan.
Berikut perintah untuk menguji apakah itu berfungsi atau tidak:
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
Ini harus mengembalikan kecepatan rendah tanpa youtubeunblock dan lebih cepat dengan itu. Dengan youtubeunblock kecepatannya harus sama dengan cepat dengan perintah berikutnya:
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
Masukkan bendera ke biner , bukan skrip init. Jika Anda berada di OpenWrt, Anda harus memasukkan bendera di dalam skrip: buka /etc/init.d/youtubeUnblock
dengan editor teks apa pun, seperti VI atau Nano dan letakkan bendera Anda setelah procd_set_param command /usr/bin/youtubeUnblock
baris.
Bendera yang tersedia:
--sni-domains=<comma separated domain list>|all
daftar domain yang ingin Anda tangani oleh SNI. Gunakan string ini jika Anda ingin mengubah daftar domain default. Default ke googlevideo.com,ggpht.com,ytimg.com,youtube.com,play.google.com,youtu.be,googleapis.com,googleusercontent.com,gstatic.com,l.google.com
. Anda dapat melewati semua jika Anda ingin setiap clienthello ditangani. Anda dapat mengecualikan beberapa domain dengan bendera --exclude-domains
.
--exclude-domains=<comma separated domain list>
Daftar domain yang akan dikecualikan dari Targetting.
--queue-num=<number of netfilter queue>
Jumlah NetFilter Antrian YouTubeunBlock akan ditautkan. Default ke 537 .
--fake-sni={0|1}
Bendera ini memungkinkan palsu-sni yang memaksa Youtubeunblock untuk mengirim setidaknya tiga paket, bukan satu dengan TLS ClientHello : Fake ClientHello , bagian pertama dari ClientHello asli, bagian ke-2 dari ClientHello asli. Bendera ini mungkin terkait dengan beberapa operasi yang tidak diizinkan pesan kesalahan, jadi sebelum buka masalah, lihat pemecahan masalah untuk ePerms. Default ke 1 .
--fake-sni-seq-len=<length>
Bendera ini menentukan YouTubeunblock untuk membangun konstruksi rumit paket Hello klien palsu. Panjang menentukan berapa banyak pemalsuan yang akan dikirim. Default ke 1 .
--fake-sni-type={default|custom|random}
Bendera ini menentukan jenis pesan yang memalsukan yang harus digunakan untuk paket palsu. Untuk random
, pesan dengan panjang acak dan dengan muatan acak akan dikirim. Untuk default
payload default (SNI = www.google.com) digunakan. Dan untuk opsi custom
, bagian muatan dari --fake-custom-payload
yang digunakan. Default ke default
.
--fake-custom-payload=<payload>
Berguna dengan --fake-sni-type=custom
. Anda harus menentukan muatan untuk pesan palsu secara manual. Gunakan format hex: --fake-custom-payload=0001020304
Berarti bahwa urutan 5 byte: 0x00
, 0x01
, 0x02
, 0x03
, 0x04
Digunakan sebagai palsu.
--faking-strategy={randseq|ttl|tcp_check|pastseq|md5sum}
bendera ini menentukan strategi paket palsu yang tidak validasi. Default ke randseq
randseq
menentukan bahwa urutan acak/AcnowledGemend acak akan ditetapkan. Opsi ini dapat ditangani oleh penyedia yang menggunakan Conntrack dengan drop pada aturan Firewall State Conntrack Invalid diaktifkan.ttl
menentukan bahwa paket akan dibatalkan setelah --faking-ttl=n
hop. ttl
lebih baik tetapi dapat menyebabkan masalah jika tidak dikonfigurasikan.pastseq
seperti randseq
tetapi nomor urutan tidak acak tetapi referensi paket yang dikirim di masa lalu (sebelum saat ini).tcp_check
akan membatalkan paket pemalsuan dengan checksum tidak valid. Dapat ditangani dan dijatuhkan oleh beberapa penyedia/TSPU.md5sum
akan membatalkan paket pemalsuan dengan TCP MD5SUM yang tidak valid. MD5SUM adalah opsi TCP yang ditangani oleh server tujuan tetapi dapat dilewati oleh TSPU. --faking-ttl=<ttl>
Menyokong waktu untuk hidup (TTL) dari pesan SNI palsu. TTL ditentukan seperti bahwa paket akan melalui sistem DPI dan ditangkap olehnya, tetapi tidak akan mencapai server tujuan. Default ke 8 .
--fake-seq-offset
Tunes offset dari nomor urutan asli untuk paket palsu. Digunakan oleh strategi pemalsuan Randseq. Default ke 10000. Jika 0, nomor urutan acak akan ditetapkan.
--frag={tcp,ip,none}
menentukan strategi fragmentasi untuk paket. TCP digunakan secara default. Fragmentasi IP dapat diblokir oleh sistem DPI. Tidak ada yang menentukan tidak ada fragmentasi. Mungkin ini tidak akan berhasil, tetapi mungkin akan bekerja untuk beberapa strategi SNI palsu.
--frag-sni-reverse={0|1}
Menentukan YouTubeunblock untuk mengirim fragmen ClientHello dalam urutan terbalik. Default ke 1 .
--frag-sni-faked={0|1}
Menentukan YouTubeunblock untuk mengirim paket palsu di dekat ClientHello (mengisi muatan dengan nol). Default ke 0 .
--frag-middle-sni={0|1}
Dengan opsi ini youtubeunblock akan membagi paket di tengah data SNI. Default ke 1.
--frag-sni-pos=<pos>
Dengan opsi ini youtubeunblock akan membagi paket di posisi pos. Default ke 1.
--quic-drop
drop Semua paket quic yang masuk ke youtubeunblock. Tidak akan mempengaruhi paket UDP lainnya. Cocok untuk beberapa TV. Perhatikan, bahwa agar opsi ini berfungsi, Anda juga harus menambahkan proxy UDP ke youtubeunblock di firewall. connbytes
juga dapat digunakan dengan UDP.
--fk-winsize=<winsize>
Menentukan ukuran jendela untuk paket TCP yang terfragmentasi. Berlaku jika Anda ingin respons terfragmentasi. Dapat inisialisasi koneksi perlambatan.
--synfake={1|0}
Jika 1, payload syn akan dikirim sebelum setiap permintaan. Idenya diambil dari sindata dari proyek Zapret. Syn Payload biasanya akan dibuang dengan titik akhir tetapi dapat ditangani oleh TSPU. Opsi ini mengirim palsu normal dalam muatan itu. Harap dicatat, bahwa opsi tersebut berfungsi untuk semua situs, jadi--sni-domain tidak akan mengubah apa pun.
--synfake-len=<len>
Paket palsu yang dikirim dalam sinfake mungkin terlalu besar. Jika Anda mengalami masalah, turunkan Synfake-Len. Di mana Len adalah singkatan dari berapa banyak byte harus dikirim sebagai sindata. Lulus 0 jika Anda ingin mengirim seluruh paket palsu. Default ke 0
--sni-detection={parse|brute}
menentukan cara mendeteksi SNI. Parse biasanya akan mendeteksinya dengan parsing pesan Hello klien. Brute akan melalui seluruh pesan dan memeriksa kemungkinan kejadian SNI. Harap dicatat, bahwa ketika opsi --sni-domains
tidak semuanya brute akan menjadi kompleksitas waktu O (nm) di mana N adalah singkatan dari panjang pesan dan m adalah jumlah domain. Default untuk parse.
--seg2delay=<delay>
Bendera ini memaksa Youtubeunblock untuk menunggu sedikit sebelum mengirim bagian ke-2 dari paket split.
--silent
menonaktifkan mode verbose.
--trace
Verbositas maksimum untuk tujuan debugging.
--no-gso
menonaktifkan dukungan untuk paket lemak Google Chrome yang menggunakan GSO. Fitur ini diuji dengan baik sekarang, jadi bendera ini mungkin tidak akan memperbaiki apa pun.
--no-ipv6
menonaktifkan dukungan untuk IPv6. Mungkin berguna jika Anda tidak ingin soket IPv6 dibuka.
--threads=<threads number>
Menentukan jumlah utas yang ingin Anda jalankan untuk program Anda. Default ini menjadi 1 dan tidak boleh diedit untuk penggunaan normal. Tetapi jika Anda benar-benar menginginkan beberapa contoh antrian youtubeunblock, perhatikan bahwa Anda harus mengubah-Queue-num menjadi-keseimbangan. Misalnya, dengan 4 utas, gunakan --queue-balance 537:540
pada ptables dan queue num 537-540
pada nftables.
--packet-mark=<mark>
Gunakan opsi ini jika YouTubeunblock bertentangan dengan sistem lain bergantung pada tanda paket. Perhatikan bahwa Anda mungkin ingin mengubah aturan menerima untuk iptables untuk mengikuti tanda.
--fbegin
dan --fend
Flags: YouTubeunBlock mendukung beberapa set strategi untuk filter tertentu. Anda mungkin ingin memulai set baru setelah yang default, seperti: --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
. Perhatikan, bahwa prioritas set ini mundur: terakhir adalah yang pertama, default (yang tidak dimulai dengan --fbegin) adalah yang terakhir. Jika Anda memulai bagian baru, pengaturan default diimplementasikan seperti youtubeunblock tanpa parameter apa pun. Perhatikan bahwa konfigurasi di atas hanyalah sebuah contoh dan tidak akan berhasil untuk Anda.
Periksa masalah ini untuk konfigurasi yang berguna.
Jika Anda mendapat masalah dengan beberapa situs dan Anda yakin mereka diblokir oleh SNI (misalnya YouTube), penggunaan dapat bermain -main dengan bendera dan kombinasi mereka. Pada awalnya disarankan untuk mencoba --faking-strategy
dan --frag-sni-faked=1
. Jika Anda memiliki masalah dengan beberapa situs yang diproksi, Anda dapat bermain dengan nilai bendera. Misalnya, untuk seseorang --faking-strategy=ttl
berfungsi. Anda harus menentukan tepat --fake-sni-ttl=<ttl value>
di mana TTL adalah jumlah hop antara Anda dan DPI.
Jika Anda menggunakan Chromium, Anda mungkin harus menonaktifkan Kyber (fitur yang membuat ClientHello TLS sangat besar). Saya punya masalah dengan itu di router, jadi untuk menghindari kesalahan yang mungkin, jadi lebih baik untuk menonaktifkannya: di chrome://flags
mencari Kyber dan beralih ke keadaan cacat. Atau Anda dapat mengatur --sni-detection=brute
dan mungkin menyesuaikan --sni-domains
bendera.
Jika browser Anda menggunakan quic, itu mungkin tidak berfungsi dengan baik. Nonaktifkan di Chrome in chrome://flags
dan di firefox network.http.http{2,3}.enable(d)
di about:config
.
Sepertinya beberapa TSPU mulai memblokir paket WALITSEQ, jadi Anda harus bermain -main dengan strategi pemalsuan. Saya pribadi merekomendasikan untuk memulai dengan strategi pemalsuan md5sum
.
Televisi adalah sakit kepala terbesar.
Dalam masalah ini masalah telah diselesaikan. Dan sekarang youtubeunblock harus bekerja dengan bendera default. Jika tidak, mainkan dengan strategi berpura -pura dan bendera lainnya. Anda juga harus menonaktifkan quic. Untuk melakukannya, Anda dapat menggunakan --quic-drop
dengan konfigurasi firewall yang tepat (periksa deskripsi bendera). Perhatikan, bahwa bendera ini tidak akan menonaktifkan GQUIC dan beberapa TV dapat menyampaikannya. Untuk menonaktifkan GQUIC, Anda harus memblokir seluruh port 443 untuk UDP dalam konfigurasi firewall:
Untuk nftable do
nft insert rule inet fw4 forward ip saddr 192.168.. udp dport 443 counter drop
Untuk ptables
iptables -I OUTPUT --src 192.168.. -p udp --dport 443 -j DROP
Di mana Anda harus mengganti 192.168 .. dengan IP televisi Anda.
EPERM dapat terjadi di banyak tempat tetapi umumnya di sini ada dua: mnl_cb_run dan saat mengirim paket melalui rawsocket (RAW_FRAGS_SEND dan mengirim SNI palsu).
Operasi MNL_CB_Run tidak diizinkan menunjukkan bahwa contoh lain dari YouTubeunblock sedang berjalan pada antrian yang ditentukan.
Operasi Rawsocket tidak diizinkan menunjukkan bahwa paket sedang dijatuhkan oleh aturan nefilter. Sebenarnya ini adalah petunjuk dari kernel bahwa sesuatu yang salah sedang terjadi dan kita harus memeriksa aturan firewall. Sebelum menyelam ke dalam masalah, mari kita membersihkan bagaimana paket yang hancur dikirim. Nefilter Queue memberi kita kemampuan untuk mengayuh paket dengan cepat tetapi itu tidak cocok untuk program ini karena kita perlu membagi paket untuk setidaknya dua paket independen. Jadi kami menggunakan soket mentah Linux yang memungkinkan kami mengirim paket IPv4 apa pun. Paket tersebut beralih dari rantai output bahkan ketika NFQUEUE diatur pada ke depan (cocok untuk OpenWRT). Jadi kita perlu melarikan diri dari penolakan paket di sini.
iptables -I OUTPUT -m mark --mark 32768/32768 -j ACCEPT
atau nft insert rule inet fw4 output mark and 0x8000 == 0x8000 counter accept
. Sebelum Kompilasi Pastikan gcc
, make
, autoconf
, automake
, pkg-config
dan libtool
dipasang. Untuk Fedora glibc-static
juga harus dipasang.
Dikompilasi dengan make
. Instal dengan make install
. Paket termasuk libnetfilter_queue
, libnfnetlink
dan libmnl
sebagai dependensi statis. Paket ini membutuhkan linux-headers
dan kernel yang dibangun dengan dukungan NetFilter NFQueue.
Paket ini juga kompatibel dengan router. Router harus berjalan dengan sistem berbasis Linux seperti OpenWRT.
Anda dapat membangun di bawah OpenWrt dengan dua opsi: pertama - melalui SDK, yang lebih disukai dan kedua adalah kompilasi silang secara manual dengan toolchain openwrt.
OpenWRT menyediakan SDK tingkat tinggi untuk pembuatan paket.
Langkah pertama adalah mengunduh atau mengkompilasi OpenWrt SDK untuk platform spesifik Anda. SDK dapat dikompilasi sesuai dengan tutorial ini.
Selain kode sumber mentah SDK, OpenWRT juga menawarkan SDK yang dikompilasi untuk router Anda. Anda dapat menemukannya di halaman router. Misalnya, saya memiliki router berbasis RAMIPS/MT76X8 jadi bagi saya SDK ada di https://downloads.openwrt.org/releases/23.05.3/targets/ramips/mt76x8/ dan disebut openwrt-sdk-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64
.
Anda perlu menginstal persyaratan SDK di sistem Anda jika Anda memiliki masalah, gunakan Docker Ubuntu: 24.04 gambar. Pastikan menjadi pengguna non-root karena beberapa sistem make-made gagal dengannya. Selanjutnya, untar SDK dan CD ke dalamnya.
Melakukan
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
Sekarang paket dibangun dan Anda dapat mengimpornya ke router. Temukan di bin/packages/<target>/youtubeUnblock/youtubeUnblock-<version>.ipk
.
Toolchain yang telah dikompilasi yang terletak di dekat SDK. Misalnya disebut openwrt-toolchain-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64.tar.xz
. Saat Anda mengunduh toolchain, untarnya di suatu tempat. Sekarang kami siap untuk kompilasi. Cross GCC saya meminta saya untuk membuat Dir pementasan untuk itu dan meneruskannya sebagai variabel lingkungan. Anda juga harus melihat paket ToolSuite dan mengganti perintah Make saya dengan milik Anda.
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
Lihatlah CROSS_COMPILE_PLATFORM
diperlukan oleh autotools tapi saya pikir itu tidak perlu. Ngomong-ngomong, saya meletakkan mipsel-buildroot-linux-gnu
di sini. Untuk nama model router Anda, mungkin manual kompilasi lintas otomatis akan sangat membantu.
Ketika kompilasi selesai, file biner akan berada di Direktori Build. Salin ke router Anda. Perhatikan bahwa akses SSH cenderung diperlukan untuk melanjutkan. SSHFS tidak berfungsi pada model saya sehingga saya menyuntikkan aplikasi ke router melalui halaman paket unggah perangkat lunak . Ini telah memberi saya kesalahan, tetapi juga file /tmp/upload.ipk
yang saya salin di direktori root, chmod +x
it and run.
Bagian ini menjelaskan versi modul kernel dari youtubeunblock. Modul kernel beroperasi sebagai modul normal di dalam kernel dan terintegrasi di dalam tumpukan NetFilter untuk tanpa statis mengayuh paket yang dikirim melalui internet.
Anda dapat mengonfigurasi modul dengan bendera di Insmod:
insmod kyoutubeUnblock.ko fake_sni=1 exclude_domains=.ru quic_drop=1
Perhatikan bahwa nama flag berbeda dari yang digunakan untuk youtubeunblock biasa (benar seperti dalam konfigurasi UCI untuk OpenWrt): ganti -
dengan _
dan tanpa memimpin --
. Juga untuk mengonfigurasi pengenal Anda harus mengaturnya ke 1
( quic_drop=1
)
Juga Thig yang bagus untuk disebutkan adalah verbositas. Modul kernel menggabungkan -trace dan -opsi -silent untuk satu parameter verbosity
. Parameter ini menerima 3 argumen: trace
, debug
dan silent
. Saya sangat tidak merekomendasikan untuk mengaktifkan trace
Mod pada router karena dapat menyebabkan masalah besar dengan kinerja dan bahkan membekukan perangkat Anda.
Juga penurunan penggantian didukung untuk semua parameter tidak termasuk tanda paket. Penurunan penggantian tidak memerlukan restart modul jika Anda ingin mengubah parameter. Anda dapat menentukan dan memeriksa parameter dalam direktori modul di dalam sysfs: /sys/module/kyoutubeUnblock/parameters/
. Misalnya, untuk mengatur quic_drop ke true Anda dapat menggunakan perintah berikutnya:
echo 1 | sudo tee /sys/module/kyoutubeUnblock/parameters/quic_drop
Dan
cat /sys/module/kyoutubeUnblock/parameters/quic_drop
untuk memeriksa parameter.
Untuk membangun modul kernel di sistem host Anda, Anda harus menginstal linux-headers
yang akan menyediakan alat penting build dan suite gcc
compiler. Pada sistem host Anda dapat membangun modul dengan
make kmake
Untuk membangun modul untuk kernel eksternal, Anda harus membangun kernel itu secara lokal dan point membuatnya. Gunakan KERNEL_BUILDER_MAKEDIR=~/linux
bendera untuk membuat, misalnya:
make kmake KERNEL_BUILDER_MAKEDIR=~/linux
Perhatikan, bahwa kernel harus sudah dikonfigurasi dan dibangun. Lihat Manual Bangunan Kernel Linux untuk informasi lebih lanjut tentang kasus spesifik Anda.
Membangun dengan OpenWrt SDK bukanlah hal yang sulit. Satu -satunya hal yang harus Anda lakukan adalah mendapatkan SDK. Anda dapat menemukannya dengan melihat arsitektur dan versi OpenWrt yang saat ini digunakan. Anda harus menggunakan persis versi OpenWrt Anda karena kernel di sana sering berubah. Anda dapat menemukan SDK dalam dua cara: dengan mengunduhnya dari situs mereka atau dengan menggunakan wadah Docker OpenWrt SDK (disarankan).
Jika Anda memutuskan untuk mengunduh arsip tar, ikuti langkah selanjutnya: Bagi saya arsip tinggal di https://downloads.openwrt.org/releases/23.05.3/targets/ramips/mt76x8/ dan disebut openwrt-sdk-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64
. Anda perlu menginstal persyaratan SDK di sistem Anda jika Anda memiliki masalah, gunakan Docker Ubuntu: 24.04 gambar. Pastikan menjadi pengguna non-root karena beberapa sistem make-made gagal dengannya. Selanjutnya, untar SDK dan CD ke dalamnya.
Atau Anda dapat memperoleh gambar Docker dengan SDK built-in: https://hub.docker.com/u/openwrt/sdk. Dalam kasus saya gambar memiliki tag ramips-mt76x8-23.05.3
. Hal yang baik di sini adalah Anda tidak perlu menginstal ketergantungan apa pun di dalam wadah Docker. Juga Docker Hub memiliki pencarian yang sempurna di sekitar tag jika Anda tidak yakin mana yang sesuai dengan perangkat Anda.
Saat Anda membongkar/memasang SDK, Anda siap untuk mulai dengan membangun modul kernel.
Melakukan
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
Ketika perintah selesai, modul sudah siap. Temukan dengan find bin -name "kmod-youtubeUnblock*.ipk"
, salin ke host Anda dan instal ke router melalui antarmuka perangkat lunak GUI. Modul harus segera dimulai. Jika tidak, lakukan modprobe kyoutubeUnblock
.
YouTubeunBlock juga dapat berjalan di Padavan. Periksa manual di sini [RUS]
Jika Anda memiliki pertanyaan/saran/masalah, silakan membuka masalah.