Um grande número de instruções foi publicado com várias opções para ignorar o bloqueio de recursos da Internet. Mas o tópico não perde relevância. Ainda mais frequentemente, iniciativas estão sendo ouvidas no nível legislativo para bloquear artigos sobre métodos para contornar bloqueios. E havia rumores de que Roskomnadzor receberá outro pacote de dinheiro dos contribuintes por bloqueios "melhores". Usuários experientes não aprenderão nada de novo ou útil neste artigo. Outros, porém, receberão instruções passo a passo prontas para o desvio seletivo simples e eficaz de bloqueios em roteadores populares com firmware Padavan e Keenetic.

Conteúdo
1. Introdução
Eu usei a
opção de desvio de bloqueio Zolg por cerca de dois anos. Muitas instruções na rede são baseadas nela. Mina inclusive.
Tudo estava bem, mas "o melhor é sempre o inimigo do bem". Em primeiro lugar, alguns novos programas tornaram-se muito "inteligentes" e resolverão domínios usando seus próprios métodos, ignorando o servidor DNS do roteador. Isso não permite que o dnsmasq no roteador adicione o endereço ao ipset definido para desbloqueio e leva a um resultado lógico - o recurso permanece bloqueado. No Android 9, suporte nativo para DNS sobre TLS, ou seja, esse método de ignorar o bloqueio para de funcionar (se o outro dispositivo não tiver acessado o dnsmasq antes). Em segundo lugar, atualizar toda a lista de domínios do antizapret gera sempre resultados imprevisíveis. A lista pode incluir domínios realmente não bloqueados e cuja operação é importante através do canal principal. Você precisa estar constantemente em alerta e editar os arquivos gerados com as mãos. Em terceiro lugar, estou cansado de “arrastar” uma enorme lista de domínios com dezenas de milhares de cassinos e similares, que simplesmente não são necessários. Com o tempo, percebi que precisava apenas de uma pequena lista específica de recursos bloqueados.
Então, há um ano eu uso um método de desbloqueio ligeiramente modificado, com o qual estou completamente satisfeito:
- Simplicidade e facilidade de controle (após a configuração).
- Controle total sobre quais recursos você precisa desbloquear.
- Requisitos mínimos para recursos do processador e RAM do roteador.
- Ampla cobertura de nuances ao ignorar bloqueios.
É importante observar que minha opção não se destina ao caso em que você precisa desbloquear centenas e milhares de domínios. Porque quando o roteador inicia, cada domínio da lista fornecida é resolvido. Quanto mais domínios na lista, maior a inicialização de muitos ipset para desbloquear.
A base para ignorar bloqueios é a mesma - a rede Tor. Seu uso é devido a dois fatores simples - gratuitamente, e a probabilidade de o Tor ser bloqueado na Rússia é quase nula, diferente de qualquer serviço VPN. Tor é a base do narcotráfico na Rússia, de meio a baixo. O Locking Tor levará à busca de novas ferramentas para o mercado e reduzirá o nível de anonimato, o que implicará a ativação bem-sucedida do trabalho das agências policiais locais. Por fim, isso, como um vírus, começará a afetar negativamente o link superior. Dadas as últimas notícias surpreendentes sobre o relacionamento de altos funcionários do governo com o tráfico global de drogas com a Rússia, o bloqueio de Tor na Rússia é apenas um tabu, embora seja trivial. Nem Roskomnadzor, não importa quantos bilhões sejam alocados a esta agência, nem um único tribunal na Rússia tem permissão "de cima" para bloquear Tor. E nem surpreende nem assusta ninguém, mesmo que a Rússia esteja simplesmente se afogando em drogas (qualquer aluno sabe o que vai fazer e, após 30 minutos, é realmente possível em qualquer cidade com uma população de 10 mil pessoas obter drogas livremente na prática. em qualquer quantidade - uma verdade tão má da vida). No modo atual, a probabilidade de bloquear a rede Tor é menor do que a probabilidade de bloquear o site do museu Hermitage.
As instruções fornecidas são fáceis de adaptar para roteadores com o OpenWrt. Além disso, pequenas alterações facilitam a substituição do Tor pelo OpenVPN.
Como você conseguirá ignorar bloqueios após a configuração?
Tudo é muito simples. Você tem o arquivo /opt/etc/unblock.txt - uma lista simples para desbloquear. Você pode desbloquear um domínio, endereço IP, intervalo de endereços ou CIDR. Uma linha - um elemento. Linhas vazias são permitidas e você pode usar o caractere # no início da linha para ignorar.
Aqui está um exemplo do meu arquivo pessoal Após editar este arquivo, você simplesmente executa o comando para aplicar a nova configuração:
unblock_update.sh
Todos os recursos do unblock.txt são desbloqueados sem a necessidade de reiniciar o roteador.
Princípio de funcionamento
- A inicialização do roteador cria um conjunto vazio de endereços IP de ipset chamado desbloquear.
- Uma regra para redirecionar todos os pacotes com destinos de desbloqueio para o serviço Tor é adicionada ao firewall.
- O serviço Tor inicia no modo proxy transparente.
- O script especial unblock_ipset.sh é iniciado, que resolve todos os domínios de unblock.txt e adiciona seus endereços IP ao conjunto de desbloqueio. Endereços IP, intervalos e CIDRs desse arquivo também são adicionados ao desbloqueio.
- O Dnsmasq é iniciado com um arquivo de configuração adicional, unblock.dnsmasq, que indica a adição de endereços IP de domínio de unblock.txt ao conjunto de desbloqueio ao resolver.
- O cron executa unblock_ipset.sh com uma certa frequência para compensar parcialmente possíveis casos com nuances.
- Se necessário, todos os domínios de unblock.txt (e somente eles) serão resolvidos por meio de dnscrypt-proxy se o provedor filtrar o DNS.
Configurando um roteador Padavan
Você deve ter um roteador com firmware Padavan instalado e um gerenciador de pacotes Entware já configurado. No Windows, você pode usar o cliente
PuTTY para conectar-se ao roteador via SSH.
Verifique se você está usando o Entware, não o Entware-ng herdado. Veja o conteúdo da pasta / opt / var / opkg-lists. Haverá um arquivo entware ou entware-ng. No segundo caso, você precisa atualizar o firmware Padavan do seu roteador para a versão mais recente e reinstalar o gerenciador de pacotes do Entware. Somente então prossiga com as instruções passo a passo.
Como as análises mostraram, surgem principalmente problemas para quem tem o Entware configurado incorretamente inicialmente (ou seja, os scripts do init.d não são carregados) na memória interna do roteador. Se você possui o Xiaomi Mi Router 3 ou 3G e não tem certeza de que o Entware na memória interna funcione corretamente (inicialização automática), basta configurar tudo novamente. Tome PROMETHEUS. Atualiza o script (1). Atualize o código fonte (2). Colete e atualize o firmware mais atual (4). Redefinir as configurações de firmware (NVRAM e armazenamento de arquivos) - Avançado> Administração> Configurações. Configure o acesso à Internet no roteador e ative o SSH. Execute no firmware PROMETHEUS> Formatação RWFS. Escolha Avançado> Administração> Configurações> Montar sistema de arquivos na seção R / W> UBIFS. Reinicie o roteador. Todos os scripts de inicialização atuais do Entware da memória interna serão registrados automaticamente e tudo funcionará como um relógio.
Para testes, usei o popular Xiaomi Mi Router 3G (o Entware está instalado na memória interna) com o firmware mais recente - 32a93db. Tudo funcionará mesmo no lendário bebê WT3020 AD / F / H por US $ 10.

