NET Virtua bloqueando portas

Olá. Neste texto irei falar sobre um problema que ocorreu comigo ao utilizar a conexão da NET, impedindo o acesso a alguns sites e serviços. E também mostrarei como resolvê-lo.

O problema

Ao tentar acessar alguns tipos de serviços e sites online que não são tão comuns do grande público, a conexão fica “carregando” durante um bom tempo e depois falha. Por exemplo, se você estiver passando pelo mesmo problema pelo qual passei, não conseguirá acessar http://portquiz.net:8080. Mas se tentar acessar por outra conexão, como a do celular, irá conseguir. Essa situação ocorreu comigo pela primeira vez no final de 2017 e, pelo que vejo, ainda ocorre com outras pessoas.

Explicação técnica

Muitas pessoas, inclusive os funcionários da NET com quem conversei, imaginam que este problema seja causado pelo fato da empresa permitir port forwarding apenas para clientes empresariais que o solicitam. Uma atitude compreensível tomada pela NET, já que para fazer este procedimento é necessário um IP público e, como o pool de IPv4 está escasso, não dá para cada modem ter um.

Ocorre que há dois equívocos aqui: o primeiro é que parte dos clientes da NET tem sim um IP público, como eu tinha nos momentos em que passei por este problema. O segundo, e mais importante, é que a conexão que você está tentando fazer e não consegue é de saída, não de entrada como em um port forwarding, mencionado acima. E tal tipo de conexão não pode ser bloqueado pelo provedor, pois viola o Marco Civíl da Internet.

Se você utiliza computadores há um certo tempo, provavelmente já ouviu falar sobre desabilitar o firewall do Windows para evitar problemas (não faça isso!), talvez até já tenha visto um pop-up deste firewall dizendo a você que determinado programa está tentando fazer uma conexão e, logo em seguida, lhe pergunta se você permite. Lembra?

O princípio aqui é o mesmo. Todo dispositivo de rede (computador, celular, servidores, etc) tem 65535 portas disponíveis para se comunicar com outros dispositivos, tanto para enviar como para receber mensagens. Algumas portas são muito comuns, como a 80 e/ou 443 que você utilizou para acessar este site; já outras nem tanto, como a 22, utilizada pelo protocolo SSH.

Devido a esta diferença de popularidade entre as portas de comunicação, muitas pessoas configuram regras de firewall que permitem o tráfego pelas mais comuns, ao mesmo tempo que bloqueiam as incomuns; e é aqui que começamos a chegar na causa do problema.

Esta é a tela de configuração do firewall que vem embutido no modem TC7337NET utilizado pela NET e fabricado pela Technicolor Brasil Midia Entretenimento LTDA. Este modem vem sendo utilizado em substituição a modelos mais tradicionais - imagino que por ter essa interface bonitinha e reforçar a identidade visual da NET.

Como é possível ver na imagem, a “Proteção por firewall IPv4” está ativa e com o valor “Baixo”. O que isso significa? Bom, o pessoal que criou esse sistema não achou que fosse interessante nós sabermos, daí não colocaram nenhuma descrição. Porém, se você não desistiu ainda, conseguirá ver estas informações no código fonte da página:

Nas linhas 40 e 56 podemos ver que há, pelo menos, dois grupos de portas programados nesse firewall. Esta informação por si só já é interessante porque deixa a entender que o valor selecionado no campo “Proteção por firewall IPv4” influencia em quais portas o firewall irá liberar e, por consequência, quais serão bloqueadas.

Soluções

Bom, há algumas soluções possíveis, dependendo da sua pressa e paciência para entrar em contato com a NET. São elas:

Solicitar a troca do modem

Na minha opinião essa é a melhor solução. O modem TC7337NET (e possivelmente outros modelos que utilizam o firmware “bonitinho” exibido acima) contém um bug e ao que tudo indica a NET não sabe ou não achou interessante realizar a correção.

Utilizar outras portas de comunicação

Como mostrei acima, algumas portas de comunicação com a internet são bloqueadas por causa do bug no modem, mas não são todas. As vezes o serviço/site que você está tentando acessar disponibiliza acesso de outras maneiras, como é o caso do GitHub que disponibiliza acesso via HTTPS (porta 443) como você pode ver nesse dica.

Utilizar um proxy

Esse solução é bem mais complexa que as anteriores e exigirá que você tenha acesso á um computador (A.K.A. host) para fazer o “meio campo” entre você e o serviço/site que voce está tentando acessar.

No meu caso eu precisava utilizar SSH para acessar o shell de servidores e também o gitlab.com e github.com.

Para isso adicionei o seguinte em $HOME/.ssh/config:

Host github.com gitlab.com
	Hostname %h
	User git
	IdentityFile ~/.ssh/my-key-for-git
	IdentitiesOnly yes
	ProxyCommand ssh -i ~/.ssh/my-key-for-server  -q -W %h:%p -p 53 usuario@my.server.ws

Agora sempre que uma conexão ssh para o github ou gitlab for iniciada ela irá passar automaticamente pelo my.server.ws através da porta 53, que é utilizada para DNS e raramente contém qualquer tipo de bloqueio.