«

»

fev 02 2017

Imprimir Post

Contornando bug nas configurações de VLANs do Tomato by Shibby e AdvancedTomato

Mais um artigo da série Problemas e Soluções. Dessa vez, o que me fez quebrar a cabeça foram as configurações de VLAN dos firmwares Tomato by Shibby e AdvancedTomato, que estou usando no Roteador ASUS RT-AC68U.

A Motivação

Mesmo já passados 3 anos desde seu lançamento, o Roteador ASUS RT-AC68U ainda é um dos melhores do mercado. Asus e outros fabricantes já lançaram modelos mais novos, com novos recursos, principalmente no WiFi, mas boa parte deles fazem pouca ou nenhuma diferença na prática, dados os equipamentos atuais que muitas vezes não tem suporte a tais recursos.

Com relação a firmware, os da Asus são bons, estáveis e com praticamente todos os recursos que usuários domésticos e de pequenas empresas podem precisar.

Quer mais? O firmware Asuswrt-Merlin é ainda melhor. Baseado no firmware original, o Asuswrt-Merlin traz novos recursos e correções de bugs do original, sempre focando na estabilidade.

Porém, há um recurso que já existe há bastante tempo nos roteadores e no firmware da Asus, mas que até hoje eles não conseguiram deixar totalmente funcional: Dual WAN.

Com este recurso ativado, uma das portas LAN do roteador se transforma em uma porta WAN, de modo que é possível utilizar dois provedores de acesso, seja fazendo balanceamento de carga, seja deixando um deles ocioso e pronto para ser usado em caso de falha do outro, de maneira (quase) transparente para os usuários.

O fato é que habilitando esse recurso, a robustez e estabilidade do firmware original e do Asuswrt-Merlin vão para o saco. No modo de balanceamento de carga surgem muitos problemas: o redirecionamento de portas fica intermitente e  o acesso remoto à interface do roteador também. Na última versão do Asuswrt-Merlin (380.64_2) também não dá para habilitar a opção de responder ping da WAN, pois com isso todos os dispositivos da rede ficam sem acesso à Internet, sabe-se lá porque.

Outro problema que pode surgir, e que não é culpa direta do roteador, é que eventualmente as imagens de alguns sites (Facebook e Instagram inclusos) deixam de carregar. Creio eu que seja porque o site e o CDN onde ficam as imagens estão sendo acessados a partir de IPs diferentes (um de cada WAN), ativando alguma proteção do CDN contra links diretos ou ataques DDoS.

O roteador é esperto o suficiente para usar sempre a mesma WAN para múltiplas conexões com o mesmo IP (mesma sessão), do contrário bancos e alguns outros sites nem funcionariam. Mas quando múltiplas conexões acontecem com diferentes IPs, o roteador não tem como saber que se trata da mesma sessão.

Só consegui contornar esse problema fazendo com que todo o tráfego direcionado à porta 443 (HTTPS) use sempre a mesma WAN, deixando o balanceamento apenas para outros protocolos. Mas tanto o firmware da Asus, quanto o Asuswrt-Merlin não dão essa opção, limitando fixar uma WAN para IPs específicos (locais ou remotos).

O modo Failover, em que a segunda WAN só assume caso a primeira falhe, é igualmente problemático. O Watchdog da Asus, script que monitora as conexões e aciona a segunda WAN em caso de falha da primeira, é falho e muitas vezes detecta erroneamente que uma WAN está inativa.

É possível desligar o Watchdog, mas nesse caso o roteador só detectará a queda de conexão se a conexão realmente cair. Se o problema for do gateway do provedor para frente, passará despercebido pelo roteador e os dispositivos ficarão sem conexão.

Muitos desses bugs existem e persistem desde que a função Dual WAN foi adicionada nos firmwares da Asus. Parece que tal funcionalidade não é prioridade da Asus, tanto que este recurso nem aparece nos anúncios de seus roteadores. O autor do Asuswrt-Merlin também não toca nesta funcionalidade, alegando que o código é confuso e mal documentado.

Mas para mim esta funcionalidade é bastante importante. Nenhum provedor realmente confiável atende minha região, e como preciso de Internet para trabalhar em casa, não posso tolerar grandes interrupções. Dessa forma optei por ter dois provedores e duas conexões: 15 Mbps por fibra óptica de um provedor local e 10 Mbps por ADSL, da Vivo, com upload de 2 Mbps e 500 Kbps, respectivamente.

Na realidade essas são as duas únicas opções de Internet por cabo. Os demais provedores usam rádio (lento e instável) ou rede celular de dados (com franquias de dados que não chegam a 10% do que eu uso).

Dado que os dois provedores que assino tem largura de banda semelhante, convém utilizá-los no modo de balanceamento de carga. E é aí que o Roteador ASUS RT-AC68U começou a me atrapalhar. Até cheguei a comprar um TP-Link TL-R470T+ Load Balance Broadband Router, que é bastante competente no balanceamento de carga, mas deixa a desejar em outras funcionalidades e também tem seu próprio conjunto de bugs.