1. Instalando o software necessário no roteador
opkg update opkg install mc tor tor-geoip bind-dig cron
mc - gerenciador de arquivos Midnight Commander. É necessário apenas por causa do conveniente editor do mcedit. Se você está acostumado a usar outro editor de texto, o mc não pode ser instalado.
tor - serviço Tor.
tor-geoip - banco de dados geo-IP para o Tor.
bind-dig - cliente DNS (análogo de nslookup e host).
cron - agendador de tarefas.
2. Inicialize o ipset, crie vários endereços IP de desbloqueio (start_script.sh)
Conecte os módulos necessários e crie um conjunto vazio de endereços com o nome
desbloquear quando o roteador inicializar. Para fazer isso, abra o arquivo
/etc/storage/start_script.sh no editor:
mcedit /etc/storage/start_script.sh
Adicione no final:
modprobe ip_set modprobe ip_set_hash_ip modprobe ip_set_hash_net modprobe ip_set_bitmap_ip modprobe ip_set_list_set modprobe xt_set ipset create unblock hash:net
Para colar do buffer, use Shift + Insert, salve - F2, saia - F10.

Se desejar, você pode editar o arquivo start_script.sh na interface da web do roteador - "Avançado"> "Personalização"> "Scripts"> "Executar antes de inicializar o roteador". Após a edição, clique em "Aplicar".

