Acesso Remoto


#1

De entre as várias formas que existem para disponibilizar os dados do nosso servidor de Plex a utilizadores remotos, as minhas preferidas, porque têm mecanismos de protecção melhores do que qualquer outra, são:
1. Através de plex.tv
2. Usando OpenVPN
Uma e outra têm mecanismos de protecção que, além de userid e password, incluem um security certificate. E é este certificado de segurança que assegura maior protecção que qualquer outro método. Segurança é muito importante sempre que decidirmos abrir o acesso à nossa LAN a partir do exterior. Não é raro os hackers aproveitarem-se de falhas de segurança para penetrarem na nossa LAN, causarem danos, ou mesmo pedir resgates para que a normalidade seja reposta. A primeira regra de segurança é nunca usar passwords triviais, e a segunda é usar certificados de segurança sempre que possível (os quais não só validam o acesso, mas também podem encriptar os dados durante a transmissão, ou seja, além de protecção de acesso também permitem protecção de privacidade).

Como é muito mais comum usar-se o plex.tv do que OpenVPN, vou passar a descrever alguns conceitos base, bem como se faz a parametrização.

Em primeiro lugar gostaria de explicar o conceito de porta. Aqueles de nós que moramos em apartamentos sabemos que temos um endereço (Nome de rua, nº da porta, localidade, código postal, etc) que define geograficamente o edifício onde nos encontramos. Tal permite que, quando nos enviam cartas, a mesma seja entregue (pelos correios) ao carteiro cujo percurso incluí o edifício onde moramos. Aí chegado o carteiro verifica qual é a caixa postal e coloca lá a carta. Há assim duas "decisões de distribuição", uma feita pela empresa de correios (que entrega a carta a um carteiro sem se preocupar com o andar), e outra pelo carteiro, que é quem decide colocar a carta na nossa caixa do correio.

O router que é fornecido pelo nosso ISP (fornecedor de serviços de Internet) tem um dado endereço IP (por exemplo 123.123.123.123). Ligado a esse router temos a nossa rede local, que pode ser mais ou menos complexa, e pode até ter vários servidores de Plex. Vamos supor que temos dois servidores de Plex, um com IP 10.10.10.101 e outro com IP 10.10.10.102. O encaminhamento de pacotes de dados através da Internet é algo similar à entrega de cartas pelo correio. O endereço IP do nosso router (neste exemplo 123.123.123.123) é como se fosse o endereço do prédio onde vivemos. A primeira decisão de distribuição é efectuada na Internet, que determina qual o melhor caminho, de entre os muitos possíveis, para entregar os dados a esse IP. A segunda decisão é do router fornecido pelo ISP, que tal como o carteiro teria de decidir qual caixa de correio, esse router terá de decidir para qual dos PC's ligados à nossa rede local é que os dados serão encaminhados. Isso faz-se usando ports (ou portas).

Quando logamos o nosso servidor de Plex com o nosso userid de Plex (neste exemplo temos dois servidores, podemos usar o mesmo userid, mas os servidores têm de ter nomes diferentes), inicia-se um processo que é chamado claim do servidor. O que se passa é o seguinte:
1. O nosso servidor de Plex contacta plex.tv, o qual valida se as credenciais (userid e password) estão correctas
2. O plex.tv gera um security certificate, o qual fica a ser conhecido apenas pelo nosso servidor e plex.tv. Ninguém mais o conhece. Se temos razões para suspeitar que alguém o conhece, é só fazer logoff e logon do servidor de Plex e assim será gerado um novo security certificate

Faço aqui um parêntesis para referir que há Países que censuram o tráfego da Internet (China, Irão, Coreia do Norte, etc) e podem ter bloqueado o acesso a plex.tv. Nesses casos será impossível fazer login ao plex.tv, quer no servidor de Plex, quer em qualquer cliente de Plex, o que inviabiliza qualquer tipo de acesso pelo exterior, e "obriga" a que se tenha de usar OpenVPN. Mas suponho que tal não acontece em nenhum dos Países que usam língua portuguesa.