Antes de desistir do Roteador ASUS RT-AC68U de vez, resolvi testar outros firmwares alternativos. Foi assim que encontrei o Tomato by Shibby e o AdvancedTomato. O segundo é baseado no primeiro e traz apenas uma interface mais moderna, mantendo todas as funcionalidades.

O Tomato tem mais funcionalidades que o Asuswrt-Merlin, e o mais importante: seu recurso Multi-WAN aparentemente funciona. Estou usando há uma semana e não encontrei os mesmos problemas que encontrei no Asuswrt-Merlin.

AdvancedTomato

AdvancedTomato

Mas nem tudo é perfeito no Tomato, infelizmente. O recurso de QoS não é tão avançado quanto o da Asus e simplesmente não funciona junto com com o recurso de Multi-WAN. Por enquanto estou sendo obrigado a abrir mão do QoS. Mas entre QoS e balanceamento de carga (e consequente incremento de 67% na vazão), eu fico com o balanceamento.

O Shibby, autor do Tomato by Shibby também não é tão ativo no desenvolvimento quanto o RMerlin. A última versão do Tomato by Shibby já tem 5 meses, enquanto o Asuswrt-Merlin vem recebendo atualizações constantes.

Mas há um bug chato que pode impedir a ativação do recurso de Multi-WAN, mas felizmente ele pode ser contornado. É dele que falo na próxima seção.

O Problema

Para habilitar o recurso de múltiplas WAN é preciso primeiramente configurar as VLANs adequadamente. Basicamente, o que precisa ser feito é: remover uma das portas que fazem parte da VLAN com ponte para a LAN (br0) e incluí-la em uma nova VLAN que faz ponte com a WAN2.

Parece simples, certo? O problema é que não dá para remover uma porta da VLAN1 através da interface web, algum bug maldito impede isso. Como contornar? É o que explicarei na próxima seção.

A Solução

A solução que encontrei está escrita em um artigo, mas de maneira um tanto incompleta, então decidi detalhar mais.

A solução é fazer uma conexão com o roteador via SSH e aplicar a configuração via linha de comando:

Para ver quais portas estão em qual VLAN, use:

Note que a porta com um asterisco não é uma porta física, mas ela precisa ser mantida. Aparentemente se trata da opção “default”.

Para configurar na VLAN execute:

onde X é o número da VLAN e cada Y é o número de uma porta. Por exemplo, no meu caso eu usei:

Depois é preciso definir o boot para manual, de modo que as mudanças não sejam desfeitas no próximo boot. Aí é só confirmar as mudanças e reiniciar.

Agora a porta LAN4 já está fora da VLAN1. Voltando para a interface gráfica, criei então a VLAN3 e coloquei a LAN4 sozinha nela, com ponte para a interface WAN2. Pronto, as VLANs já estão configuradas corretamente para o uso de duas WANs.

VLANs configuradas para Multi-WAN no AdvancedTomato

VLANs configuradas para Multi-WAN no AdvancedTomato

Note que eu também criei uma VLAN4 e fiz ponte com a LAN1 (br1) que também criei. Nesta VLAN conectei as redes WiFi de visitantes, de modo que meus visitantes tenham acesso à Internet, mas não à minha rede local.

Considerações Finais

Estou ainda testando o AdvancedTomato para ver até que ponto ele me atende. Há alguns bugs, mas os que me afetaram são apenas cosméticos, exceto pelo do QoS.

Aparentemente não há produto no mercado que me atenda completamente, e dado o equipamento que tenho atualmente, o ASUS RT-AC68U, e minhas necessidades, o AdvancedTomato está me atendendo melhor que o Asuswrt-Merlin vinha atendendo.

Espero que a Asus resolva dar a devida atenção ao recurso de Dual WAN e deixe-o funcional nas próximas versões do firmware, de modo que eu possa aproveitar QoS e balanceamento de carga ao mesmo tempo. Até lá, vou usando o AdvancedTomato.

Sobre o autor

Skooter

Skooter é cientista da computação e fundador do Skooter Blog. Tem interesse em tudo relacionado a tecnologia e gosta de economizar fazendo suas compras diretamente do exterior.

Link permanente para este artigo: http://www.skooterblog.com/2017/02/02/contornando-bug-nas-configuracoes-de-vlans-do-tomato-by-shibby-e-advancedtomato/

2 comentários

  1. 1
    Andi

    eu estou procurando uma solução para este problema da configuração do vlan por web gui e infelizmente apenas hoje encontrei seus dicas como fazer com command line. consigo atribuir as portas e vlan no web gui até versão 132 do tomato shibby e advanced tomato, mas a partir desta versão sem alegria, isso com 2 asus rt-n18 e 2 netgear r6400 => firmware boguosa, com multiwan não funciona mas vlan sem ajeitar por command line @@

  2. 2
    Andi

    yep, command line solucionou. vc salvou uns 20 horas de chateamento e os últimos cabelos na minha cabeça. valeu, obg.

    minha dica para outors: acessar com ssh é sempre com usuário root, não com admin.

Deixar uma resposta