Symform Cloud Backups: Performance and Tuning for IPTV Routers – Parte 1

Bom Ano Novo a todos!!

Como decerto sabem se seguirem o meu blog, sou um fã de duas coisas: Projetos colaborativos, e redundância nos meus backups.

Usando a segunda como ponto de partida,  e conforme já referi no passado, descobri em tempos um fornecedor de soluções de storage cloud colaborativo.
Este fornecedor – Symform – é  muito estável em termos de continuidade de negócio. Já os uso a mais de 2 anos pelo que  antecipo que o modelo de negócio deles os mantenha no mercado durante mais alguns anos.

Como qualquer solução de cloud, também a Symform tem um cliente nativo que funciona praticamente apenas por UDP.
Embora este tipo de comunicação  faça todo o sentido, irá causar problemas em routers como os que tipicamente são instalados em casa pelos fornecedores de IPTV.

Os equipamentos que são disponibilizados em entrylevel pelos operadores em Portugal são particularmente sensíveis a tráfego UDP em demasia. Tráfego em excesso irá causar que o router entre em crash e falhe por completo.

O problema e diagnóstico foi feito nesta thread.  Este post vem de encontro a vários pedidos que tenho tido para descrever em maior detalhe como resolvi o problema.

Qual a solução?

Como em qualquer boa receita, existe uma necessidade de ingredientes:  Uma firewall de perímetro, um servidor (ou serviço) de openvpn e um virtual private server no endpoint.

Nota: Para estes procedimentos assume-se que a vossa máquina que tem o symform em execução é apenas uma, e que já têm uma openvpn configurada entre a vossa rede interna onde a máquina symform reside e vossa a VPS.
No meu caso especifico estou a utilizar pfsense como firewall de perímetro que efetua pbr (policy based routing) e cliente vpn.

A receita é relativamente simples, e utilizaremos a nossa firewall de perímetro para efetuar pbr  a todos os pacotes que vierem da nossa máquina com symform com destino o endpoint de gateway da vossa vpn.

Será algo assim:

Na firewall configuramos a VPN:

Screen Shot 2015-01-02 at 10.32.23 AM
Definimos na firewall, qual a rede que irá existir do outro lado na VPS:

Screen Shot 2015-01-02 at 10.32.46 AM

Configuramos da secção de interfaces, uma nova interface que represente para a pfsense a nossa VPN e a rede que lá existe:

Screen Shot 2015-01-02 at 10.37.04 AM
No nosso caso foi escolhido o nome CLOUD_USA, e reparem o endereçamento escolhido para este cliente de VPN. Terá de ser idêntico ao do servidor de VPN que já está em funcionamento na VPS.
É necessário ainda configurar a IPv4 Upstream Gateway com o IP do TUN device local da VPS.

Finalmente, colocaremos a seguinte política na pfsense:

Screen Shot 2015-01-02 at 10.44.36 AM
Esta política é o que efetivamente faz o PBR. Indica que tudo que tenha IPv4, que venha da máquina que tem o symform (no meu caso Vpar8) é obrigada a sair pela VPNGW (ver imagem anterior onde este nome surgiu).
Agora todo o meu tráfego irá sair pela VPS remota, mas o tráfego da Symform é bi-direcional e assim sendo necessita de configurações idênticas do lado da VPS:

Screen Shot 2015-01-02 at 11.08.23 AM
Nesta regra permitimos que o servico Symform saia e entre tanto em TCP como UDP.
Em ultimo lugar, efetuamos NAT de tudo o que venha da VPN, e que vá para a VPN:

Screen Shot 2015-01-02 at 11.15.39 AMNota: para o tráfego de retorno, o IP de nat deverá ser o ip do tun device do lado da VPS que é conhecido pela firewall pfsense.

Finalmente e de volta à pfsense temos de permitir o tráfego na tab de regras da interface que criamos (que vem da VPS para a nossa máquina que executa o Symform):

Screen Shot 2015-01-06 at 10.08.12 AM

Acaba aqui a primeira parte deste novo post. Com estas configurações já conseguem ter um working model do symform a sair por vpn num site remoto.

Como sempre, se quiserem discutir o assunto, ou caso tenham alguma pergunta ou reparo, o meu email está sempre disponível.

Abr.