Seria muito estranho não conseguirmos logar o nosso servidor de Plex. Em regra, quando tal acontece, é um problema na nossa rede (firewals, VLAN's, etc), e não seria possível logar nem o servidor de Plex, nem o Plex Media Player (caso o tenhamos instalado). Ou então estarmos a usar uma versão de Plex anterior à 1.5.1 dado que, nesses casos, o plex.tv rejeitará a ligação.

Logar o nosso servidor em plex.tv não é a mesma coisa que autorizar o acesso remoto, é uma condição necessária para que tal aconteça, mas não é uma condição suficiente. Que se passa então no momento em que activamos o acesso remoto ?
1. O nosso servidor de Plex contacta plex.tv e indica-lhe o seu endereço local, ou seja, indica dois IP's, no nosso exemplo 123.123.123.123 e 10.10.10.101
2. O plex.tv confere o security certificate (não vá haver algum hacker metido no meio) e responde ao nosso servidor de Plex algo parecido com quero comunicar-me contigo através da porta 12345
3. O servidor local de Plex pede então ao nosso router, através do serviço UPnP, algo parecido com se receberes tráfego para a porta 12345 encaminha-a por favor para a porta 32400 do IP 10.10.10.101. O servidor local de Plex informa então plex.tv que pode testar se o acesso remoto está activo
4. plex.tv tenta então aceder do exterior ao nosso servidor local, e informa se conseguiu ou não. É com base nessa resposta que o nosso servidor local vai acender o sinal verde ou vermelho

Se tudo correu bem teremos o sinal verde aceso, quando assim não é ocorreu algum problema, por exemplo:
1. Se o nosso ISP implementou CG-NAT o nosso endereço IP deixou de ser fixo. Isso não vai permitir acessos remotos à nossa rede, nem ao Plex nem a nenhum outro serviço. Para saber se o IP que nos atribuiram é CG-NAT basta ir ao router do ISP, ver qual é o IP atribuído do lado WAN, e se estiver na gama 100.64.0.0/10 (ou seja, IP entre 100.64.0.0 e 100.127.255.255) estamos numa situação de CG-NAT. A única solução é contratar um IP fixo com esse ISP, o que pode ter custos, ou mudar de ISP
2. Estamos a usar uma versão antiga do Plex Media Server. O plex.tv recusa-se a criar e enviar o security certificate para versões demasiado antigas, como por exemplo as 0.9.x que alguns utilizadores ainda têm instaladas em processadores ARMv5, PowerPC, etc. Nesses casos a melhor solução é instalar o PMS numa máquina que suporte versões recentes. Mas também se pode optar por usar OpenVPN, que embora seja seguro, não é aconselhável para quem queira partilhar conteúdos com "amigos", dado que lhes teríamos de facultar o security certificate que gerámos para o OpenVPN
3. O PC (ou NAS) onde foi instalado o Plex tem mais do que uma interface ethernet activa. Isso pode ver-se por exemplo no Plex Media Server.log pesquisando por Network Interface. Se aparecer só o IP 10.10.10.101 (ou aparecerem dois IP's, em que um é 127.0.0.1 e outro 10.10.10.101), então veja os pontos seguintes. Caso contrário temos vários IP's, e o Plex não se dá bem com isso. Diria mesmo que é um bug que, no momento em que escrevo, ainda não está solucionado. A forma de sair desse problema não é trivial, cada caso é um caso, se for essa a sua situação terá de iniciar um novo post para pedir ajuda
4. O router fornecido pelo nosso ISP não tem o UPnP activo, ou então tem uma versão de UPnP que não é compatível com o Plex. Nesse caso o servidor local de Plex não consegue parametrizar o router para se receberes tráfego para a porta 12345 encaminha-a por favor para a porta 32400 do IP 10.10.10.101. Uma forma de se poder saber isso é ir à página de gestão do Router e verificar se tem a porta 12345 encaminhada ou não para o IP 10.10.10.101. Caso não tenha, veja soluções possíveis nos pontos 5 e 6 seguintes
5. Se o PC com o IP 10.10.10.101 estiver ligado directamente ao router do nosso ISP (ou ligado a um switch que por sua vez está ligado directamente ao router do nosso ISP), há que abrir manualmente uma porta no router do nosso ISP (pode ser a 32401 para o primeiro servidor local de Plex, mas terá de ser outra porta para o segundo servidor) veja o tópico Manually Specify Port aqui
6. Porém, se entre o router do ISP e o PC (ou NAS) com o IP 10.10.10.101 existir um outro router, PC ou NAS, podemos estar numa situação de double NAT Nesse caso tem de ir ao router do ISP, abrir a porta 32401, mas em vez de a encaminhar para a porta 32400 do IP 10.10.10.101, deve-se apontar para o IP do router intermédio. E a seguir, nesse router intermédio, deve abrir-se manualmente a porta 32401 e encaminhá-la para a porta 32400 do IP 10.10.10.101 (para o segundo servidor de Plex deve abrir-se a porta 32402 no router do ISP, apontá-la para a mesma porta do router intermédio, e nesse router intermédio encaminhar a porta 32402 para a porta 32400 do IP 10.10.10.102). No Manually Specify Port (ver ponto anterior) especificar 32401 no primeiro servidor, e 32402 no segundo. Assim o plex.tv ficará informado de que, se algum utilizador quiser aceder remotamente ao primeiro servidor, o plex.tv irá contactar o IP 123.123.123.123 através da porta 32401, e para contactar o segundo servidor o plex.tv usará a porta 32402 do IP 123.123.123.123. Competirá aos dois routers (o do ISP e o intermédio) fazer o encaminhamento das portas
7. Se estiverem activas jumbo frames há que as desactivar. As MTU do PC onde está instalado o PMS, bem como a do router do ISP (e do router intermédio caso exista) têm de ter o valor 1500
8. Neste exemplo mencionei portas 32401, 32402 e 12345. Porém há ISP's que bloqueiam o tráfego nessas portas. Há que perguntar ao operador se implementaram ou não tal bloqueio. Nesse caso a solução poderá ser simples -> escolhe-se uma porta não bloqueada pelo operador, e faz-se a parametrização do Plex tal como no ponto 5 acima (o tráfego na porta 32400 apenas tem de estar activo no percurso entre o servidor local de Plex e o router ao qual está ligado)
9. Ou será que temos uma firewall activa ? Nesse caso será necessário parametrizá-la de modo a permitir a passagem de tráfego nas portas do Plex (basicamente uma firewall bloqueia certos tipos de tráfego, e há que definir quais são os tráfegos fidedignos)
10. Um caso, mais raro, é o do indicador verde estar activo durante alguns minutos (ou horas) e depois passar a vermelho. Tal problema tem sido reportado por utilizadores que deixam o Plex escolher a porta de comunicação. A solução recomendada para tais casos é escolher manualmente a porta (vidé ponto 5 acima)

Um caso diferente é o nosso servidor de Plex ter o indicador verde activo, conseguimos aceder do exterior nalgumas redes, porém não conseguimos aceder via outras. A razão mais comum para tal acontecer é estarmos ligados a uma rede (por exemplo a de um escritório ou centro comercial) que filtra o tráfego Plex. Mas também podemos estar a viajar num País que censura o tráfego Internet. Aí nada a fazer, é pouco provável que o administrador da rede queira mudar a sua parametrização para permitir a passagem do tráfego Plex.