Discuta este tópico no fórum

Se este conteúdo te ajudou, deixe um presente!

quarta-feira, 8 de maio de 2013

OpenWRT: Utilizando conexões wireless para ligar duas redes - conceitos


Como este post vai ficar um pouco longo, vou dividi-lo em partes. Nesta vou apresentar o problema. Nas próximas vemos as configurações.

Um dos problemas mais comuns de redes wireless é a cobertura do sinal. Vigas, vidro e diversas coisas desconhecidas podem prejudicar seu sinal. Além disto, o sinal do seu equipamento receptor pode não ser uma das melhores maravilhas. Notei isto logo que recebi minha SmartTV. A qualidade do sinal wireless é péssima. A solução para problemas de cobertura são basicamente: reposicionar seu roteador, melhorar a antena e aumentar a potência.


Também comprei um home theater que tem rede mas a wireless é paga "a parte", e muito cara. Isto é comum também nas TVs, mas não é o meu caso. Pelo preço, prefiro comprar outra coisa. Para solucionar o problema de cobertura e para substituir a necessidade de "módulo wireless", optei por adicionar um segundo roteador.

Roteador como AP


O que, em geral, temos em casa é um roteador wireless, que faz o papel de uma ponte da rede sem fio com as portas da rede LAN cabeada (função AP). A função "roteador" é composta de outras funcionalidades como NAT, DHCP, firewall, fazendo a interligação da rede LAN, cabeada ou sem fio, ao mundo externo, geralmente conectado na porta WAN. Portanto, um roteador wireless inclui as funções de um AP simples. Para usá-lo como somente um AP, basta não usar a porta WAN e desativar o DHCP (não preciso nem dizer que dois servidores DHCP ligados em uma mesma rede é receita para desastre). Isto é comum quando o roteador é fornecido pela telecom (roteador ADSL). Achei esta figura que ilustra como ficaria a conexão entre os dois roteadores (e um modem cabeado):


Fonte:https://lantechca.files.wordpress.com/2011/05/add-wireless-ap.png

Mas essa é a melhor forma de ligar os dois roteadores? Sim. E se eu ligar a LAN do roteador da esquerda na WAN do roteador da direira? Sim, pode funcionar. Se as redes LAN dos dois roteador não forem conflitantes (ex: 10.0.0.0/24 e 192.168.1.0/24), você terá conectividade. Porém, você estará fazendo duas vezes a NAT. Se a NAT é ruim para as aplicações pear-to-pear (skype, torrent, emule), duas é um desastre. Não existe técnica de transversão NAT que ajude. Além disto, computadores que estiverem conectados nas portas LAN do roteador da esquerda não irão "enxergar" os computadores conectados no roteador da direita, seja por cabo ou sem fio (mas o inverso sim). E, para os que gostam de jogar online, vai ter ainda mais latência. Ah, e nada de IPv6 no roteador da direita.

Múltiplos access-point wireless

A tecnologia sem fio 802.11 já foi pensada na possibilidade de um usuário se deslocar ao longo de um determinado local, onde o sinal é fornecido por uma série de equipamentos. O princípio é bem simples: quando existir mais de uma rede com as mesmas características (nome, segurança, senha), é função do equipamento cliente escolher o access-point que forneça o melhor sinal. Isto sem mesmo informar a desconexão ao usuário. No máximo deve ser sentido uma pequena engasgada durante a nova autenticação. Tudo isto funcionará se as estações sem fio estiverem operando como APs e compartilharem a mesma rede local.

Aproveitando, independente do OpenWRT, se for construir uma pequena rede sem fio composta de uma série de APs conectados a uma mesma rede e que usam a mesma senha, não escolha SSID diferentes para cada uma! Só vai te atrapalhar e dificultar a vida do usuário.

Roteador Wireless e AP fornecendo múltiplos access-point wireless

Agora vamos juntar os dois conceitos: roteador operando como AP e mais de uma estação fornecendo a mesma rede sem fio. Voltando a figura anterior, se o roteador "Router" fosse substituído por um roteador wireless, você teria dois provedores do sinal da sua rede sem fio. Um seria o roteador principal, operando como roteador da rede e estação wireless, e o segundo roteador wireless operando apenas como um AP. A interconexão entre os dois é feita através de um cabo convencional. Para qualidade de conexão, é a melhor situação. Os equipamentos conectados, seja por cabo ou sem fio, em ambos os roteadores irão enxergar qualquer outro equipamento conectado.

