faça você mesmo

Como usar o Raspberry Pi como roteador e filtro de conteúdo

Como usar o Raspberry Pi como roteador e filtro de conteúdo

Se você tem filhos em casa, pode ter sentido a necessidade de bloquear alguns sites indesejáveis. Outra área de problema comum são os sites de mídia social - você pode achar que crianças (e adultos) perdem muito tempo no Facebook, Twitter etc. e deseja bloqueá-los ou, pelo menos, torná-los acessíveis apenas em determinados horários do dia.

Para tornar isso possível, precisamos de um roteador mais filtro de conteúdo - um aparelho pelo qual todos os nossos dispositivos, como laptops, smartphones e tablets se conectam à internet. Este aparelho também intercepta os sites que esses dispositivos acessam e os bloqueia se tentarem acessar um site da lista negra.

Existem filtros de conteúdo comerciais prontos para usar disponíveis no mercado, mas para nós, do tipo faça você mesmo, não há graça nisso. Assim, vamos sujar as mãos e configurar um Raspberry Pi para o trabalho. Escolhemos o Raspberry Pi para este projeto por causa de seu tamanho minúsculo e consumo de energia insignificante. Contudo, estas instruções funcionarão quase inalteradas com quase todos os computadores rodando Debian Linux ou um derivado (Ubuntu, Mint etc.).

Isenção de responsabilidade: Este guia pressupõe um nível intermediário de experiência com Linux e uma vontade de solucionar problemas se e quando eles surgirem. Experiência anterior com linhas de comando e firewalls é um bônus.

Como funciona

Hardware

Estaremos usando o Raspberry Pi 3 como um filtro de conteúdo de roteador. Para isso, vamos precisar duas interfaces de rede nele - um para se conectar à internet e o outro para atuar como um ponto de acesso WiFi para os outros dispositivos se conectarem. O Raspberry Pi 3 possui um conector Ethernet integrado e um módulo WiFi. Portanto, neste cenário, podemos usar um cabo Ethernet (eth0) para se conectar à internet, enquanto o módulo WiFi (wlan0) funcionará como um ponto de acesso.

Claro, conectar-se à Internet usando Ethernet nem sempre é possível. Neste caso, você precisará de um dongle USB WiFi compatível (wlan1) para se conectar à Internet, enquanto o módulo de WiFi integrado (wlan0) funcionará como um ponto de acesso. Esta é a configuração que usaremos neste guia.

Lembre-se de que, embora o Raspberry Pi 3 seja mais adequado para uma configuração doméstica com alguns laptops e smartphones, não fornecerá o desempenho necessário para uma configuração de grande escritório. Procure um hardware mais capaz se muitos clientes se conectarem ao seu filtro de conteúdo.

Programas

Usaremos o excelente E2guardian para interceptar e filtrar nossas solicitações da web. Uma vez que a filtragem de conteúdo pode ter um impacto no desempenho (dependendo do tamanho da lista de bloqueio), usaremos o cache do Squid para compensar esse impacto no desempenho.

Pré-requisitos

1. Raspberry Pi 3 com a versão mais recente do Raspbian OS instalada e acesso à Internet. Se você está apenas começando a usar o Raspberry Pi, recomendamos a leitura de nosso guia sobre como começar a usar o Raspberry Pi 3.

2. [Opcional] Dongle wi-fi USB - Isso é necessário se, e somente se, você não conseguir conectar o Raspberry Pi 3 à Internet com um cabo Ethernet. Se você está planejando usar WiFi para se conectar à Internet e como um ponto de acesso, isso é necessário.

3. Acesso físico ao Raspberry Pi - Devido à natureza deste artigo, um único erro na configuração do firewall pode bloqueá-lo do seu Pi se você usá-lo no modo sem cabeça. Portanto, é recomendável que você conecte um monitor, teclado e mouse durante a configuração até que tudo esteja configurado.

Use Raspberry Pi como roteador

1. Conecte seu Pi à internet usando Ethernet (eth0) Se você estiver usando um dongle WiFi USB (provavelmente wlan1) em vez disso, conecte-o à Internet. Saia do módulo WiFi integrado (wlan0) como é por agora.

2. Pegue o software de pré-requisito que precisamos:

sudo apt install iptables iptables-persistent hostapd dnsmasq squid3