3. Configuração do Tor
Exclua o conteúdo do arquivo de configuração do Tor:
cat /dev/null > /opt/etc/tor/torrc
Abra o arquivo de configuração do Tor:
mcedit /opt/etc/tor/torrc
Cole (Shift + Insert) o conteúdo:
User admin PidFile /opt/var/run/tor.pid ExcludeExitNodes {RU},{UA},{AM},{KG},{BY} StrictNodes 1 TransPort 192.168.0.1:9141 ExitRelay 0 ExitPolicy reject *:* ExitPolicy reject6 *:* GeoIPFile /opt/share/tor/geoip GeoIPv6File /opt/share/tor/geoip6 DataDirectory /opt/var/lib/tor
Se necessário, substitua
192.168.0.1 pelo endereço interno do seu roteador (LAN). Breve descrição da configuração:
- Excluir nós de saída: Rússia, Ucrânia, Armênia Quirguistão, Bielorrússia.
- Pendure um proxy transparente no endereço 192.168.0.1, porta 9141.
- Negue ser um ponto de saída.
4. A lista de domínios (e não apenas) para ignorar o bloqueio (unblock.txt)
unblock.txt é uma lista simples para desbloquear. Você pode desbloquear um domínio, endereço IP, intervalo ou CIDR. Uma linha - um elemento. Linhas vazias (incluindo espaços e tabulações) são ignoradas. Você pode usar o caractere # no início de uma linha para ignorá-lo.
Crie o arquivo
/opt/etc/unblock.txt :
mcedit /opt/etc/unblock.txt
Cada linha pode conter um nome de domínio, endereço IP, intervalo ou CIDR. Você pode usar o caractere # para comentar nas linhas.
Aqui está um exemplo do meu arquivo pessoal 5. Um script para preencher um conjunto de endereços IP de desbloqueio de uma determinada lista de domínios (unblock_ipset.sh)
Crie o script
/opt/bin/unblock_ipset.sh :
mcedit /opt/bin/unblock_ipset.sh
Cole (Shift + Insert) o conteúdo:
Conceder direitos de execução:
chmod +x /opt/bin/unblock_ipset.sh
O script é bastante simples, é a essência do seu trabalho ... Estamos aguardando a resolução do domínio google.com funcionar (se isso não for feito, muitos desbloqueios não serão preenchidos quando o roteador inicializar, porque o roteador ainda estará em processo de inicialização). Lemos as linhas no arquivo unblock.txt. As linhas de leitura excluem automaticamente espaços e guias no início e no final. Pule as linhas vazias. Pule as linhas que começam com o caractere #. Nós estamos olhando na linha CIDR. Se o CIDR for encontrado, adicione-o para desbloquear. Estamos procurando um intervalo na string. Se for encontrado, adicione-o para desbloquear. Estamos procurando o endereço IP na string. Se o IP for encontrado, adicione-o para desbloquear. Vamos resolver uma linha através de dig. Todos os endereços IP do resultado são adicionados ao desbloqueio.
6. Um script para gerar um arquivo de configuração dnsmasq adicional a partir de uma determinada lista de domínios (unblock_dnsmasq.sh)
Crie o script
/opt/bin/unblock_dnsmasq.sh :
mcedit /opt/bin/unblock_dnsmasq.sh
Cole (Shift + Insert) o conteúdo:
Conceder direitos de execução:
chmod +x /opt/bin/unblock_dnsmasq.sh
O script é bastante simples, essa é a essência do seu trabalho ... Lemos sequencialmente as linhas de /opt/etc/unblock.txt. As linhas de leitura excluem automaticamente espaços e guias no início e no final. Pule as linhas vazias. Pule as linhas que começam com #. Ignoramos as linhas que contêm o endereço IP (IP, intervalo, CIDR), ou seja, estamos interessados apenas em strings com nomes de domínio. No arquivo /opt/etc/unblock.dnsmasq, adicionamos linhas no formato "ipset = / domain_name / unblock". Isso significa que, depois de determinar os endereços IP de um domínio específico, eles serão adicionados automaticamente ao conjunto de desbloqueio.
Certifique-se de executar o script para gerar o arquivo unblock.dnsmasq:
unblock_dnsmasq.sh
Verifique se o arquivo unblock.dnsmasq foi criado:
cat /opt/etc/unblock.dnsmasq
7. O script para atualização forçada manual do sistema após editar a lista de domínios (unblock_update.sh)
Crie o script
/opt/bin/unblock_update.sh :
mcedit /opt/bin/unblock_update.sh
Cole (Shift + Insert) o conteúdo:
Conceder direitos de execução:
chmod +x /opt/bin/unblock_update.sh
8. Script para preencher automaticamente um conjunto de desbloqueio ao inicializar um roteador (S99unblock)
Crie o script
/opt/etc/init.d/S99unblock :
mcedit /opt/etc/init.d/S99unblock
Cole (Shift + Insert) o conteúdo:
Conceder direitos de execução:
chmod +x /opt/etc/init.d/S99unblock
9. Encaminhando pacotes com destinos de desbloqueio para Tor (post_iptables_script.sh)
Abra o arquivo
/etc/storage/post_iptables_script.sh no editor:
mcedit /etc/storage/post_iptables_script.sh
Adicione no final:
iptables -t nat -A PREROUTING -i br0 -p tcp -m set --match-set unblock dst -j REDIRECT --to-port 9141

