Configurando OpenWRT como extensor de rede wireless

De Wiki Coolab
Ir para navegação Ir para pesquisar

Sabe quando você está em uma rede wireless e precisa extender o sinal um cadin mais para chegar em outro cômodo da casa ou até o pátio? Essa guia é para você.

Lembrando, que se você está pensando em extender um sinal que já está capenda, sinto muito, essa extensão só te trará mais frustações, analise a sua situação antes de sair mudando as configurações do seu roteador.

O que faremos basicamente será conectar o nosso roteador, através do sinal de wifi à uma rede wireless, onde já temos a senha.

Materiais necessários:

 - Uma rede wifi
 - Um roteador com OpenWRT instalado
 - Computador ou celular com app de terminal para realizar as configurações

Antes de qualquer coisa, faça um backup dos seguintes arquivos que iremos editar, pois assim, em caso de erro, fica mais recuperar o roteador:

 - /etc/config/wireless
 - /etc/config/network
 - /etc/config/firewall
 - /etc/config/dhcp

Pacotes necessários

Precisamos instalar o pacote relayd, no terminal de comandos digite:

 root@cajita.lan:~# opkg update && opkg install relayd

Caso não tenha internet no roteador nesse momento, pode instalar o pacote depois das configurações.

Obter SSID, BSSID e Tipo de autenticação

Para escanear a rede e coletar dados que iremos usar na configuração, ative o wifi do roteador "extensão":

 root@cajita.lan:~# uci del wireless.@wifi-device[0].disabled
 root@cajita.lan:~# uci commit
 root@cajita.lan:~# wifi
  • Remove a opção disabled para habilitar o sinal de wifi
  • Salva a configuração
  • Liga o wireless usando o comando wifi

Agora podemos listar as redes que estão próximas do roteador, usando o comando:

 root@cajita.lan:~# iw dev wlan0 scan

O resultado será algo similar a:

BSS 38:6b:1c:27:be:e0(on wlan0)
  TSF: 950862677544 usec (11d, 00:07:42)
  freq: 2412
  beacon interval: 100 TUs
  capability: ESS (0x0411)
  signal: -95.00 dBm
  last seen: 21110 ms ago
  Information elements from Probe Response frame:
  SSID: AbreLaPuerta
  HT capabilities:
    Capabilities: 0x11ee
      HT20/HT40
      SM Power Save disabled
      RX HT20 SGI
      RX HT40 SGI
      TX STBC
      RX STBC 1-stream
      Max AMSDU length: 3839 bytes
      DSSS/CCK HT40
    Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
    Minimum RX AMPDU time spacing: 4 usec (0x05)
    HT RX MCS rate indexes supported: 0-15, 32
    HT TX MCS rate indexes are undefined
  HT operation:
    * primary channel: 1
    * secondary channel offset: above
    * STA channel width: any
  RSN:         * Version: 1
    * Group cipher: CCMP
    * Pairwise ciphers: CCMP
    * Authentication suites: PSK
    * Capabilities: 1-PTKSA-RC 1-GTKSA-RC (0x0000)

Nesse exemplo:

  • BSS 38:6b:1c:27:be:e0 é o bssid
  • SSID: AbreLaPuerta é o ssid
  • Authentication suites: PSK o tipo de autenticação usado pela rede AbreLaPuerta
  • primary channel: 1 é o canal em que está operando a rede que extenderemos

Configurando nossa extensão

Para o nosso roteador trabalhar como relay, ou seja, uma extensão da rede wireless, precisaremos criar 2 interfaces de rede, uma será chamada repetidora e a outra wwan, além de mudar o ip do nosso roteador para não conflitar com o endereço do roteador que vamos extender:

 root@cajita.lan:~# uci set network.lan.ipaddr='192.168.2.1'
 root@cajita.lan:~# uci set network.repetidora=interface
 root@cajita.lan:~# uci set network.repetidora.proto='relay'
 root@cajita.lan:~# uci add_list network.repetidora.network='lan'
 root@cajita.lan:~# uci add_list network.repetidora.network='wwan'
 root@cajita.lan:~# uci set network.wwan=interface
 root@cajita.lan:~# uci set network.wwan.proto='dhcp'
 root@cajita.lan:~# uci commit network

Para compartilhar a internet, precisamos adicionar essas novas 2 interfaces às permissões de firewall:

 root@cajita.lan:~# uci add_list firewall.@zone[0].network='repetidora'
 root@cajita.lan:~# uci add_list firewall.@zone[0].network='wwan'
 root@cajita.lan:~# uci commit firewall

Precisamos desabilitar a entrega de IP feita pela rede lan porque quem cuidará disso será o roteador onde nos conectaremos:

 root@cajita.lan:~# uci set dhcp.lan.ignore='1'
 root@cajita.lan:~# uci commit dhcp

Configure o roteador extensor para conversar no mesmo canal que a rede que extenderemos:

 root@cajita.lan:~# uci set wireless.radio0.channel='1'