3. Vamos configurar hostapd para que nosso Pi pode atuar como um ponto de acesso WiFi. Para isso, crie um arquivo de configuração usando seu editor de texto favorito, por exemplo sudo nano /etc/hostapd/hostapd.conf, e cole o conteúdo de nossa página GitHub.

Algumas linhas que você pode querer modificar de acordo com o gosto são:

ssid = RaspberryPiAP

Esta linha determina qual será o nome do ponto de acesso. Eu escolhi RaspberryPiAP.

wpa_passphrase = beebom.com

Isso especifica a senha usada para acessar o ponto de acesso. eu usei beebom.com, mas é recomendado alterá-lo para uma senha forte de sua escolha.

4. Em seguida, vamos configurar um servidor DHCP usando dnsmasq. Edite o arquivo de configuração /etc/dnsmasq.conf, e adicione as seguintes linhas no final:

[código fonte] interface = lo, wlan0

no-dhcp-interface = lo

dhcp-range = 192.168.8.20,192.168.8.254,255.255.255.0,12h [/ sourcecode]

Isso torna a interface wlan0 (o módulo WiFi integrado) distribuir endereços IP para clientes no 192.168.8.20 para 192.168.8.254 alcance.

5. Configuração um endereço IP estático para o módulo WiFi integrado wlan0. Abra o arquivo / etc / network / interfaces. Provavelmente se parece com isto (ênfase minha):

[código fonte] diretório-fonte /etc/network/interfaces.d

auto lo
iface lo inet loopback

manual iface eth0 inet

allow-hotplug wlan0
manual iface wlan0 inet
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]

Aqui, localize as linhas em negrito com wlan0, e mude-os, para que o arquivo se pareça com o seguinte:

[código fonte] diretório-fonte /etc/network/interfaces.d

auto lo
iface lo inet loopback

manual iface eth0 inet

allow-hotplug wlan0
iface wlan0 inet static
hostapd /etc/hostapd/hostapd.conf
endereço 192.168.8.1
máscara de rede 255.255.255.0
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf[/sourcecode]

Isso configura um endereço IP estático 192.168.8.1 em wlan0. Lembre-se deste endereço, como este é o endereço que usaremos para nos comunicar com nosso Raspberry Pi mais tarde.

6. Agora configurar encaminhamento de IP. Edite o arquivo /etc/sysctl.conf, e adicione a seguinte linha a ele:

net.ipv4.ip_forward = 1

7. Agora vamos configurar tradução de endereço de rede (NAT) em nosso firewall. Para fazer isso, digite os 2 comandos a seguir:

sudo iptables -t nat -A POSTROUTING -s 192.168.8.0/24! -d 192.168.8.0/24 -j MASQUERADE sudo iptables-save | sudo tee /etc/iptables/rules.v4

O primeiro comando configura o NAT, enquanto o segundo comando salva nossa configuração de firewall atual em um arquivo chamado /etc/iptables/rules.v4. Isso garante que a configuração persiste durante as reinicializações.

8. Neste ponto, reinicie o seu Raspberry Pi. Isso é para ter certeza de que todas as mudanças que fizemos nos arquivos de configuração são funcionais.

9. Após a reinicialização, você deve ser capaz de ver o recém-criado RaspberryPiAP ponto de acesso (a menos que você alterou o nome na etapa 3) em seus outros dispositivos, como laptops e smartphones. Você pode se conectar a ele usando a senha especificada e acessar a internet.

Isso é tudo que você precisa fazer se precisar de um roteador básico de baixa potência. Se você quiser configurar um filtro de conteúdo também, continue lendo.

Configurar filtro de conteúdo usando E2guardian

E2guardian não está presente nos repositórios Raspbian padrão. Para instalá-lo, acesse a página do projeto no Github e baixe o arquivo que termina em armhf.deb. Agora abra o Terminal, vá para o seu Transferências pasta (ou onde você escolheu para baixar o arquivo) e instale-o:

cd ~ / Downloads sudo dpkg -i ./e2guardian_*_jessie_armhf.deb

Você provavelmente verá alguns erros sobre pacotes ausentes ao instalar o E2guardian. Para corrigir isso, deixe a instalação terminar e digite o seguinte comando:

sudo apt-get install -f

Usando listas de conteúdo

Existem várias listas presentes no / etc / e2guardian / lists diretório. Esses arquivos incluem bannedextensionlist, bannediplist, bannedphraselist, bannedsitelist, bannedurllist, exceptionlist e muito mais. Esses arquivos são devidamente documentados com comentários. Dê uma olhada neles para se familiarizar.

