Existem várias maneiras de bloquear anúncios em seu navegador, mas e se você pudesse bloqueá-los no roteador? Veja como usar o DD-WRT firmware e “envenenamento de DNS” deliberado para bloquear anúncios para todos os dispositivos em sua rede.
Visão geral
Atualizar : Guia atualizado para refletir o feedback fornecido pelos comentadores e atualizou o pacote anti-anúncios com o executável de servidor de pixel mais recente e um changelog.
A primeira pergunta na mente de todos agora é "por que não usar bloco de anúncios ?”
Para muitas pessoas, simplesmente não há um motivo, especialmente com a nova capacidade do Chrome de replicar as extensões que você usa para todos os computadores em que o Chrome está sendo executado.
A resposta está em algum lugar entre a sobrecarga reduzida de não ter que ensinar todos os usuários de sua rede sobre bloco de anúncios (Estou falando com você mãe, irmã, avó e secretária do escritório) e a conveniência de não ser incomodado com isso em cada computador que você configurar. Isso pressupõe que haverá alguns computadores em sua rede nos quais você não configurará seu ambiente pessoal (por exemplo, "servidores centrais" ou VMs).
Nota : Embora eu use o método abaixo no meu roteador doméstico, descobri bloco de anúncios para ser um excelente acréscimo a ele, e eu recomendo usar os dois métodos em conjunto. também se você não tiver um roteador DD-WRT usando bloco de anúncios é mais eles o suficiente. Na verdade, gosto tanto do programa que doei para seu desenvolvedor e incentivo a todos a fazerem isso, para manter o desenvolvimento em andamento.
Como funciona?
Essencialmente, isso funciona envenenando deliberadamente nosso DNS para retornar um IP específico para domínios em uma lista não aprovada. Esta lista não aprovada conterá nomes de domínio de sites que são responsáveis exclusivamente pela entrega de conteúdo de propaganda, então não sentiremos muita falta deles.
Vamos configurar um servidor HTTP secundário no roteador para servir uma imagem transparente de um pixel, como a resposta para qualquer solicitação de URL. Em conjunto com a resolução “errada” de DNS, isso fará com que os clientes da rede solicitem o conteúdo de nosso servidor interno de pixels e obtenham uma imagem em branco em resposta.
Para gerar a lista não aprovada, criaremos uma lista pessoal em conjunto com duas listas baixadas dinamicamente. as listas dinâmicas são as MVPS arquivo hospedeiro e o Lista de domínios Yoyo , juntos eles mantêm uma lista muito extensa de sites de anúncios. Ao alavancar essas listas, ficamos com a responsabilidade de apenas adicionar o delta dos sites que ainda não estão em uma delas, em nossa lista pessoal.
Também configuraremos uma “lista de permissões” para domínios que não queremos que sejam bloqueados por qualquer motivo.
Pré-requisitos e premissas
- Paciência, jovem, esta é uma longa leitura.
- Este procedimento foi criado e testado em DD-WRT (v24pre-sp2 10/12/10 mini R. 15437 ), como tal, você já deve ter esta versão ou posterior instalada no seu roteador para usá-lo. Mais informações estão disponíveis no Site DD-WRT .
- Para facilitar as explicações, presume-se que o roteador foi restaurado para os "padrões de fábrica" ou que as configurações usadas não foram alteradas de suas predefinições "prontas para usar" desde então.
- O computador cliente está usando o roteador como servidor DNS (este é o padrão).
- Espaço para JFFS (em caso de dúvida, recomendo usar o mini versão do DD-WRT).
- Presume-se que sua rede * já esteja configurada e que seja uma classe C (uma que tem uma sub-rede de 255.255.255.0) como o último IP nessa rede classe C (x.y.z. 254 ) Será atribuído ao programa de servidor de pixel.
- A vontade de instalar winSCP .
* O script não poderá ajustar as listas de bloqueio após a primeira execução até o próximo ciclo de atualização (3 dias).
Créditos
Atualizar : Agradecimentos especiais a “mstombs” pela grande parte do código C sem o seu trabalho, tudo isso não seria possível, “Oki” por compilar a versão compatível com Atheros e citar ;-) e “Nate” por ajudar com o controle de qualidade .
Embora tenha havido muito trabalho para aperfeiçoar esse procedimento da minha parte, a inspiração para ele foi acesa pelos caras no fórum DD-WRT e alguns dos fundamentos deste guia podem ser encontrados em “ bloqueio de anúncios com DD-WRT revisitado (simples) ”, “ pixelserv sem Perl, sem jffs / cifs / usb grátis “E“ Flexion.Org Wiki no DNSmasq “Assim como outros.
Vamos começar
Habilitar SSH para acesso SCP
Ao habilitar o SSH, nós, por sua vez, nos permitimos nos conectar ao roteador usando o protocolo SCP. com isso habilitado, podemos então usar o programa winSCP para navegar visualmente pela estrutura de pastas do roteador (como veremos mais tarde).
Para fazer isso, usando a webGUI, vá para a guia “Serviços”. Encontre a seção “Shell seguro” e clique no botão de opção “Ativar” para a configuração SSHd.
Uma vez feito isso, a webGUI deve ter a aparência abaixo e você pode clicar em “Salvar” ( não aplicar ainda).
Habilitar JFFS
A fim de fazer esta configuração de uma forma que seria estábulo , reproduzível e * ser um “bom cidadão da Internet”, usaremos o JFFS para armazenar o máximo possível das configurações. Existem outras maneiras de fazer isso sem habilitar JFFS, se você não puder devido a limitações de espaço, mas elas não são abordadas aqui.
* outros métodos fazem seu roteador baixar as listas executáveis e dinâmicas do servidor de pixel sempre que o script é executado. como isso sobrecarrega os servidores que contêm as listas e os executáveis e custa dinheiro para alguém, esse método tenta evitá-lo, se possível.
Se você ainda não sabe o que é JFFS, esta explicação, tirada de Entrada da wiki DD-WRT sobre JFFS deve esclarecer as coisas:
O Journaling Flash File System (JFFS) permite que você tenha um sistema de arquivos Linux gravável em um roteador habilitado para DD-WRT. Ele é usado para armazenar programas de usuário como Ipkg e dados em uma memória flash inacessível. Isso permite que você salve arquivos de configuração personalizados, hospede páginas da Web personalizadas armazenadas no roteador e muitas outras coisas que não são compatíveis sem o JFFS.
Para habilitar o JFFS em seu roteador, vá para a guia “Administração” e encontre a seção JFFS. a imagem abaixo mostra onde você encontraria esta seção na guia “Administração”.
Na seção de Suporte JFFS2, clique nos botões de opção “Habilitar” para o “JFFS2” e (quando ele aparecer) nas configurações de “Limpar JFFS2”. Uma vez selecionado, clique em “Salvar”.
Quando as configurações forem salvas, ainda na aba “Administração”, reinicie o roteador usando o botão “Reinicializar Roteador”. Isso aplicará as configurações e executará o “formato” necessário da “partição” JFFS.
Quando a webGUI voltar da reinicialização para a guia “Administração”, espere mais meio minuto e atualize a página.
Se for bem-sucedido, você verá que sua montagem JFFS tem algum espaço livre como na imagem.
Configuração do servidor Pixel
Baixe e extraia o pacote anti-ads para arquivo zip dd-wrt que contém o executável do servidor de pixels (não estamos levando crédito, apenas evitando “hot linking”), o script de bloqueio de anúncios (escrito por você) e a lista de domínio pessoal criada por “Mithridates Vii Eupator” e I.
É hora de colocar os arquivos na montagem JFFS do roteador. para fazer isso, instale winSCP (é um tipo de configuração “próximo -> próximo -> finalizar”) e abra-o.
Na janela principal, preencha as informações como esta:
Nome do host: o IP do seu roteador (o padrão é 192.168.1.1)
Número da porta: deixe inalterado em 22
Nome do usuário: raiz (mesmo que você tenha alterado o nome de usuário da webGUI, o usuário SSH sempre será * root * )
Arquivo de chave privada: deixe em branco (isso só é necessário quando você cria uma autenticação baseada em par de chaves que não temos)
Protocolo de arquivo: SCP
Também precisamos desabilitar “Lookup user group” conforme mostrado abaixo (obrigado mstombs por apontar isso) porque winSCP está esperando um Linux completo do outro lado que os desenvolvedores do DD-WRT, apesar de todo o excelente trabalho, não foram capazes de fornecer (principalmente porque simplesmente não há espaço suficiente). Se você deixar esta opção marcada, você encontrará mensagens assustadoras ao conectar e salvar arquivos editados.
Selecione Avançar e desmarque “Pesquisar grupos de usuários”.
Embora seja opcional, você pode optar por salvar as configurações agora para uso posterior. Se você escolher salvar as configurações recomendadas, também é recomendável (apesar dos gritos do asilo “paranóico de segurança” de que estamos profanando a própria existência do SSH) que você salve a senha.
Em seguida, sua janela principal ficará como na imagem e tudo o que você terá que fazer para se conectar ao roteador é clicar duas vezes na entrada.
Como esta é a primeira vez que você se conectará ao roteador, o winSCP perguntará se você deseja confiar na impressão digital do outro lado. Clique em “Sim” para continuar.
Os desenvolvedores do DD-WRT implementaram uma mensagem de boas-vindas do Banner com algumas informações sobre o firmware que você instalou. uma vez vermelho, clique na caixa de seleção “Nunca mostrar este banner novamente” e “Continuar”.
Uma vez conectado, navegue até a pasta de nível superior (também conhecido como raiz “/”) e depois volte para “/ jffs”, pois é o único lugar permanentemente gravável no sistema de arquivos do roteador (“/ tmp” não sobrevive a reinicializações e o resto é somente leitura).
Crie uma nova pasta, pressionando F7 ou clicando com o botão direito em um espaço em branco, passe o mouse sobre “Novo” e clique em “Diretório”.
Nomeie o novo diretório “dns”. criamos esse diretório para manter as coisas no diretório jffs organizadas para uso futuro e porque estamos mudando principalmente a forma como o serviço DNS funciona.
Copie os arquivos “pixelserv” e “disable-adds.sh” do arquivo zip anti-ads-pack-for-dd-wrt, selecionando-os (use a tecla “inserir”), pressionando “F5” e depois “Copiar ”.
Nota: Se o seu roteador for baseado em Atheros (você pode verificar isso no Wiki DD-WRT ), você precisará usar o pixelserv_AR71xx fornecido pela Oki e incluído no pacote e renomeá-lo para “pixelserv” antes de continuar.
Uma vez que os arquivos estão no roteador, precisamos torná-los executáveis selecionando-os (novamente use “inserir”) clique com o botão direito e depois em “propriedades”.
Na janela de propriedades, clique no “X” para a linha “Proprietário”. que dará aos arquivos permissões de execução.
Configurações do roteador
Agora que o cenário está definido, podemos dizer ao roteador para executar o script de bloqueio de anúncio na inicialização.
Para fazer isso, na webGUI vá para a guia “Administração” e depois para a guia “Comandos”.
Na caixa de texto “Comandos” escreva a localização do script como “/jffs/dns/disable_adds.sh”, como na figura e a seguir clique em “Salvar Startup”.
Se for bem-sucedido, você verá que o script tornou-se parte da inicialização do roteador como na imagem acima.
Configurando a lista de domínios pessoais bloqueados (opcional)
Essa lista permite que você adicione domínios às listas não aprovadas, se você achar que as duas listas dinâmicas não captam nada.
Para isso, existem duas opções e funcionam em conjunto, pelo que poderá utilizar ambas da forma que lhe for mais conveniente.
Nota : o sintaxe é importante , Como na verdade estamos criando diretivas de configuração que o daemon DNSMasq (o processo responsável pelas traduções de nomes DNS para IP) usará diretamente. Como tal, a sintaxe incorreta aqui fará com que o serviço trave e deixará o roteador incapaz de resolver endereços IP para nomes de domínio (você foi advertido).
A fim de encontrar os nomes de domínio ofensivos para bloquear, você pode usar nosso “ Encontre as mensagens secretas nos cabeçalhos dos sites ”Guia como um primer. As etapas para localizar os nomes dos domínios do anúncio são praticamente as mesmas, só que neste caso você está procurando um endereço em vez de uma mensagem.
O primeiro e uma forma reconhecidamente mais acessível é colocar a lista na caixa de configuração “DNSMasq” no wegGUI. Isso ocorre porque, para adicionar a essa lista, é possível simplesmente acessar a webGUI em vez de ter que ir “nos bastidores” para fazer alterações.
Vá para a guia “Serviços”, encontre a seção “DNSMasq” e lá encontre a caixa de texto “Opções adicionais de DNSMasq”.
Nesta caixa de texto, insira as listas de domínios que você deseja bloquear com a sintaxe “endereço = / nome-do-domínio-a-bloquear / ip-do-servidor-pixel” conforme mostrado na imagem abaixo:
Onde, neste exemplo, "192.168.1.254" é o IP que é gerado para o servidor de pixel com base no "endereço de rede" de sua LAN. Se seu endereço de rede for diferente de 192.168.1.x, você terá que ajustar o endereço para o servidor de pixels de acordo.
Ao terminar, clique em “Salvar” na parte inferior da página (não se inscreve ainda).
O segundo opção é compor a lista de domínios que você deseja bloquear, para o arquivo “personal-ads-list.conf” que eu e “Mithridates Vii Eupator” montamos. Este arquivo faz parte do arquivo zip que você baixou anteriormente e é um ótimo começo para ambos os métodos.
Para usá-lo, se necessário, use seu editor de texto favorito para ajustar o IP do servidor de pixels (as mesmas restrições acima se aplicam aqui). Em seguida, simplesmente copie-o para o diretório “/ jffs / dns” como você tem os outros arquivos. Assim que estiver lá, você pode usar o winSCP para editá-lo e adicionar domínios.
Configurando a lista de permissões
Esta é a lista de domínios que serão omitidos das listas dinâmicas de “hosts” e “domínios”.
Isso é necessário porque o simples bloqueio de alguns domínios faz com que os sites que os usam não funcionem corretamente. o exemplo mais notável é “google-analytics.com”.
Se bloquearmos seu domínio, isso não mudará o fato de que os sites que o usam, fazem com que seu navegador baixe um JavaScript que roda em eventos como sair de uma página. Isso significa que, para tal site, seu navegador tentará “ligar para casa” entrando em contato com o domínio do google, não entenderá a resposta e você terá que esperar até que o script expire para continuar para a próxima página. Isso dificilmente é uma experiência de navegação agradável e é por isso que qualquer domínio contendo "google-analytics" e "googleadservices" é * totalmente isento de filtragem em código.
Esta lista é criada para você com os domínios mencionados acima, quando o script é executado pela primeira vez, no diretório “/ jffs / dns”.
Para usar a lista de permissões, abra o arquivo com winSCP e ** perpender à lista os domínios que deseja excluir, tendo o cuidado de não deixar nenhuma linha em branco (deixar uma linha em branco excluirá todos os domínios de todas as listas).
* Embora o script crie a lista de permissões com os domínios dentro dele na primeira execução, ele NÃO insiste em seus presentes para execuções futuras. Portanto, se você acha que o Google deve ser bloqueado, apesar dos problemas mencionados, você pode remover os domínios da lista de permissões.
** Você deve inserir os novos domínios que deseja no início da lista. Isso ocorre por causa de um bug com a forma como o bash interpreta novas linhas ... desculpe, não tenho uma solução alternativa para isso ainda.
Execução
É isso, finalmente é hora de invocar o script e ver os resultados simplesmente reiniciando o roteador.
Para fazer isso a partir da webGUI, na guia “Administração” volte para “Gerenciamento”, na parte inferior da página clique em “Reinicializar roteador” e espere o roteador voltar a funcionar.
Pode levar alguns minutos para que o script execute suas funções pela primeira vez.
Em roteadores do tipo WRT54Gx, você saberá quando o script terminou de ser executado porque ele piscar o LED laranja Cisco na frente do roteador (outros roteadores devem ter um sinal de "sinalização" semelhante).
Atualização: Esta parte foi * removida depois que foi descoberto que não era um recurso agnóstico de hardware.
Como estamos tentando ver a ausência de elementos na web, recomendo simplesmente navegar em alguns sites para ver o efeito.
No entanto, se você quiser ter certeza de que o procedimento foi bem-sucedido, a primeira etapa de depuração na seção de solução de problemas é um ótimo lugar para começar.
* Na verdade, está comentado para que você possa restaurá-lo se tiver certeza de que não causará problemas em sua configuração.
Aproveitar!
Solução de problemas
Se você tiver problemas, há algumas coisas que você pode fazer para verificar o que deu errado.
-
Teste se o domínio do anúncio foi resolvido para o IP pixelserv.
Você pode fazer isso emitindo o comando nslookup contra o domínio “ofensivo”. Por exemplo, “ad-emea.dubleclick.com” faz parte dos hosts bloqueados da lista pessoal. Ao emitir “nslookup ad-emea.dubleclick.com” em um prompt de comando, o resultado deve ser semelhante a:
Onde uma resposta normal desbloqueada seria:
-
Faça de novo.
Para se certificar de que nada com a configuração do seu roteador esteja em conflito com a configuração do bloco de anúncios, restaure o roteador para “Padrões de fábrica” e tente novamente. Assim que tiver sucesso, adicione suas alterações personalizadas na esperança de que elas não entrem em conflito novamente. -
Verifique se o seu cliente está usando o roteador como DNS.
Especialmente ao usar uma VPN ou uma rede mais complexa do que a configuração normal do roteador para o computador, é possível que o computador cliente simplesmente não esteja usando o roteador como DNS. É muito fácil ver no comando acima qual é o servidor DNS que o cliente está usando, se o IP não for igual ao do roteador, você encontrou o problema. -
Limpe o cache DNS de suas máquinas pessoais.
Caso contrário, você ainda poderá ver os anúncios do site com o qual está testando, simplesmente porque seu computador já sabe como obter o conteúdo do anúncio por conta própria sem consultar o DNS para isso. No Windows, seria “ipconfig / flushdns”. -
Feche o navegador.
Às vezes, o navegador mantém as informações em cache, portanto, limpar o cache DNS conforme mostrado acima não ajuda. -
Em caso de dúvida, reinicie.
Às vezes, os caches podem persistir e a melhor maneira de se livrar deles é reinicializar. Comece com o roteador e, se o problema persistir, com o computador cliente. -
Use syslog
.
Você pode ativar o daemon syslog do roteador e, em seguida, olhar as mensagens para ver se o script encontra algum problema, examinando suas mensagens. Além disso, o script adiciona alguns apelidos de comando para tornar a depuração mais fácil.
Para fazer isso, vá até a guia “Serviços” e habilite o daemon syslog conforme a figura abaixo:
Nota: O "servidor remoto" é usado quando você tem um servidor syslog de escuta em outra máquina (como com kiwi ) se você não tiver um, simplesmente deixe em branco.
Uma vez ativado, você pode ver as mensagens de depuração olhando para o / var / logs / messages arquivo em um terminal .
* Para ver TODAS as mensagens do boot, você pode usar “more / var / log / messages”.
* Para ver apenas as mensagens do script no log, use o alias “entupir”.
* Para ver as mensagens à medida que chegam, em tempo real, use ”tail -f / var / log / messages” ou por seu apelido “tlog”. -
Entenda o script.
Mesmo que eu tenha feito este vídeo do YouTube para uma versão mais antiga deste guia e do script, ele ainda contém muitas verdades e explicações que se aplicam ao funcionamento da nova versão aprimorada.