Usando o Raspberry Pi como roteador?

Alguém já usou o Raspberry Pi como dispositivo de roteamento?

Principalmente, eu quero usá-lo para monitorar minha rede, e iria seria ótimo se tivesse uma entrada e saída para Ethernet, mas não tem, então eu gostaria de saber se é muito eficaz monitorar a rede tendo a entrada Ethernet e, em seguida, usando um dongle USB como roteador Wi-Fi. Tem alguém fez algo assim? A Internet fica muito mais lenta?

Comentários

  • Depende da velocidade da sua conexão com a Internet. A minha é de 100 Mb, então eu ‘ tenho certeza de que iria diminuir a velocidade;)
  • Eu ‘ tenho uma conexão de internet de 30 Mbps, e, no momento, com 5 Mbps de tráfego, meu raspberry pi inline com snort está consumindo ~ 50-95% da CPU e 85% da memória. Minha configuração ainda não foi ajustada, mas quero mostrar alguns números reais.
  • Alguém sabe como a alocação de largura ruim funciona com um roteador personalizado usando raspberry pi? tipo, eu tenho um sp eed of 3Mbps de conexão de internet, tenho 10 usuários. você pode explicar como será dividido? a velocidade de 3 Mbps. Obrigado. Espero que você entenda. 🙂
  • Olá kirbs. Evite fazer perguntas sobre outra pergunta. Em vez disso, abra uma nova pergunta com o link Faça uma pergunta no topo da página. Obrigado.
  • Talvez isso? learn.adafruit.com/…

Resposta

Tenho usado meu modelo B como um roteador com modelagem de tráfego, usando apenas a porta Ethernet com a qual ele vem. Aqui está uma explicação rápida sobre como :

  1. Habilite o encaminhamento IPv4 , para que seu Pi atue como um roteador, encaminhando qualquer tráfego que receber
  2. Configure seu Pi com a configuração de rede estática para que não seja influenciado pelas alterações de DHCP sugeridas abaixo. Aqui está o conteúdo do meu /etc/network/interfaces como referência:

    # pi@flux:/home/pi/projects/adsl/rrdlogger (master *) # cat /etc/network/interfaces auto lo iface lo inet loopback #iface eth0 inet dhcp iface eth0 inet static address 192.168.1.1 netemask 255.255.255.0 gateway 192.168.1.254 # IP of my ADSL router box allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp 
  3. Agora altere as configurações de DHCP da sua rede de forma que o gateway / roteador padrão seja o seu Pi. Isso provavelmente significa alterar as configurações do seu ADSL existente caixa do roteador. No meu exemplo acima, o endereço IP do meu Pi é 192.168.1.1.

Quando seus dispositivos se reconectarem ao rede, eles serão informados que seu Pi é a porta de entrada para a Internet, e todo o tráfego vinculado à Internet será enviado para ele. Seu Pi, por sua vez, retransmitirá todo o tráfego para seu roteador usual. Pode ser necessário desconectar e reconectar seus dispositivos para que essas alterações tenham efeito.

Agora você pode criar ou instalar uma ferramenta para fazer o monitoramento para você, como vnstat .

Traffic Shaping

Quanto ao Traffic Shaping, aqui está outro guia rápido e sujo que fará uso de minha própria variante pessoal do wonderershaper .