Por exemplo, vamos supor que você deseja bloquear algumas redes sociais populares. Abra o / etc / e2guardian / lists / bannedsitelist arquivo, e sob o Cobertor SSL / CONNECT bloquear (uma vez que esses sites usam https em vez de simples http), adicione as seguintes linhas:

facebook.com twitter.com reddit.com

Agora recarregue o serviço E2guardian usando o comando sudo service e2guardian reload (você terá que executar este comando toda vez que modificar os arquivos de configuração) Todos os clientes que usam o filtro de conteúdo agora não poderão acessar esses sites. Mesmo os sites para celular (por exemplo, m.twitter.com) e aplicativos dedicados para smartphones não funcionarão.

E2guardian também bloqueia pornografia por padrão. Se você deseja permitir (ei, não estamos julgando), abra o / etc / e2guardian / lists / bannedphraselist arquivo e localize a seguinte linha:

.Incluir

Comente-o adicionando um cerquilha (símbolo #) para a frente, de modo que fique assim:

#.Incluir

Novamente, recarregue a configuração com sudo service e2guardian reload, e você está feito.

Configurando clientes

Agora que nosso servidor proxy está configurado, podemos passar à configuração dos clientes. Para usar o filtro de conteúdo, todos os clientes precisam estar conectados ao hotspot do Rapberry Pi e configurados para usar o proxy. Configurar um proxy é diferente em todos os sistemas operacionais e dispositivos. No entanto, vamos demonstrar como configurá-lo no Windows e Android, uma vez que são mais populares.

janelas

Vamos para Painel de controle> Rede e Internet> Opções de Internet. Na janela que se abre, navegue até o Conexões guia e clique em Configurações de lan.

Aqui, clique em Avançado, e entrar 192.168.8.1 como o endereço de proxy, e 8080 como a porta. Certifique-se de que o Use o mesmo servidor proxy para todos os protocolos caixa está marcada. Clique OK.

Isso é tudo o que você precisa fazer. Os navegadores da web mais populares, como Google Chrome e Firefox, irão obter automaticamente as configurações de proxy do sistema.

Android

Vamos para Configurações do sistema> WiFi. Agora toque e segure o ponto de acesso Raspberry Pi e selecione Modificar rede. Sob Opções avançadas, colocou o Proxy opção para Manual. Agora, sob Nome do host proxy, insira o endereço IP do Pi 192.168.8.1. Sob Porta proxy, entrar 8080, e toque em Salve .

Agora você pode testar a configuração do proxy. Tente acessar um site em sua lista negra - você verá uma página de “Acesso negado” como esta:

Aplicação do uso de proxy

Até agora, estamos contando com os clientes jogando bem e usando a internet através do filtro de conteúdo. Claro, isso raramente acontece no mundo real. Portanto, para forçar todos os clientes a passarem pelo proxy, execute os seguintes comandos:

sudo iptables -A PREROUTING -t nat -p tcp --destination-port 80 -j REDIRECT --para as portas 8080 sudo iptables -A PREROUTING -t nat -p tcp --destination-port 443 -j REDIRECT --to- portas 8080 sudo iptables-save | sudo tee /etc/iptables/rules.v4

Isso irá redirecionar automaticamente todos http (porta 80) e https (porta 443) tráfego no ponto de acesso do raspberry Pi para o proxy do filtro de conteúdo. Agora, sem definir as configurações de proxy em seus dispositivos, eles não poderão acessar com segurança https sites como Facebook, Gmail, Twitter etc. em tudo. Isso garante que qualquer pessoa que desejar se conectar ao seu ponto de acesso Pi tenha de passar pelo proxy.

Isso é tudo que você precisa saber para o uso básico do filtro de conteúdo. Se você deseja aprender alguns recursos avançados, continue lendo.

Cenários de uso avançado

Configurando um filtro baseado em tempo

Digamos que você queira bloquear os sites que mencionamos no Usando listas de conteúdo seção acima, mas apenas em certas horas do dia. Eu pessoalmente prefiro bloquear o Reddit, Facebook e Twitter durante o horário de trabalho (9h00 - 17h00) durante a semana porque eles são um pesadelo de produtividade.

Abra o / etc / e2guardian / lists / bannedsitelist arquivo e adicione a seguinte linha a ele:

tempo: 9 0 17 0 01234

Esta linha funciona da seguinte maneira - o cronômetro começa às 9 (9 horas da manhã) 0 (00 minutos), até 17 (17h no formato de 24 horas) 0 (00 minutos), de 0 (Segunda-feira) para 4 (Sexta-feira).

Vejamos outro exemplo:

tempo: 10 30 20 45 024

Isso bloqueará os sites configurados das 10h30 (10h30) às 20h45 (20h45) na segunda (0), quarta-feira (2) e sexta-feira (4).

Permitindo que certos endereços IP ignorem o proxy

É possível permitir que determinados endereços IP contornem o filtro de conteúdo. Isso pode ser configurado por configurando o firewall. Você deve ter notado que em nosso dnsmasq.conf, nós apenas configuramos o ponto de acesso para atribuir endereços IP de 192.168.8.20 para 192.168.8.254 para os clientes. Isso significa endereços de 192.168.8.2 para 192.168.8.19 não será atribuído automaticamente a nenhum cliente (não podemos usar 192.168.8.1 porque é isso que o nosso próprio Raspberry Pi usa).

Para fazer isso, primeiro configurar um IP estático no dispositivo ao qual deseja conceder acesso total. Por exemplo, para configurar um IP estático de 192.168.8.2 em uma máquina Windows, use estas configurações:

Agora, em seu Raspberry Pi, execute os seguintes comandos.

sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 --destination-port 80 -j RETORNO sudo iptables -t nat -A PREROUTING -p tcp -s 192.168.8.2 --destination-port 443 -j RETURN

Agora, desative o uso de proxy em seu dispositivo, e tente abrir um site banido. Você deve ser capaz de abri-lo. Se houver mais endereços IP que você deseja adicionar à lista branca, execute os dois comandos acima novamente, mas substitua o endereço IP pelo que deseja. Quando estiver satisfeito com a lista de permissões, execute o seguinte comando para salvar a configuração do firewall:

sudo iptables-save | sudo tee /etc/iptables/rules.v4

Uma coisa importante a ter em mente é que você não deve permitir que ninguém saiba os endereços IP permitidos. Caso contrário, eles podem simplesmente definir seu dispositivo para aquele endereço IP para contornar o proxy.

Preocupações com segurança

Como o Raspberry Pi será o ponto de entrada e saída para todas as suas comunicações, é importante protegê-lo. Aqui estão algumas dicas sobre como melhorar a segurança. Lembre-se de que essas são apenas dicas básicas e não uma lista abrangente de armadilhas de segurança. A quantidade de segurança dependerá da natureza da sua rede (doméstica, pequeno escritório, etc.) e de quão travessos os usuários são.

Desativar serviços desnecessários

Como este é um roteador, é melhor executar apenas os serviços de que necessitamos. Mais serviços em execução significam mais vulnerabilidades que podem ser exploradas. Definitivamente não use este sistema como um desktop normal.

Vamos para Menu> Preferências> Configuração Raspberry Pi. No Interfaces guia, desative todos os serviços que você não precisa.

Alterar a senha padrão

Uma nova instalação do Raspbian vem com a senha padrão 'raspberry' para o usuário padrão 'pi'. Recomenda-se alterá-lo para uma senha mais segura. Para alterá-lo, abra um terminal e execute este comando:

senha

Remova o monitor e outros periféricos

Como tudo o que será executado neste Pi é o software necessário para usá-lo como roteador e filtro da web, não precisamos de um monitor ou outros periféricos, como mouse e teclado, acoplados a ele. Se você precisar alterar as configurações e tal, pode sempre usar SSH ou conectar um monitor e teclado conforme necessário.

Desligue o login automático

O Raspbian está configurado para fazer login automaticamente com as credenciais de usuário 'pi' sem solicitar a senha. Isso pode ser bom para uma área de trabalho familiar de uso geral, mas perigoso para um roteador. Para desativar isso, na área de trabalho do Raspbian, vá para Menu> Preferências> Configuração Raspberry Pi. No Sistema guia, na frente do Login automático título, desmarque o Faça login como usuário 'pi' caixa de seleção.

Na mesma caixa de diálogo, também é aconselhável definir o Bota configuração para Para CLI. Isso economizará recursos, pois não precisamos de uma GUI em um roteador. Se você quiser usar a área de trabalho por algum motivo, faça o login com seu nome de usuário e execute o startx comando para ligar a interface gráfica.

Resolução de problemas comuns

As interfaces continuam sendo renomeadas

Isso é muito comum se você estiver usando duas interfaces sem fio no seu Pi. Se você estiver usando Ethernet para conectar seu Pi à internet, você pode ignorar esta seção com segurança. O problema é que ambas as interfaces sem fio (wlan0 e wlan1) às vezes trocam de nomes após uma reinicialização. Ou seja, o módulo WiFi integrado wlan0 é renomeado para wlan1, e vice versa. É claro que isso é um grande problema, já que contamos com eles tendo um nome consistente para nossos arquivos de configuração. Veja como torná-lo consistente nas reinicializações:

1. Descubra o Endereço MAC de suas interfaces. Execute o comando ifconfig | grep HWaddr no seu Raspberry Pi. Você verá uma saída como a seguinte:

Anote o texto à direita da palavra 'HWaddr' no wlan0 e wlan1 seção. Você pode ignorar com segurança o eth0 seção. Estes são os endereços MAC de suas interfaces sem fio.

Se você não tiver certeza de qual endereço MAC pertence a qual interface, simplesmente desconecte o dongle USB WiFi e execute o comando novamente. O wlan interface que surge agora é a sua interface WiFi integrada, enquanto a outra é USB.

2. Crie um novo arquivo /etc/udev/rules.d/10-network.rules usando seu editor de texto favorito. Por exemplo :

sudo nano /etc/udev/rules.d/10-network.rules

3. Insira o seguinte texto neste arquivo. Substitua o xx: xx: xx: xx etc. pelo endereço MAC apropriado:

[código fonte] # Configure o módulo WiFi integrado como wlan0. Substitua o xx: xx: xx etc. pelo
# endereço MAC do módulo integrado
SUBSISTEMA == "net", ACTION == "add", ATTR address == "xx: xx: xx: xx: xx: xx", NAME = "wlan0"

# Configure o dongle WiFi USB como wlan1. Substitua o yy: yy: yy etc. pelo
# Endereço MAC do dongle USB
SUBSYSTEM == "net", ACTION == "add", ATTR address == "yy: yy: yy: yy: yy: yy", NAME = "wlan1" [/ código fonte]

Certifique-se de que o endereço MAC da interface WiFi integrada corresponde a wlan0, e o USB WiFi para wlan1 já que essa é a convenção que seguimos neste guia.

4. Reinicie seu Raspberry Pi. Suas interfaces começarão com o nome correto agora.

Redefinindo a configuração do firewall

Outro problema comum é um firewall mal configurado. Dependendo da configuração da sua rede, podem ser necessárias várias tentativas antes de você obter o firewall correto. Se em algum momento você achar que pode ter bagunçado a configuração do firewall, execute os seguintes comandos para começar do zero:

sudo iptables --flush sudo iptables --table nat --flush sudo iptables --delete-chain sudo iptables --table nat --delete-chain

Isso irá deletar tudo configuração do firewall. Agora você pode começar a configurar o firewall do zero. Quando estiver satisfeito, execute o comando sudo iptables-save | sudo tee /etc/iptables/rules.v4 para tornar a configuração permanente.

CONSULTE TAMBÉM: Como executar comandos no Raspberry Pi por e-mail

Use seu Raspberry Pi como roteador e filtro de conteúdo

Isso tudo é para transformar seu Raspberry Pi em um roteador potente e proxy de filtro de conteúdo. Você pode obter os arquivos de configuração exatos que usamos em nossa página do GitHub. Deixe-nos saber como isso funciona para você. Se algo não funcionar como esperado ou uma etapa parecer muito confusa, sinta-se à vontade para nos fazer uma pergunta na seção de comentários abaixo.

Google comemora o dia dos namorados com um doodle incrível
Este ano, o Google está comemorando o Dia dos Namorados com um vídeo criativo animado como um doodle em que um garoto tenta impressionar uma garota co...
Adicionando suporte de chat ao vivo ao seu site com Zopim
É bastante evidente que, como usuários, às vezes enfrentamos dificuldades ao navegar por um site. Odiamos essa parte quando não temos solução, mesmo d...
Como atualizar seu iPhone do iOS 10 Beta para o lançamento público do iOS 10
O lançamento público estável do iOS 10 já foi lançado há algum tempo, agora, e se você estiver no Beta Público, talvez queira mudar para a versão está...