Para ajudar a melhorar o sinal da rede sem fio, os dois roteadores wireless precisam ficar afastados. Passar um cabo de rede longo pode não ser o que a maioria deseja. Inclusive eu. Não seria melhor que os dois roteadores se comunicassem pela rede sem fio? Seria ótimo! Mas tem alguns problemas ao utilizar redes sem fio para ponte. Vamos simplificar na situação onde é desejado conectar duas áreas de rede, com diversos computadores, através de uma conexão wireless.

Interligando dois setores de rede por conexão wireless

A tecnologia Ethernet cabeada e sem fio operam de maneira diferente. Tanto na cabeada quanto na sem fio, os equipamentos são identificados por um endereço físico (MAC). Por um cabo podem trafegar inúmeras conversas entre computadores diversos. Já em uma conexão sem fio, o access-point wireless somente aceitará dados oriundos do mesmo endereço MAC do cliente que fez a conexão. Isto é um problema? Não para o uso comum. Sim para o nosso caso. Vejamos a figura seguinte, onde é mostrado dois computadores conectados por cabo em equipamentos wireless (um em modo cliente e outro access-point) e estas conversando por sinal wireless:

Fonte:https://wiki.openwrt.org/doc/howto/clientmode

O computador "Bridged Host" está conectado por cabo no cliente wireless "W-LAN Client". Este está conectado como um cliente wireless no "W-LAN AP" que, por fim, conecta em um segundo computador "Target". Esta seria a tentativa de conversa entre "Bridged Host" e "Target":
  1. "Bridged Host" prepara um pacote para "Target"  colocando seu endereço MAC de origem e o MAC do computador "Target" como destino. O pacote é enviado à estação "W-LAN Client".
  2. A estação "W-LAN Client" recebe o pacote e o envia para "W-LAN AP". Porém, antes de enviar, ela troca o MAC de origem, antes com o MAC do "Bridged Host", pelo seu próprio MAC. Caso contrário, a estação "W-LAN AP" não aceitaria.
  3. A estação "W-LAN AP" recebe o pacote e o retransmite para o computador "Target".  Pelo endereço MAC de origem, "Target" acha que quem está falando com ele é "W-LAN Client" e não "Bridged Host".
  4. A resposta é enviada para "W-LAN AP"
  5. "W-LAN AP" retransmite o pacote sem modificação pois a limitação de usar seu próprio MAC é dos clientes e não da estação.
  6. "W-LAN Client" não sabe do que se trata tal pacote e ignora
  7. "Bridged Host" nunca recebe uma resposta
Existem algumas soluções para este problema. Vou mostrar as mais interessantes.

WDS - Wireless Distribution System

A solução mais limpa e elegante é utilizar a tecnologia WDS. Com ela, a comunicação entre os equipamentos wireless preservam o MAC de origem. A figura é igual a anterior, com a diferença que, na comunicação entre o "W-LAN Client" e "W-LAN AP", é utilizado o padrão WDS.


Fonte:https://wiki.openwrt.org/doc/howto/clientmode

A figura mostra que existem 4 endereços MAC em todos os pacotes na comunicação wireless WDS: origem e destino das placas sem fio, e origem e destino dos dados. Assim, a informação das entidades envolvidas não é perdida e a comunicação pode se realizar. Porém, WDS depende da implementação do driver e dos softwares envolvidos. Se ambos forem o mesmo equipamento e com OpenWRT, não é problema. Se for com fornecedores diferentes, pode não funcionar.

Ponte com NAT (possivelmente duplo NAT)

Uma segunda solução seria transformar o equipamento "W-LAN Client" em um roteador, traduzindo os endereços por NAT.

Fonte:https://wiki.openwrt.org/doc/howto/clientmode

A conexão "W-LAN Client" funcionaria como uma conexão WAN. Isto é possível com o OpenWRT. Porém, seria a mesma situação do caso onde a ligação entre o roteador da internet e o roteador wireless era feita pela porta WAN: você terá duas NAT, os computadores da rede azul não falarão diretamente com os computadores da rede vermelha, exceto se existir um encaminhamento de porta.