Se desejar, você pode editar o arquivo post_iptables_script.sh na interface da web do roteador - "Avançado"> "Personalização"> "Scripts"> "Executar após reiniciar as regras de firewall". Após a edição, clique em "Aplicar".

Você pode adicionar (isso é opcional) ao mesmo arquivo para redirecionar todas as solicitações para a porta externa 53 para si mesmo. Isso é necessário para que os clientes na rede local não usem serviços DNS de terceiros. Os pedidos passarão pelo servidor DNS regular.
iptables -t nat -I PREROUTING -i br0 -p udp --dport 53 -j DNAT --to 192.168.0.1 iptables -t nat -I PREROUTING -i br0 -p tcp --dport 53 -j DNAT --to 192.168.0.1
Se necessário, substitua
192.168.0.1 pelo endereço interno do seu roteador (LAN).
10. Conectando um arquivo de configuração adicional ao dnsmasq
Precisamos conectar o arquivo unblock.dnsmasq criado ao dnsmasq. Para fazer isso, abra o arquivo
/etc/storage/dnsmasq/dnsmasq.conf no editor:
mcedit /etc/storage/dnsmasq/dnsmasq.conf
Adicione no final:
conf-file=/opt/etc/unblock.dnsmasq
Se desejar (isso é opcional), você pode adicionar um servidor adicional para resolução e confiabilidade:
server=8.8.8.8
Se desejar, você pode editar o arquivo dnsmasq.conf através da interface da web do roteador - "Avançado"> "LAN"> "Servidor DHCP"> "Arquivo de configuração do usuário dnsmasq.conf". Após a edição, clique em "Aplicar".

11. Incluindo uma tarefa no cron para atualizar periodicamente o conteúdo do conjunto de desbloqueio
Este é um seguro adicional caso programas / dispositivos usem seu próprio método de resolução e o endereço IP do domínio tenha sido alterado. Tudo o que você precisa fazer é executar o script unblock_ipset.sh na frequência desejada. Por exemplo, lançaremos todos os dias às 6 da manhã.
Substitua o nome raiz por admin no arquivo de configuração cron:
sed -i 's/root/admin/g' /opt/etc/crontab
Abra o arquivo
/ opt / etc / crontab no editor:
mcedit /opt/etc/crontab
Adicione no final:
00 06 * * * admin /opt/bin/unblock_ipset.sh
Se desejar, você pode comentar todas as outras tarefas de modelo. Aqui está a aparência do seu arquivo crontab:

12. Reiniciando o roteador
Execute o comando:
reboot
Após a reinicialização, abra o site check.torproject.org no seu navegador (ele deve ser adicionado ao arquivo unblock.txt). Se você fez tudo corretamente, verá a inscrição “Parabéns. Este navegador está configurado para usar o Tor. ":

