Capacidades

Por vários trajetos vai a própria rede, não uma aplicação isolada

Cinco coisas que separam o transporte na camada IP de um proxy e de uma agregação de ligações comum.

VPN transparente

VPN / 01

Qualquer tráfego IP permitido, sem cliente dentro da aplicação

Um túnel completo ou rotas escolhidas passam pelo utun. Lá dentro vivem IPv4 e IPv6, TCP, UDP, DNS, ICMP e os restantes protocolos permitidos. O próprio extremo do transporte fica excluído do túnel, e excluído a sério: se essa regra falhar, a ligação cai em vez de fugir por fora.

  • Uma interface do sistema em vez de um proxy SOCKS ou HTTP
  • Um MTU explícito e a fragmentação do próprio transporte
  • O IP em bruto é graduado a partir do próprio cabeçalho, e com um prazo apertado quem cede é a classe em massa

Multitrajeto e comutação

PATH / 02

Um trajeto só está vivo quando a sua saída real está verificada

Ligar um socket a um endereço não chega. O PLY separa PROBING, ACTIVE, MUTED e DEAD, confirma por sonda que as ligações são independentes, e nunca faz passar duas linhas de uma tabela por dois trajetos físicos.

  • As sondas chegam ao servidor de endereços públicos diferentes
  • A comutação sobrevive a mudanças de Wi-Fi e transferência de rede móvel
  • Os contadores aparecem no cliente e no Prometheus no servidor

Largura de banda ou perdas

MODE / 03

Três degraus, e vê-se o que cada um custa

Várias ligações dão duas coisas diferentes: mais largura de banda ou menos perdas. balanced deixa o mecanismo e o número de cópias ao alocador, que os calcula por mensagem. copies-N põe uma cópia nos N melhores trajetos utilizáveis, N de 2 a 255. all-paths manda cada mensagem por cada trajeto utilizável e custa largura de banda na proporção de quantos forem.

  • balanced vem por omissão e deduz a redundância por mensagem, não por classe de tráfego
  • Cada sentido regula-se à parte: [app] redundancy no cliente, [egress] redundancy no servidor
  • No cabo não existe campo de modo, por isso o sentido de retorno segue a definição do servidor e não um pedido do cliente

Saída pelo servidor

EGRESS / 04

TCP e UDP arbitrários saem do endereço do servidor

O servidor mantém um TUN persistente e decide o que fazer a cada pacote: mandá-lo por uma ligação de saída com o endereço reescrito, ou encaminhá-lo adiante intacto.

  • Um mesmo caminho de dados serve os dois modos
  • A política escreve-se como uma lista de redes, não como um conjunto de portas
  • Mudar permissões revoga a sessão antiga em vez de esperar que acabe

Acesso e observabilidade

POLICY / 05

As permissões de L3 são concedidas à parte e verificadas em cada pacote

O dispositivo recebe um endereço fixo, um modo permitido e uma lista de redes. Um pacote cuja origem não coincida com o endereço atribuído não passa.

  • Inscrição do dispositivo, impressão digital da chave e novo aperto de mão
  • Prometheus, registo de eventos, rastos e pacote de diagnóstico offline
  • Os dados de falha nunca saem do perímetro do cliente

Modos de servidor

Um caminho de dados, duas formas de soltar o tráfego

forward

Os pacotes permitidos saem pela ligação escolhida com MASQUERADE. De fora parece tráfego normal do servidor.

tun

O mesmo caminho de dados encaminha os pacotes adiante sem mexer nos endereços. Serve quando é preciso juntar redes em vez de as esconder.