Adicione uma interface extra de wifi que se conectará à rede:

 root@cajita.lan:~# uci set wireless.wwan=wifi-iface
 root@cajita.lan:~# uci set wireless.wwan.device='radio0'
 root@cajita.lan:~# uci set wireless.wwan.network='wwan'
 root@cajita.lan:~# uci set wireless.wwan.mode='sta'
 root@cajita.lan:~# uci set wireless.wwan.ssid='AbreLaPuerta'
 root@cajita.lan:~# uci set wireless.wwan.bssid='38:6B:1C:27:BE:E0'
 root@cajita.lan:~# uci set wireless.wwan.encryption='psk'
 root@cajita.lan:~# uci set wireless.wwan.key='A senha da rede que extenderemos'

E configure a interface de wifi já existente para que seja o AP, onde cada celular ou computador se conectará:

 root@cajita.lan:~# uci set wireless.@wifi-iface[0].network='lan'
 root@cajita.lan:~# uci set wireless.@wifi-iface[0].mode='ap'
 root@cajita.lan:~# uci set wireless.@wifi-iface[0].ssid='Extendendo a rede'
 root@cajita.lan:~# uci set wireless.@wifi-iface[0].encryption='none'

Salve as mudanças:

 root@cajita.lan:~# uci commit wireless

E reinicie os serviços alterados:

 root@cajita.lan:~# wifi reload
 root@cajita.lan:~# /etc/init.d/odhcpd restart
 root@cajita.lan:~# /etc/init.d/firewall restart
 root@cajita.lan:~# /etc/init.d/network restart

Pelas alterações, provavelmente você foi chutada do roteador XD Faça o teste, veja se a rede Extendendo a rede está ativa e se ela te permite conectar à internet. Configuramos essa rede de forma aberta, ou seja, sem senha. Por questões de segurança, idealmente adicione uma senha à ela e use preferencialmente o protocolo psk2 por ser mais forte.

Adicionar configuração para IPv6

Caso queira adicionar suporta para IPv6, precisa adicionar umas configurações extras para dhcp:

 root@cajita.lan:~# uci set dhcp.wan.interface=wwan
 root@cajita.lan:~# uci set dhcp.wan.ra=relay
 root@cajita.lan:~# uci set dhcp.wan.ndp=relay
 root@cajita.lan:~# uci set dhcp.wan.master=1
 root@cajita.lan:~# uci commit dhcp

Reinicie o serviço de DHCP:

 root@cajita.lan:~# /etc/init.d/odhcpd restart

A internet não tá funcionando?

  • Certifique-se que a rede que você quer extender esteja funcionando e se conectando à internet;
  • Certifique-se que o roteador extensor está recebendo um IP e que está podendo acessar à internet, para isso conecte-se ao roteador através do wifi ou cabo e abra novamente o terminal do roteador. Como desabilitamos o dhcp da rede lan do roteador extensor, você deverá conectar-se através do hostname, no nosso exemplo seria ssh root@cajita.lan. Se por um acaso você não lembra o hostname do seu roteador, adicione manualmente o ip 192.168.2.9 ao teu computador e tente novamente acessar o terminal do roteador através do comando ssh root@192.168.2.1.
  • Depois de conectar-se ao termianl do roteador, faça:
 root@cajita.lan:~# ip a

Sairá algo assim:

 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
     inet 127.0.0.1/8 scope host lo
        valid_lft forever preferred_lft forever
     inet6 ::1/128 scope host
        valid_lft forever preferred_lft forever
 2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel master br-lan state DOWN qlen 1000
     link/ether c4:6e:1f:3a:d8:64 brd ff:ff:ff:ff:ff:ff
 4: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
     link/ether c4:6e:1f:3a:d8:64 brd ff:ff:ff:ff:ff:ff
     inet 192.168.2.1/24 brd 192.168.2.255 scope global br-lan
        valid_lft forever preferred_lft forever
     inet6 fd23:da5f:e7e5::1/60 scope global
        valid_lft forever preferred_lft forever
     inet6 fe80::c66e:1fff:fe3a:d864/64 scope link
        valid_lft forever preferred_lft forever
 5: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
     link/ether c4:6e:1f:3a:d8:64 brd ff:ff:ff:ff:ff:ff
     inet 192.168.0.103/24 brd 192.168.0.255 scope global wlan0
        valid_lft forever preferred_lft forever
     inet6 fe80::c66e:1fff:fe3a:d864/64 scope link
        valid_lft forever preferred_lft forever
  • Verifique que wlan0 tenha um IP em inet
  • Verifique que o roteador esteja se conectando à internet
 root@cajita.lan:~# ping 1.1.1.1

Se aparecer algo assim:

 PING 1.1.1.1 (1.1.1.1): 56 data bytes
 64 bytes from 1.1.1.1: seq=0 ttl=53 time=52.599 ms
 64 bytes from 1.1.1.1: seq=1 ttl=53 time=53.559 ms
 64 bytes from 1.1.1.1: seq=2 ttl=53 time=62.949 ms

Significa que seu roteador está conectando-se à internet

  • Verifique que tenha o pacote relayd instalado:
 root@cajita.lan:~# opkg info relayd
 Package: relayd
 Version: 2016-02-07-ad0b25ad-2
 Depends: libc, libubox
 Status: install user installed
 Architecture: mips_24kc
 Installed-Time: 1624390786