Configurando um roteador com o Keenetic OS
Você deve ter um roteador Keenetic / Zyxel com o Entware Package Manager (OPKG) já configurado. Por exemplo, aqui está uma lista de alguns roteadores que suportam o Entware: Keenetic II, Keenetic III, Extra, Extra II, Giga II, Giga III, Omni, Omni II, Viva, Ultra, Ultra II, Omni (KN-1410), Extra (KN -1710), Giga (KN-1010), Ultra (KN-1810), Viva (KN-1910), DSL (KN-2010), Duo (KN-2110). As instruções para configurar o Entware podem ser encontradas
aqui (até 10 pontos).
Se anteriormente (com firmware abaixo de 2.07) você já adicionou o suporte ao Entware, verifique se
está usando o Entware-ng desatualizado .
Certifique-se de ativar "Módulos de kernel do subsistema Netfilter" - Configurações gerais> Alterar conjunto de componentes. Se não estiver na lista de disponíveis, tente instalar o componente do protocolo IPv6 primeiro. Se após isso não aparecer, tente sem ele, mas há uma alta probabilidade de que você não consiga desbloquear por intervalo e CIDR (porque não haverá suporte para o conjunto hash: net).

Para testes, usei o Keenetic Ultra (KN-1810) com o firmware mais recente - 2.14.C.0.0-4.
Nota importante. Você terá que desativar o servidor DNS regular no sistema; em vez disso, usaremos o dnsmasq. Você perderá a capacidade de atribuir serviços DNS (Yandex.DNS / SkyDNS / AdGuard DNS) individualmente para clientes, mas poderá usá-los globalmente através das configurações do dnsmasq, se necessário.1. Instalando o software necessário no roteador
opkg update opkg install mc tor tor-geoip bind-dig cron dnsmasq-full ipset iptables
mc - gerenciador de arquivos Midnight Commander. É necessário apenas por causa do conveniente editor do mcedit. Se você está acostumado a usar outro editor de texto, o mc não pode ser instalado.
tor - serviço Tor.
tor-geoip - banco de dados geo-IP para o Tor.
bind-dig - cliente DNS (análogo de nslookup e host).
cron - agendador de tarefas.
dnsmasq-full - servidor DNS.
O ipset e o iptables são utilitários do console do
ipset e do iptables (eles podem já estar no sistema e não são necessários, eu os adicionei por segurança).
2. Inicialize o ipset, crie vários endereços IP de desbloqueio (100-ipset.sh)
Verifique se o sistema do seu roteador suporta muitos hash: net (como se viu, nem todos os roteadores Keenetic o possuem):
ipset create test hash:net
Se a equipe não deu nenhum erro ou mensagem, existe suporte e basta seguir as instruções. Caso contrário (há um erro) no script a seguir, você precisará substituir
hash: net por
hash: ip . Nesse caso, você perde a capacidade de desbloquear o alcance e o CIDR.
Crie um conjunto vazio de endereços chamado
desbloquear quando o roteador inicializar. Para fazer isso, crie o arquivo
/opt/etc/ndm/fs.d/100-ipset.sh :
mcedit /opt/etc/ndm/fs.d/100-ipset.sh
Cole (Shift + Insert) o conteúdo:
Para colar do buffer, use Shift + Insert, salve - F2, saia - F10.
Conceder direitos de execução:
chmod +x /opt/etc/ndm/fs.d/100-ipset.sh
3. Configuração do Tor
Exclua o conteúdo do arquivo de configuração do Tor:
cat /dev/null > /opt/etc/tor/torrc
Abra o arquivo de configuração do Tor:
mcedit /opt/etc/tor/torrc
Cole (Shift + Insert) o conteúdo:
User root PidFile /opt/var/run/tor.pid ExcludeExitNodes {RU},{UA},{AM},{KG},{BY} StrictNodes 1 TransPort 192.168.0.1:9141 ExitRelay 0 ExitPolicy reject *:* ExitPolicy reject6 *:* GeoIPFile /opt/share/tor/geoip GeoIPv6File /opt/share/tor/geoip6 DataDirectory /opt/var/lib/tor
Se necessário, substitua
192.168.0.1 pelo endereço interno do seu roteador (LAN). Breve descrição da configuração:
- Excluir nós de saída: Rússia, Ucrânia, Armênia Quirguistão, Bielorrússia.
- Pendure um proxy transparente no endereço 192.168.0.1, porta 9141.
- Negue ser um ponto de saída.
4. A lista de domínios (e não apenas) para ignorar o bloqueio (unblock.txt)
unblock.txt é uma lista simples para desbloquear. Você pode desbloquear um domínio, endereço IP, intervalo ou CIDR. Uma linha - um elemento. Linhas vazias (incluindo espaços e tabulações) são ignoradas. Você pode usar o caractere # no início de uma linha para ignorá-lo.
Crie o arquivo
/opt/etc/unblock.txt :
mcedit /opt/etc/unblock.txt
Cada linha pode conter um nome de domínio, endereço IP, intervalo ou CIDR. Você pode usar o caractere # para comentar nas linhas.
Aqui está um exemplo do meu arquivo pessoal 5. Um script para preencher um conjunto de endereços IP de desbloqueio de uma determinada lista de domínios (unblock_ipset.sh)
Crie o script
/opt/bin/unblock_ipset.sh :
mcedit /opt/bin/unblock_ipset.sh
Cole (Shift + Insert) o conteúdo:
Conceder direitos de execução:
chmod +x /opt/bin/unblock_ipset.sh
O script é bastante simples, é a essência do seu trabalho ... Estamos aguardando a resolução do domínio google.com funcionar (se isso não for feito, muitos desbloqueios não serão preenchidos quando o roteador inicializar, porque o roteador ainda estará em processo de inicialização). Lemos as linhas no arquivo unblock.txt. As linhas de leitura excluem automaticamente espaços e guias no início e no final. Pule as linhas vazias. Pule as linhas que começam com o caractere #. Nós estamos olhando na linha CIDR. Se o CIDR for encontrado, adicione-o para desbloquear. Estamos procurando um intervalo na string. Se for encontrado, adicione-o para desbloquear. Estamos procurando o endereço IP na string. Se o IP for encontrado, adicione-o para desbloquear. Vamos resolver uma linha através de dig. Todos os endereços IP do resultado são adicionados ao desbloqueio.
6. Um script para gerar um arquivo de configuração dnsmasq adicional a partir de uma determinada lista de domínios (unblock_dnsmasq.sh)
Crie o script
/opt/bin/unblock_dnsmasq.sh :
mcedit /opt/bin/unblock_dnsmasq.sh
Cole (Shift + Insert) o conteúdo:
Conceder direitos de execução:
chmod +x /opt/bin/unblock_dnsmasq.sh
O script é bastante simples. Lemos sequencialmente as linhas de /opt/etc/unblock.txt. As linhas de leitura excluem automaticamente espaços e guias no início e no final. Pule as linhas vazias. Pule as linhas que começam com #. Ignorar linhas que contêm um endereço IP (IP ou CIDR), ou seja, estamos interessados apenas em strings com nomes de domínio. No arquivo /opt/etc/unblock.dnsmasq, adicionamos linhas no formato "ipset = / domain_name / unblock". Isso significa que, depois de determinar os endereços IP de um domínio específico, eles serão adicionados automaticamente ao conjunto de desbloqueio.
Certifique-se de executar o script para gerar o arquivo unblock.dnsmasq:
unblock_dnsmasq.sh
Verifique se o arquivo unblock.dnsmasq foi criado:
cat /opt/etc/unblock.dnsmasq
7. O script para atualização forçada manual do sistema após editar a lista de domínios (unblock_update.sh)
Crie o script
/opt/bin/unblock_update.sh :
mcedit /opt/bin/unblock_update.sh
Cole (Shift + Insert) o conteúdo:
Conceder direitos de execução:
chmod +x /opt/bin/unblock_update.sh
8. Script para preencher automaticamente um conjunto de desbloqueio ao inicializar um roteador (S99unblock)
Crie o script
/opt/etc/init.d/S99unblock :
mcedit /opt/etc/init.d/S99unblock
Cole (Shift + Insert) o conteúdo:
Conceder direitos de execução:
chmod +x /opt/etc/init.d/S99unblock
9. Encaminhando pacotes com destinos de desbloqueio para Tor (100-redirect.sh)
Para fazer isso, crie o arquivo /opt/etc/ndm/netfilter.d/100-redirect.sh : mcedit /opt/etc/ndm/netfilter.d/100-redirect.sh
Cole (Shift + Insert) o conteúdo:
Se você usou hash: ip na etapa 2 em vez de hash: net , substitua hash: net por hash: ip. De fato, duplicamos adicionalmente a função de criar um conjunto de desbloqueio a partir de 2 etapas. Isso é necessário para segurança, se os scripts do fs.d ainda não começaram a ser executados e os scripts netfilter.d já estão em execução. Não há problema se o desbloqueio já tiver sido criado anteriormente, o comando será simplesmente ignorado.Você pode adicionar (isso é opcional) ao mesmo arquivo para redirecionar todas as solicitações para a porta externa 53 para si mesmo. Isso é necessário para que os clientes na rede local não usem serviços DNS de terceiros. Os pedidos passarão pelo servidor DNS regular. Antes da última saída, adicione: if [ -z "$(iptables-save 2>/dev/null | grep "udp \-\-dport 53 \-j DNAT")" ]; then iptables -w -t nat -I PREROUTING -i br0 -p udp --dport 53 -j DNAT --to 192.168.0.1 fi if [ -z "$(iptables-save 2>/dev/null | grep "tcp \-\-dport 53 \-j DNAT")" ]; then iptables -w -t nat -I PREROUTING -i br0 -p tcp --dport 53 -j DNAT --to 192.168.0.1 fi
Se necessário, substitua 192.168.0.1 pelo endereço interno do seu roteador (LAN).Conceder direitos de execução: chmod +x /opt/etc/ndm/netfilter.d/100-redirect.sh
10. Configurando o dnsmasq e anexando um arquivo de configuração adicional ao dnsmasq
Exclua o conteúdo do arquivo de configuração dnsmasq: cat /dev/null > /opt/etc/dnsmasq.conf
Abra o arquivo de configuração dnsmasq: mcedit /opt/etc/dnsmasq.conf
Cole (Shift + Insert) o conteúdo: user=nobody bogus-priv no-negcache clear-on-reload bind-dynamic listen-address=192.168.0.1 listen-address=127.0.0.1 min-port=4096 cache-size=1536 expand-hosts log-async conf-file=/opt/etc/unblock.dnsmasq server=8.8.8.8
Se necessário, substitua 192.168.0.1 pelo endereço interno do seu roteador (LAN).11. Incluindo uma tarefa no cron para atualizar periodicamente o conteúdo do conjunto de desbloqueio
Este é um seguro adicional caso programas / dispositivos usem seu próprio método de resolução e o endereço IP do domínio tenha sido alterado. Tudo o que você precisa fazer é executar o script unblock_ipset.sh na frequência desejada. Por exemplo, lançaremos todos os dias às 6 da manhã.Abra o arquivo / opt / etc / crontab no editor : mcedit /opt/etc/crontab
Adicione no final: 00 06 * * * root /opt/bin/unblock_ipset.sh
Se desejar, você pode comentar todas as outras tarefas de modelo. Aqui está a aparência do seu arquivo crontab:
12. Desabilitando o servidor DNS comum e reiniciando o roteador
Conecte-se à CLI do Keenetic Router (porta 23 para Telnet e 22 para SSH se o componente “SSH Server” for adicionado ao sistema).Execute o comando: opkg dns-override system configuration save system reboot
O servidor DNS incorporado ao firmware será desativado e o dnsmasq do Entware será usado. O roteador, na inicialização, verifica se a pasta opt está montada (existe uma unidade flash USB / unidade com o Entware). Se houver, um servidor DNS comum não será usado. Caso contrário, use. I.e.
removendo a unidade flash e reiniciando o roteador, tudo funcionará para você, como antes (antes de configurar).Após a reinicialização, abra o site check.torproject.org no seu navegador (ele deve ser adicionado ao arquivo unblock.txt). Se você fez tudo corretamente, verá a inscrição “Parabéns. Este navegador está configurado para usar o Tor. ":
Métodos básicos para diagnosticar erros após a configuração
Se a verificação no site check.torproject.org (que deve ser adicionada ao unblock.txt) for aprovada, mas o stub do provedor continuar aberto para outros recursos (ou não abrir), provavelmente o provedor irá interferir no tráfego DNS, substituindo as respostas - você Uma solução alternativa adicional é necessária para filtrar as consultas DNS.Se após a configuração algo não funcionar como deveria, use comandos simples para determinar a etapa do problema.Exiba o conteúdo do conjunto de desbloqueio: ipset list unblock
Se o sistema relatar que não existem conjuntos, o erro está na etapa 2 ou você não ativou o módulo Netfilter no sistema (no caso do Keenetic).Se o conjunto estiver vazio, o script unblock_ipset.sh não funcionou, o que, por sua vez, deve ser iniciado pelo script de inicialização S99unblock. Execute esse script unblock_ipset.sh manualmente. Se o conjunto estiver cheio, o erro estará na etapa 8. Se o script não puder ser executado (provavelmente, ele está aguardando a resolução do google.com), o erro estará em algum lugar do lado do servidor DNS, possivelmente na etapa 10 ou 6.Verifique se há um redirecionamento no iptables : iptables-save 2>/dev/null | grep unblock
Se não estiver lá, o erro está na etapa 9.Se todos os sites não funcionarem, ou seja, O DNS não funciona, o erro está em algum lugar no estágio 6 ou 10. Talvez, no estágio 9.Se todos os sites do unblock.txt não funcionarem (o tempo limite for excedido), mas todos os outros funcionarem, o problema está no lado do Tor, erro no estágio 3.Ignorar extra para filtrar consultas DNS pelo provedor
Se um provedor interferir no tráfego DNS, substituindo respostas por recursos bloqueados, é muito fácil contornar isso. Para isso, usaremos dnscrypt-proxy. Se você deseja e experimenta, pode substituir facilmente o dnscrypt por stubby (DNS sobre TLS).O dnscrypt será usado apenas para domínios listados em unblock.txt. Todas as outras consultas passarão por servidores DNS regulares.Se você tiver certeza de que seu provedor não filtra as consultas DNS, não precisará fazer essa configuração adicional.Você já deve ter configurado o desvio dos bloqueios descritos acima. As configurações a seguir são idênticas para o Padavan e o Keenetic OS.Instale software adicional no roteador: opkg update opkg install dnscrypt-proxy2
Abra o arquivo de configuração dnscrypt-proxy: mcedit /opt/etc/dnscrypt-proxy.toml
Localize os parâmetros listen_addresses, fallback_resolver, cache e altere-os: listen_addresses = ['127.0.0.1:9153'] fallback_resolver = '77.88.8.8:1253' cache = false
77.88.8.8:1253 é o endereço do servidor DNS Yandex com uma porta não padrão. É um backup, caso o dnscrypt-proxy tenha algum problema.Execute o dnscrypt-proxy: /opt/etc/init.d/S09dnscrypt-proxy2 start
Verifique se o dnscrypt-proxy está funcionando (você deve ver uma lista de endereços IP em resposta): dig +short google.com @localhost -p 9153
Abra o script /opt/bin/unblock_ipset.sh no editor : mcedit /opt/bin/unblock_ipset.sh
Substitua o conteúdo por:
Fizemos uma pequena alteração - agora, procurar por resolver não usa um servidor DNS comum, mas dnscrypt-proxy com porta 9153.Abra o script /opt/bin/unblock_dnsmasq.sh no editor : mcedit /opt/bin/unblock_dnsmasq.sh
Substitua o conteúdo por:
Fizemos uma pequena alteração - agora, ao gerar o arquivo unblock.dnsmasq, linhas adicionais como "server = / domain_name / 127.0.0.1 # 9153" são adicionadas. Isso significa que a resolução de domínios da lista ocorrerá através do dnscrypt-proxy.Execute unblock_update.sh: unblock_update.sh
Feito.
Todas as configurações complicadas estão por trás. Agora você editará a lista unblock.txt apenas se necessário, adicionando ou removendo domínios ou endereços IP para desbloqueio, e ativando as alterações feitas com o comando unblock_update.sh.ATUALIZAÇÃO 21/01/2019 . Muitas vezes, vêm mensagens pessoais no artigo com perguntas típicas. Vou responder aqui o mais comum.Como disponibilizar sites da zona de domínio .onion?Em torrc adicione: VirtualAddrNetwork 10.254.0.0/16 DNSPort 127.0.0.1:9053 AutomapHostsOnResolve 1
Para acessar todos os domínios da zona da cebola, adicione ao dnsmasq.conf: server=/onion/127.0.0.1
Se você não deseja abrir o acesso a todos os domínios da zona da cebola, mas apenas a determinados, adicione as seguintes entradas no dnsmasq.conf: server=/rutorc6mqdinc4cz.onion/127.0.0.1
Como ignorar bloqueios para clientes de um servidor VPN em execução em um roteador?No torrc, substitua a linha pelo TransPort por: TransPort 0.0.0.0:9141
Adicione um redirecionamento adicional com a interface necessária (INTERFACE - interface de rede VPN): iptables -t nat -A PREROUTING -i -p tcp -m set --match-set unblock dst -j REDIRECT --to-port 9141