Roteamento entre Redes

Uma última sugestão apresentada aqui seria o uso de roteamento. Ao invés de esconder os computadores atrás de uma NAT, usar uma outra subrede e configurar rotas estáticas nos roteadores da rede azul e vermelha.

Fonte:https://wiki.openwrt.org/doc/howto/clientmode


Esta é uma solução mais complexa de ser implementada. Porém, preserva a conectividade. Ainda assim, os computadores não estarão na mesma rede e algumas facilidades como a descoberta automática de serviços na rede local não irá funcionar entre as redes.

Ainda existem outras soluções como a utilização de um aplicativo que rastreia as conversas que passam pelo "W-LAN Client" e fazem a tradução dos endereços e outras alternativas baseadas em protocolos proprietários. Porém, acho que as 3 propostas apresentadas aqui são as mais recomendadas na maioria das situações.

No próximo artigo vou mostrar como transformar um segundo roteador em uma ponte entre as redes cabeadas e, ao mesmo tempo, um repetidor de sinal wireless.

Até a próxima.

7 comentários:

  1. Muito interessante a postagem, ficarei no aguardo das suas sugestões de como resolver o problema!

    ResponderExcluir
  2. Ei luiz tudo bom, cara seu blog é realmente incrível, tenho facilidade com configurações mais quase zero de experiencia com linux e pude fazer muitas das coisas aqui facilmente graças as suas explicações, parabéns.

    Agora tenho uma duvida que não consegui achar em lugar algum a solução, tenho dois roteadores que por questões de instalação me trazem um problema, tenho o modem de internet conectado a um roteador que fica diretamente ligado a WAN, neste roteador tenho apenas um computador que é o do escritório, puxo então um cabo para outro comodo diretamente para outro roteador com o OpenWRT e nele ligo o cabo direto no LAN e uso o DHCP do primeiro roteador, até ai tudo bem, faço isso pois preciso de ligação de rede entre os computadores do primeiro e segundo roteador, e o único problema é que apesar de usar todos os meus computadores wireless, celular e até mesmo um direto na lan do roteador com OpenWRT ele indica que não há internet pois não tem cabo ligado em WAN nele, então não consigo usar torrent nem baixar pacotes OPKG pois ele diz que esta sem conexão na WAN, posso até transformar o WAN em LAN, mais o resultado é o mesmo. Então para eu instalar algo nele preciso sempre passar a internet da porta LAN para a WAN. Sei que o ideal é o WRT processar o DHCP, mais é por quetões de localidade e facilidade que tenho que manter esta configuração!

    Nossa escrevi muito, espero que entenda e responde kkk, Vlw Luiz!

    Um abraço.

    ResponderExcluir
    Respostas
    1. Olá Anônimo,

      É simples resolver seu problema. Configure o DNS e o gateway na interface LAN do OpenWRT (do segundo roteador) apontando para o IP LAN do primeiro roteador.

      Para o openwrt, ele precisa de uma interface em operação e com a rota padrão configurada (gateway). Se esta for a LAN, ele não vai reclamar. O mesmo vale para o DNS.

      Outra alternativa seria mudar o protocolo da interface LAN para DHCP. Ele iria consultar o outro roteador para pegar IP, gateway e DNS. Não gosto muito de usar DHCP em roteadores pois você não terá um IP para acessá-lo se o primeiro roteador estiver desligado ou inalcançável. Seria um problema quando você fosse fazer uma manutenção neste segundo roteador conectando-o diretamente em um PC.

      E prefiro maiores e mais claros do que perguntas obscuras :-)

      Excluir
    2. Haha, muito obrigado Luiz pela ajuda, vou tentar aqui.

      E novamente parabéns pelo otimo trabalho = D

      Excluir
  3. Este comentário foi removido pelo autor.

    ResponderExcluir
  4. Olá,já li vários post do seu blog e eles são muito bons,mas, eu tenho uma duvida: é possível configurar o openwrt para ser repetidor de wifi sem estar ligado por cabo de rede ?

    ResponderExcluir