Ignora os sistemas de inspeção de pacotes profundos (DPI) que se baseiam no SNI. O pacote é apenas para Linux. Também é totalmente compatível com os roteadores executando o OpenWrt.
O programa foi desenvolvido principalmente para ignorar a interrupção do YouTube na Rússia.
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.
O programa está distribuído em duas versão:
O programa é compatível com roteadores baseados em máquinas OpenWrt, Entershet (Keenetic/Asus) e host. O programa oferece binários por meio de ações do GitHub. Os binários também estão disponíveis via lançamentos do GitHub. Use o pré-lançamento mais recente para a construção mais atualizada. Confira as ações do GitHub se quiser ver todos os binários compilados sempre. Você deve conhecer a arcitatura do seu hardware para usar binários. No OpenWrt, você pode verificar com o comando grep ARCH /etc/openwrt_release
.
No OpenWrt e do Enters, instalam o programa com o OPKG. Se você recebeu um erro de sistema de arquivos somente leitura, poderá descompactar o binário manualmente ou especificar o caminho opkg opkg -o <destdir>
.
Para o Windows, use GoodbyEdPi pelo Valdikss (você pode encontrar como usá -lo para o YouTube aqui), o mesmo comportamento também é implementado no pacote Zapret para o Linux.
Quando você recebe o pacote de liberação, você deve instalá -lo. Vá para a interface do roteador, para o Sistema-> Software , atualize listas e instale o YouTubeUnBlock via botão Install_Package . Em seguida, você deve acessar o menu de início do sistema e recarregar o firewall (você também pode fazê-lo no menu Services-> YouTubeUnblock ).
Para funcionar, você deve registrar uma regra iptables e instalar os módulos do kernel necessários. A lista de módulos depende da versão do OpenWrt e de qual firewall você usa (iptables ou nftables). Para a maioria das versões modernas do OpenWRT (v23.x, v22.x), você deve usar as regras nftables, para as mais antigas que ele depende, mas normalmente iptables.
A dependência comum é
kmod-nfnetlink-queue
Mas é fornecido como dependência para outros pacotes de firewall.
Então, se você estiver em iptables, você deve instalar:
kmod-ipt-nfqueue
iptables-mod-nfqueue
kmod-ipt-conntrack-extra
iptables-mod-conntrack-extra
E, é claro, o aplicativo IPTABLABLES User Space deve estar disponível.
Nos nftables, as dependências são:
kmod-nft-queue
kmod-nf-conntrack
O próximo passo é adicionar as regras de firewall necessárias.
Para NFTABLES ON OpenWrt Regras sai fora da caixa e armazenado em /usr/share/nftables.d/ruleset-post/537-youtubeUnblock.nft
. Tudo o que você precisa é de instalar requisitos e do /etc/init.d/firewall reload
. Se não, vá para a configuração do firewall.
Agora vamos para a configuração. Para o OpenWrt, aqui está a configuração via UCI e Luci disponíveis (CLI e GUI, respectivamente).
Para Luci, também conhecido como GUI , também conhecido como interface da web do roteador, você deve instalar o pacote Luci-App-YoutubeUnblock, como você fez com o pacote normal do YouTubeunblock. Observe que as listas de feeds OPKG oficiais devem ser carregadas ( faça -o com a opção Listas de atualização ).
Se você obteve * pkg_hash_check_unresolved: cannot find dependency luci-lua-runtime for luci-app-youtubeUnblock
, você está usando o antigo OpenWrt. Instale este pacote fictício. Verifique este comentário para obter mais detalhes.
A Luci Configuration vive em serviços-> Seção do YouTubeUnblock . É auto -descritivo, com descrição para cada sinalizador. Observe que, depois de pressionar o botão Save & Apply
, a configuração é aplicada automaticamente e o serviço é reiniciado.
A configuração UCI está disponível no arquivo/etc/config/youtubeunblock, na seção youtubeUnblock.youtubeUnblock
. A configuração é feita com sinalizadores. Observe que os nomes dos sinalizadores não são os mesmos: você deve substituir -
por _
, você não deve usar a liderança --
para o sinalizador. Além disso, você ativará sinalizadores de alternar (sem parâmetros) com 1
.
Por exemplo, para ativar toras de rastreio que você deve fazer
uci set youtubeUnblock.youtubeUnblock.trace=1
Você pode verificar os logs no modo CLI com logread -l 200 | grep youtubeUnblock
Comando logread -l 200 | grep youtubeUnblock
.
Para o UCI, para salvar as configurações, você deve fazer uci commit
e depois reload_config
para reiniciar o youtubeunblock
No modo CLI, você usará o YouTubeUnblock como um serviço init.d normal: por exemplo, você pode ativá -lo com /etc/init.d/youtubeUnblock enable
.
Para Enters On Keenetic aqui é um guia de instalação (russo).
Instale o binário com opkg install youtubeUnblock-*.ipk
. Após a instalação, o binário in/opt/bin e o script init in /opt/etc/init.d/s51youtubeunblock estarão disponíveis. Para executar o YouTubeUnBlock, basta executar /opt/etc/init.d/S51youtubeUnblock start
Observe que você deve alimentar o kernel de destino com o módulo NFNETLINK_QUEUE. O módulo pode estar desativado ou mesmo não presente. ENTRO S51YOUTubeUnBlock tentará inserir os KMODs de qualquer maneira, mas se eles não forem fornecidos pelo software, você deve instalá -los manualmente. Afaik on Sencetics aqui é um repositório com módulos compilados pelo cliente. Você pode encontrá -los em algum lugar na interface da web do seu dispositivo. Em outros roteadores, você pode fazer uma pesquisa mais profunda nesse caso e encontrar seus KMods. Se você não conseguir encontrar nada, poderá pedir ao cliente os códigos GPL do kernel Linux (e pode ser o OpenWrt) e compilar os KMODs manualmente.
Você deve inserir o módulo com (esta etapa pode ser omitida no Enterware e OpenWrt):
modprobe nfnetlink_queue
No host local, certifique -se de avançar para a cadeia de saída nos seguintes conjuntos de regras do firewall.
Copie youtubeUnblock.service
para /usr/lib/systemd/system
(você deve alterar o caminho dentro do arquivo para a posição do programa, por exemplo /usr/bin/youtubeUnblock
, também pode excluir a adição de regra de iptables padrão no arquivo systemd a controlá -lo manualmente). E execute systemctl start youtubeUnblock
.
Nos nftables, você deve colocar as próximas regras 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 '
Nos iptables, você deve colocar as próximas regras 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 em iptables, você precisa duplicar regras acima 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
Observe que as regras acima usam o Conntrack para rotear apenas os primeiros 20 pacotes da conexão com o YouTubeUnBlock . Se você tiver alguns problemas, por exemplo, o YouTubeUnblock não detectar o YouTube, tente excluir Connbytes das regras. Mas é um comportamento improvável e você provavelmente deve verificar seu conjunto de regras.
Você pode usar --queue-balance
para várias instâncias do YouTubeUnBlock para desempenho. Esse comportamento é suportado via multithreading. Basta passar --threads=n
onde n significa vários threads que você deseja ser ativado. Os n padronizam para 1 . Os threads máximos padrão são 16 , mas podem ser alterados programaticamente. Observe que, se você está prestes a aumentá -lo, aqui está 100% a chance de você estar da maneira errada.
Além disso, o DNS sobre o HTTPS é preferido para anonimato adicional.
Aqui está o comando para testar se está funcionando ou não:
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
Deve retornar baixa velocidade sem o YouTubeUnblock e mais rápido com ele. Com o YouTubeUnblock, a velocidade deve ser a mesma da rápida com o próximo 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
Coloque as bandeiras no binário , não um script init. Se você estiver no OpenWrt, coloque os sinalizadores dentro do script: Open /etc/init.d/youtubeUnblock
com qualquer editor de texto, como VI ou Nano e coloque suas bandeiras após procd_set_param command /usr/bin/youtubeUnblock
.
Bandeiras disponíveis:
--sni-domains=<comma separated domain list>|all
as listas de domínios que você deseja ser tratado pelo SNI. Use esta string se desejar alterar a lista de domínio padrão. Padrão para googlevideo.com,ggpht.com,ytimg.com,youtube.com,play.google.com,youtu.be,googleapis.com,googleusercontent.com,gstatic.com,l.google.com
. Você pode passar por tudo se quiser que cada cliente seja tratado. Você pode excluir alguns domínios com o sinalizador --exclude-domains
.
--exclude-domains=<comma separated domain list>
Lista de domínios a serem excluídos da Targetting.
--queue-num=<number of netfilter queue>
O número de fila de netfilter youtubeunblock será vinculado. Padrões para 537 .
--fake-sni={0|1}
Este sinalizador permite que o SNI falso, que força o YouTubeUnblock a enviar pelo menos três pacotes em vez de um com o TLS ClientHello : Fake ClientHello , 1ª parte do ClientHello original, 2ª parte do ClientHello original. Esse sinalizador pode estar relacionado a alguma operação não permitida mensagens de erro; portanto, antes de abrir um problema, consulte a solução de problemas para o EPERMS. Padrões para 1 .
--fake-sni-seq-len=<length>
Este sinalizador especifica o YouTubeUnBlock para criar uma construção complicada de pacotes de hello do cliente falso. O comprimento determina quanta falsificação será enviada. Padrões para 1 .
--fake-sni-type={default|custom|random}
Para random
, a mensagem de comprimento aleatória e com carga útil aleatória será enviada. Por default
a carga útil padrão (sni = www.google.com) é usada. E para a opção custom
, a carga útil da seção --fake-custom-payload
utilizada. Padrões para default
.
--fake-custom-payload=<payload>
Útil com --fake-sni-type=custom
. Você deve especificar a carga útil da mensagem falsa manualmente. Use o formato hexadecimal: --fake-custom-payload=0001020304
significa que 5 bytes sequência: 0x00
, 0x01
, 0x02
, 0x03
, 0x04
usados como falso.
--faking-strategy={randseq|ttl|tcp_check|pastseq|md5sum}
Este sinalizador determina a estratégia de invalidação de pacotes falsos. Padrões para randseq
randseq
especifica que a sequência aleatória/reconhecimento aleatória será definida. Esta opção pode ser tratada pelo provedor que usa o Conntrack com queda na regra de firewall do estado de conexão inválida ativada.ttl
especifica que o pacote será invalidado após --faking-ttl=n
Hops. ttl
é melhor, mas pode causar problemas se não configurado.pastseq
é como randseq
, mas o número da sequência não é aleatório, mas faz referência ao pacote enviado no passado (antes da corrente).tcp_check
invalidará o pacote de fingimento com soma de verificação inválida. Pode ser tratado e descartado por alguns provedores/colegas.md5sum
invalidará o pacote de fingimento com TCP MD5SUM inválido. O MD5SUM é uma opção TCP que é tratada pelo servidor de destino, mas pode ser ignorada pela TSPU. --faking-ttl=<ttl>
Tua tempo para viver (TTL) de mensagens SNI falsas. O TTL é especificado como o pacote passar pelo sistema DPI e capturado por ele, mas não chegará ao servidor de destino. Padrões para 8 .
--fake-seq-offset
sintoniza o deslocamento do número de sequência original para pacotes falsos. Usado por Randseq Faking Strategy. Padrão para 10000. Se 0, o número da sequência aleatório será definido.
--frag={tcp,ip,none}
especifica a estratégia de fragmentação para o pacote. O TCP é usado por padrão. A fragmentação IP pode ser bloqueada pelo sistema DPI. Nenhum não especifica não fragmentação. Provavelmente isso não funcionará, mas pode ser funcionar para algumas estratégias falsas do SNI.
--frag-sni-reverse={0|1}
Especifica o YouTubeUnBlock para enviar fragmentos ClientHello na ordem inversa. Padrões para 1 .
--frag-sni-faked={0|1}
Especifica o YouTubeUnBlock para enviar pacotes falsos perto do ClientHello (preenche a carga útil com zeroes). Padrões para 0 .
--frag-middle-sni={0|1}
Com essas opções, o YouTubeUnBlock dividirá o pacote no meio dos dados do SNI. Padrões para 1.
--frag-sni-pos=<pos>
Com esta opção, o YouTubeUnBlock dividirá o pacote na posição POS. Padrões para 1.
--quic-drop
do quadro de todos os pacotes QIC que vão para o YouTubeunblock. Não afetará outros pacotes UDP. Adequado para algumas TVs. Observe que, para que esta opção funcione, você também deve adicionar UDP proxy ao YouTubeUnblock no firewall. connbytes
também pode ser usado com UDP.
--fk-winsize=<winsize>
Especifica o tamanho da janela para o pacote TCP fragmentado. Aplicável se você deseja que a resposta seja fragmentada. Pode desacelerar a inicialização da conexão.
--synfake={1|0}
Se 1, a carga útil syn será enviada antes de cada solicitação. A ideia é retirada do Syndata do Zapret Project. O Syn Payload será normalmente descartado pelo endpoint, mas pode ser tratado pela TSPU. Esta opção envia uma falsa normal nessa carga útil. Observe que a opção funciona para todos os sites, então--SNI-Domains não mudarão nada.
--synfake-len=<len>
O pacote falso enviado em Synfake pode ser muito grande. Se você tiver problemas, abaixe o Synfake-Len. onde Len significa quanto bytes deve ser enviado como sindata. Passe 0 se você quiser enviar um pacote falso inteiro. Padrões para 0
--sni-detection={parse|brute}
especifica como detectar sni. Parse normalmente o detectará analisando a mensagem do Hello Client Hello. Brute passará por toda a mensagem e verificará a possibilidade de ocorrência de SNI. Observe que, quando --sni-domains
a opção não for todo bruto será a complexidade do tempo O (nm), onde n significa duração da mensagem e M é o número de domínios. Padrões para analisar.
--seg2delay=<delay>
Este sinalizador força o YouTubeUnBlock a aguardar um pouco antes de enviar a 2ª parte do pacote dividido.
--silent
desativa o modo detalhado.
--trace
máxima de verbosidade para fins de depuração.
--no-gso
desabilita o suporte para pacotes de gordura do Google Chrome que usam GSO. Esse recurso está bem testado agora, para que esse sinalizador provavelmente não conserte nada.
--no-ipv6
desativa o suporte para IPv6. Pode ser útil se você não quiser que o soquete IPv6 seja aberto.
--threads=<threads number>
Especifica a quantidade de threads que você deseja executar para o seu programa. Isso padrão é 1 e não deve ser editado para uso normal. Mas se você realmente deseja várias instâncias de fila do YouTubeUnBlock, observe que você deve mudar-aquecimento-número para o equilíbrio. Por exemplo, com 4 threads, Use --queue-balance 537:540
em iptables e queue num 537-540
em nftables.
--packet-mark=<mark>
Use esta opção se o YouTubeUnBlock entrar em conflito com outros sistemas dependem da marca de pacotes. Observe que você pode alterar a regra aceita aceitar para os iptables seguirem a marca.
--fbegin
E --fend
SPANDS: YouTubeUnBlock suporta vários conjuntos de estratégias para filtros específicos. Você pode iniciar um novo conjunto após o padrão, 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
. Observe que a prioridade desses conjuntos vai para trás: o último é o primeiro, o padrão (um que não começa com - -fbegin) é o último. Se você iniciar a nova seção, as configurações padrão serão implementadas como o YouTubeUnBlock sem parâmetros. Observe que a configuração acima é apenas um exemplo e não funcionará para você.
Confira este problema para configurações úteis.
Se você tem problemas com alguns sites e tem certeza de que eles são bloqueados pelo SNI (YouTube, por exemplo), o uso pode brincar com bandeiras e suas combinações. A princípio, é recomendável tentar --faking-strategy
Sinalizador e --frag-sni-faked=1
. Se você tiver problemas com alguns sites sendo procurados, poderá brincar com os valores dos sinalizadores. Por exemplo, para alguém --faking-strategy=ttl
funciona. Você deve especificar adequadamente --fake-sni-ttl=<ttl value>
onde o TTL é a quantidade de lúpulo entre você e o DPI.
Se você estiver no Chromium, talvez seja necessário desativar o Kyber (o recurso que torna o cliente TLS Shello muito grande). Eu tenho o problema com isso no roteador, para escapar dos possíveis erros, por isso é melhor desativá -lo: no chrome://flags
Pesquise Kyber e mude para o estado desativado. Como alternativa, você pode definir --sni-detection=brute
e provavelmente ajustar --sni-domains
.
Se o seu navegador estiver usando o QIC, ele poderá não funcionar corretamente. Desative -o no Chrome no chrome://flags
e no Firefox network.http.http{2,3}.enable(d)
em about:config
Opção.
Parece que algumas colegas começaram a bloquear pacotes errados, então você deve brincar com estratégias de falsificação. Pessoalmente, recomendo começar com a estratégia de fingimento md5sum
.
As televisões são a maior dor de cabeça.
Nesta questão, o problema foi resolvido. E agora o YouTubeUnBlock deve funcionar com sinalizadores padrão. Caso contrário, brinque com estratégias de falsificação e outras bandeiras. Além disso, você pode ter que desativar Quic. Para fazer isso, você pode usar-sinalizador --quic-drop
com a configuração adequada do firewall (verifique a descrição do sinalizador). Observe que essa bandeira não desativará o GQUIC e algumas TVs podem transmitir nela. Para desativar o GQUIC, você precisará bloquear a porta 443 inteira para UDP na configuração do firewall:
Para nfftables
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
Onde você deve substituir 192.168 .. pelo IP da sua televisão.
O EPERM pode ocorrer em muitos lugares, mas geralmente aqui estão dois: mnl_cb_run e ao enviar o pacote via Rawsocket (raw_frags_send e enviar sni falso).
MNL_CB_RUN Operação não permitida indica que outra instância do YouTubeUnBlock está em execução na fila especificada.
A operação Rawsocket não é permitida indica que o pacote está sendo descartado pelas regras de Nefilter. Na verdade, isso é uma dica do kernel de que algo errado está acontecendo e devemos verificar as regras do firewall. Antes de mergulhar no problema, vamos limpar como os pacotes mutilados estão sendo enviados. O Nefilter Fileue nos fornece a capacidade de gerenciar o pacote em tempo real, mas isso não é adequado para este programa, porque precisamos dividir o pacote em pelo menos dois pacotes independentes. Por isso, estamos usando soquetes RAW Linux que nos permitem enviar qualquer pacote IPv4. O pacote vai da cadeia de saída, mesmo quando o NFQUEUE é configurado para a frente (adequado para o OpenWrt). Então, precisamos escapar do pacote rejeitados aqui.
iptables -I OUTPUT -m mark --mark 32768/32768 -j ACCEPT
ou nft insert rule inet fw4 output mark and 0x8000 == 0x8000 counter accept
. Antes da compilação, verifique se gcc
, make
, autoconf
, automake
, pkg-config
e libtool
está instalado. Para o Fedora glibc-static
também deve ser instalado.
Compilar com make
. Instale com make install
. O pacote inclui libnetfilter_queue
, libnfnetlink
e libmnl
como dependências estáticas. O pacote requer linux-headers
e kernel construídos com o suporte do Netfilter NFqueue.
O pacote também é compatível com roteadores. O roteador deve estar em execução por sistema baseado em Linux, como o OpenWrt.
Você pode construir no OpenWrt com duas opções: primeiro - através do SDK, que é o Way Preferred e o segundo é o cruzamento manualmente com o OpenWrt Toolchain.
O OpenWrt fornece um SDK de alto nível para as compilações do pacote.
O primeiro passo é baixar ou compilar o OpenWrt SDK para sua plataforma específica. O SDK pode ser compilado de acordo com este tutorial.
Além do código -fonte bruto do SDK, o OpenWrt também oferece SDKs pré -compilados para o seu roteador. Você pode encontrá -lo na página do roteador. Por exemplo, eu tenho o roteador baseado em Ramips/MT76x8, então, para mim, o SDK está em https://downloads.openwrt.org/releases/23.05.3/targets/ramips/mt76x8/ e chamado openwrt-sdk-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64
.
Você precisará instalar os requisitos do SDK no seu sistema Se tiver algum problema, use o Docker Ubuntu: 24.04. Certifique-se de ser um usuário sem raios, pois alguns makeystem falham com ele. Em seguida, Ucar o SDK e o CD nele.
Fazer
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
Agora o pacote é construído e você pode importá -lo para o roteador. Encontre-o em bin/packages/<target>/youtubeUnblock/youtubeUnblock-<version>.ipk
.
A cadeia de ferramentas pré -compilada localizada perto do SDK. Por exemplo, é chamado openwrt-toolchain-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64.tar.xz
. Quando você baixar a cadeia de ferramentas, ucar -o em algum lugar. Agora estamos prontos para a compilação. Meu Cross GCC me pediu para criar um diretor de encenação para ele e passá -lo como uma variável de ambiente. Além disso, você deve notar pacotes de ferramentas e substituir meu comando make pelo seu.
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
Dê uma olhada no CROSS_COMPILE_PLATFORM
é necessário pelo AutoTools, mas acho que não é necessário. De qualquer forma, coloquei mipsel-buildroot-linux-gnu
aqui. Para o seu nome de modelo de roteador, talvez um manual de compilação cruzado de automóveis seja útil.
Quando a compilação for concluída, o arquivo binário estará no diretório de construção. Copie -o para o seu roteador. Observe que é provável que um acesso SSH seja obrigado a prosseguir. Os SSHFs não funcionam no meu modelo, então injetei o aplicativo no roteador via página de upload de software . Isso me deu um erro, mas também um arquivo /tmp/upload.ipk
que copiei no diretório raiz, chmod +x
e execute.
Esta seção descreve a versão do módulo do kernel do YouTubeUnBlock. O módulo do kernel opera como um módulo normal dentro do kernel e integra -se dentro da pilha de netfilter para amaciar sem estado os pacotes enviados pela Internet.
Você pode configurar o módulo com suas bandeiras no Insmod:
insmod kyoutubeUnblock.ko fake_sni=1 exclude_domains=.ru quic_drop=1
Observe que os nomes dos sinalizadores são diferentes dos usados para o YouTubeUnBlock regular (à direita como na configuração UCI para o OpenWrt): Substitua -
por _
e sem liderança --
. Também para configurar os alternadores, você deve defini -los como 1
( quic_drop=1
)
Também um bom thig para mencionar é a verbosidade. O módulo do kernel combina -Trace e -Silent Opção para a verbosity
de um parâmetro. Este parâmetro aceita 3 argumentos: trace
, debug
e silent
. Eu não recomendo ativar o Mod trace
no roteador, porque pode causar enormes problemas com o desempenho e até congelar seu dispositivo.
Além disso, uma queda na substituição é suportada para todos os parâmetros que excluem a marca de pacotes. Uma queda na substituição não requer reinicialização do módulo se você deseja alterar os parâmetros. Você pode especificar e verificar os parâmetros no diretório do módulo dentro do sysfs: /sys/module/kyoutubeUnblock/parameters/
. Por exemplo, para definir quic_drop como true, você pode usar o próximo comando:
echo 1 | sudo tee /sys/module/kyoutubeUnblock/parameters/quic_drop
e
cat /sys/module/kyoutubeUnblock/parameters/quic_drop
Para verificar o parâmetro.
Para criar o módulo do kernel no sistema host, você deve instalar linux-headers
, que fornecerão ferramentas essenciais de construção e suíte do compilador gcc
. No sistema host, você pode construir o módulo com
make kmake
Para construir o módulo para o kernel externo, você deve construir esse kernel localmente e apontar para ele. Use KERNEL_BUILDER_MAKEDIR=~/linux
sinalizador para fazer, por exemplo:
make kmake KERNEL_BUILDER_MAKEDIR=~/linux
Observe que o kernel já deve estar configurado e construído. Consulte Manuais de construção do kernel Linux para obter mais informações sobre seu caso específico.
Construir com o OpenWrt SDK não é uma coisa tão difícil. A única coisa que você deve fazer é obter o SDK. Você pode encontrá -lo olhando para sua arquitetura e versão do OpenWrt atualmente usado. Você deve usar exatamente a sua versão do OpenWrt, pois os kernels de lá mudam com frequência. Você pode encontrar o SDK de duas maneiras: baixando -o no site deles ou usando o contêiner OpenWrt SDK Docker (recomendado).
Se você decidir fazer o download do arquivo TAR, siga as próximas etapas: para mim, o arquivo vive em https://downloads.openwrt.org/releases/23.05.3/targets/ramips/mt76x8/ e chamado openwrt-sdk-23.05.3-ramips-mt76x8_gcc-12.3.0_musl.Linux-x86_64
. Você precisará instalar os requisitos do SDK no seu sistema Se tiver algum problema, use o Docker Ubuntu: 24.04. Certifique-se de ser um usuário sem raios, pois alguns makeystem falham com ele. Em seguida, Ucar o SDK e o CD nele.
Ou você pode obter a imagem do Docker com SDK embutido: https://hub.docker.com/u/openwrt/sdk. No meu caso, a imagem possui tag ramips-mt76x8-23.05.3
. Uma coisa boa aqui é que você não precisa instalar nenhuma dependência dentro do contêiner do Docker. Além disso, o Docker Hub tem uma pesquisa perfeita em torno de tags, se você não tem certeza de qual corresponde ao seu dispositivo.
Quando você desempacotou/instalou o SDK, você está pronto para começar a criar o módulo do kernel.
Fazer
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
Quando os comandos terminarem, o módulo está pronto. Encontre -o com find bin -name "kmod-youtubeUnblock*.ipk"
, copie para o seu host e instale no roteador via interface de software GUI. O módulo deve começar imediatamente. Caso contrário, faça modprobe kyoutubeUnblock
.
O YouTubeUnblock também pode ser executado em Padavan. Verifique o manual aqui [rus]
Se você tiver alguma dúvida/sugestão/problemas, sinta -se à vontade para abrir um problema.