Para que isso seja útil, você precisa saber a velocidade da sua conexão com a Internet. Normalmente, você pode encontrar isso no seu (original ) interface da web do roteador “, mas, na falta disso, você pode obter uma estimativa usando um teste de velocidade .

  1. sudo apt-get install iptables
  2. wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
  3. sudo ./wondershaper eth0 será impresso o status atual de modelagem de tráfego. Obviamente, o status esperado é que não há modelagem, o que significa que há “uma única regra em vigor, chamada pfifo_fast:

    • (eth0 é o nome do adaptador de rede com fio em um modelo B. Consulte ifconfig para os nomes das interfaces em seu sistema)
    # pi@flux:/home/pi/projects/adsl/wondershaper (master *) # sudo ./wondershaper eth0 qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 Sent 1908 bytes 15 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 
  4. sudo ./wondershaper eth0 3000 370, onde:

    • 3000 é a velocidade de downlink da minha conexão de internet em kbit . Portanto, 3Mbit == 3000kbit
    • 370 é a velocidade de uplink da minha conexão de internet, em kbit novamente.
  5. sudo ./wondershaper eth0 agora deve mostrar muito mais resultados:

    # pi@flux:/home/pi/projects/adsl/wondershaper (master *) # sudo ./wondershaper eth0 qdisc htb 1: root refcnt 2 r2q 10 default 0 direct_packets_stat 0 Sent 1858 bytes 9 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 40: parent 1:40 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 1858 bytes 9 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 10: parent 1:10 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 20: parent 1:20 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc sfq 30: parent 1:30 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 qdisc ingress ffff: parent ffff:fff1 ---------------- Sent 768 bytes 12 pkt (dropped 0, overlimits 0 requeues 0) backlog 0b 0p requeues 0 class htb 1:1 root rate 370000bit ceil 370000bit burst 10Kb cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 3459453 ctokens: 540531 class htb 1:10 parent 1:1 leaf 10: prio 1 rate 370000bit ceil 370000bit burst 1599b cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 540531 ctokens: 540531 class htb 1:20 parent 1:1 leaf 20: prio 2 rate 246000bit ceil 246000bit burst 1599b cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 813000 ctokens: 813000 class htb 1:30 parent 1:1 leaf 30: prio 3 rate 74000bit ceil 74000bit burst 1599b cburst 1599b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 2702687 ctokens: 2702687 class htb 1:40 root leaf 40: prio 0 rate 100000Kbit ceil 100000Kbit burst 512Kb cburst 1600b Sent 3486 bytes 15 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 15 borrowed: 0 giants: 0 tokens: 654609 ctokens: 1250 

Seu tráfego de rede de saída agora está sendo moldado por seu Pi, e seu tráfego de entrada está sendo ligeiramente limitado para garantir que o Pi , e não sua caixa de roteamento original, tem controle de tráfego.

Para desativar a modelagem, basta executar sudo ./wondershaper eth0 clear. Você pode alterar as taxas de uplink e downlink sem limpar primeiro , mas não faz mal.

Atualização: Você também precisa desativar a transmissão de Redirecionamentos ICMP , já que precisamos que todo o tráfego passe pelo Pi para que a modelagem aconteça.Acontece que o kernel do Linux é inteligente o suficiente para descobrir que os clientes em sua rede doméstica podem se comunicar diretamente com a caixa ADSL, em vez de direcionar o tráfego pelo Pi, e ele diz isso a eles em todas as oportunidades. Os clientes então enviam seu tráfego diretamente para sua caixa ADSL, e o Pi não tem a chance de moldá-lo. Desative-o imediatamente (perdido na próxima reinicialização):

echo 0 | sudo tee /proc/sys/net/ipv4/conf/*/send_redirects 

Atualize o seguinte para definir isso durante a inicialização: /etc/sysctl.conf

net/ipv4/conf/eth0/send_redirects = 0 

( Obrigado a https://unix.stackexchange.com/a/58081/22537 por esta dica)

Você também pode estar interessado em minhas notas pessoais sobre a configuração de um gateway Linux: http://www.robmeerman.co.uk/unix/gateway

Comentários

  • como você define o nome e a senha da rede wi-fi à qual outros dispositivos podem se conectar?
  • Um ótimo guia. Tenho uma pergunta sobre sua wondershaper sugestão: é o limite por cliente ou geral?
  • @fommil: Meu guia acima assume que você ainda usa o modem / roteador / ponto de acesso WiFi que seu ISP lhe deu, mas que você o configure de forma que todos os clientes que se conectam sejam informados de ” Envie o tráfego para o Pi “. Isso geralmente é feito inserindo seu endereço IP Pi ‘ s (estático!) Nas configurações de DHCP da caixa do seu ISP. Normalmente em um campo denominado ” Gateway “, ” Gateway padrão “, ou talvez ” Rota padrão “.
  • @Bob: os números que você enter são o total do seu link de internet. O script wonderershaper tenta compartilhar isso de forma justa com todos os seus clientes com base na demanda . Portanto, se apenas um cliente estiver usando a internet, ele deve obter 100% dela. Se outro cliente iniciar, eles, após um pouco de ” tempo de acomodação ” (~ 10 segundos), acabarão usando 50% cada, e assim por diante.
  • Perfeito. Apenas uma nota para @fommil, nenhum dos meus roteadores (e suponho que muitos outros sejam iguais) fornecem uma maneira fácil de definir o gateway atribuído via DHCP. Acabei desligando o DHCP no roteador e configurando um servidor DHCP no Pi – it ‘ um processo bastante simples (procure um guia se quiser).

Resposta

Tendo um pouco de experiência em rede, a primeira coisa que vem à mente é usá-lo como um Snort box, e então você não precisa se preocupar em ter apenas uma interface. Você configuraria seu switch / roteador para encaminhar todo o tráfego para o Pi, mas também passaria para o dispositivo final. Isso é conhecido como monitor switchport, mas seu dispositivo pode não é compatível. Você pode precisar de um switch gerenciado para fazer isso. O Snort então analisaria o tráfego e geraria um relatório sobre ele. Mais informações sobre o Snort http://www.snort.org/

A coisa boa sobre esse tipo de configuração é que seu Pi fica sentado de lado, observando tudo que está sendo executado por meio do switch, em vez de ficar em linha com os dados. Se você tiver um software g litch assim, o tráfego ainda pode fluir, mas não ser monitorado. Com o que você está descrevendo com duas interfaces, seu programa trava, sua rede trava.

Isso não usa o pi como roteador, mas permite monitorar e relatar o tráfego que está se movendo pela rede .

Resposta

Usei o Raspberry Pi para roteamento e funcionou bem. Como você disse, você precisa de pelo menos mais uma interface de rede, pois o Raspberry Pi possui apenas uma porta Ethernet. Você pode adicionar outra interface conectada à porta USB. Usei um modem GSM e um stick Wi-Fi.

Observações:

  • Use um hub USB com alimentação. Dispositivos Wi-Fi e GSM exigem mais energia do que as portas USB do Raspberry Pi podem fornecer.
  • Se você comprar dispositivos Wi-Fi, compre um com bom suporte para Linux. Você quer um que funcione em modo de ponto de acesso, e nem todos os dispositivos fazem. Verifique em linuxwireless.org .

Aqui está meu postagem do blog sobre roteamento e outra sobre a configuração de um ponto de acesso Wi-Fi . Este guia me ajudou com a configuração de roteamento. O material de roteamento não é muito específico para o Raspberry Pi; qualquer coisa que funcione no Linux em geral deve ser possível. Os detalhes dependem um pouco de quais distribuição que você usa.

Resposta

Estou usando o Raspberry Pi como roteador há cerca de um mês, sem problemas . Eu tenho uma porta de acesso Wi-Fi comercial real, não um roteador Wi-Fi doméstico, então usei isso. Também tenho um conversor USB-para-Ethernet que era emprestado ” do Wii.Isso vai para a LAN doméstica, e a Ethernet embutida do Raspberry Pi vai para a WAN / Internet.

Vá buscar uma cópia do IPFire para o Raspberry Pi. Você quer a versão ARM, sem um console serial e a versão estável mais recente. Clique na guia ARM. Baixe a ” Imagem para a arquitetura armv5tel “.

Inicialize. Conecte uma TV HDMI e um teclado. Responda às primeiras perguntas. O resto da configuração pode ser feito em um navegador a rede doméstica, então você não precisará mais da TV ou do teclado depois disso.

Não foi muito difícil e funcionou como um campeão! Aqui estão as instruções formais: https://wiki.ipfire.org/hardware/arm/rpi/threeplus

Uma última coisa. Se você for usar um dongle Wi-Fi alimentado por USB, verifique a fonte de alimentação do Raspberry Pi. Uma fonte de alimentação USB de 700 mA pode ser suficiente para alimentar o Raspberry Pi, mas não deixa muito para alimentar o Wi -Fi. Use um hub USB com alimentação ou alimente o Raspberry Pi com uma fonte de alimentação USB de 1 a 2 A.
Boa sorte!

Resposta

(Este adendo segue minha resposta anterior , que foi um guia sobre como configurar seu Pi como o gateway de Internet da sua LAN)

Não contente em monitorar meu uso geral da Internet, escrevi uma ferramenta que monitora o uso da Internet de cada dispositivo em minha LAN. Isso me permite ver o uso instantâneo em uma janela de console e gerar gráficos de uso histórico para que eu possa ver o que aconteceu durante a noite.


Rhodes , uma ferramenta para monitorar o uso de rede em tempo real e histórico de dispositivos LAN (com base no endereço MAC): https://github.com/meermanr/adsl/tree/master/rhodes

Amostra de saída do console:

193 kiB/s TX 17 kiB/s RX 0004edbf98c0 home.gateway (Billion Electric Co.) 0 kiB/s TX 0 kiB/s RX 2002af18dc15 Samsung Galaxy Tab 10.1, Vicky 0 kiB/s TX 0 kiB/s RX 34af2c01197b Nintendo 3DS:XL, Robert 0 kiB/s TX 0 kiB/s RX 34af2c3af204 Nintendo 3DS:XL, Vicky 0 kiB/s TX 0 kiB/s RX 34af2c9cfffd Nintendo WiiU 0 kiB/s TX 0 kiB/s RX 6045bd9c9dbc Xbox360 Slim 0 kiB/s TX 0 kiB/s RX 745e1c56c297 Pioneer SX-LX57 13 kiB/s TX 109 kiB/s RX 7831c1be0c34 Az Pro (Macbook Pro) 0 kiB/s TX 0 kiB/s RX 80ea96e6214e Roberts-AirPort-Time-Capsule 0 kiB/s TX 0 kiB/s RX 88308a770370 Samsung Galaxy S3, Vicky 189 kiB/s TX 211 kiB/s RX b827eb8fc0f3 Flux (Raspberry Pi) 2 kiB/s TX 39 kiB/s RX b8e8563acb34 Macbook Pro, Vicky 0 kiB/s TX 0 kiB/s RX d022be2c26ef Samsung Galaxy Note 3, Rob 0 kiB/s TX 0 kiB/s RX f82fa89368ea 

A primeira coluna mostra quanto dispositivos estão transmitindo, o que geralmente significa fazer upload para a Internet. A exceção a isso é o próprio roteador ADSL (home.gateway no exemplo acima), que transmite os dados recebidos do ISP para o dispositivo que os solicitou (ou seja, downloads). Claro que também transmite uploads para a internet, mas faz isso usando seu modem ADSL, que não está na LAN e, portanto, não é visível para esta ferramenta.

A outra exceção seria o Raspberry Pi (” Flux “acima), que transmite todos os dados que gerencia, em ambas as direções. ) números para baixar. A terceira coluna é o endereço MAC do dispositivo (sem os separadores “:” ou “-” usuais). A quarta coluna mostra o nome legível do dispositivo, se for conhecido.

Gráficos são gerados executando ./index.py, que se destina a ser chamado de um servidor da web como lighttpd (com index.py adicionado à index-file.names definição de configuração em /etc/lighttpd/lighttpd.conf). Você pode apenas executá-lo manualmente e ele irá gerar algumas imagens e imprimir HTML em STDOUT. Portanto, você deve redirecionar isso para um arquivo que pode ser aberto em um navegador:

./index.py > index.html 

Em seguida, abra index.html em sua navegador.

Requisitos de instalação (todos podem ser instalados com apt-get install):

  • tcpdump – Ferramentas de linha de comando para capturar e descrever o tráfego de rede
  • rrdtool – Ferramenta de banco de dados Round Robin, registros e gráficos de dados de série temporal
  • rrdcached – Round Robin Database Caching Daemon, serviço que reduz sobrecarga ao trabalhar simultaneamente com vários arquivos RRD.
  • pypy-upstream (uma implementação rápida da linguagem de programação Python)

    • Você pode usar o Python padrão como quiser: python rhodes.py (pypy é uma implementação alternativa da linguagem de programação Python que faz a compilação Just-In-Time (JIT), então os scripts de longa execução usarão menos ciclos de CPU ao custo de mais memória)

Nota de uso : A ferramenta “tcpdump” usado por este script requer privilégios de root para acessar o tráfego de rede bruto. Isso é feito iniciando sudo tcpdump quando o script é iniciado, então você pode ser solicitado a inserir sua senha. Pessoalmente, adicionei uma regra NOPASSWD a /etc/sudoers, então nunca fui questionado.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *