no linux você tem duas opções principais:
- vpn compatível com ipsec - use freeswan / openswan / strongswan . como eu me lembro, foi muito chique para configurar ...
- não-standarized [mas realmente bom] sslvpn - openvpn . muito fácil de configurar.
O segundo é realmente ótimo, eu tenho usado em produção há alguns anos. está disponível no debian como pacote padrão. Ele funciona muito bem para capacidades de dezenas de megabits [centenas também, mas eu não tenho que conexões de internet rápida entre escritórios]
algumas dicas para o openvpn:
- para ser mais seguro, não use 'compartilhado segredo ' tipo de chaves, criar autoridade cert e use as chaves assinadas por ele .
- se possível, use o modo tun em vez de tocar em [route traffic via vpn em vez de fazer uma ponte sobre dois segmentos ethernet]
- se você optar pela solução cert authority - lembre-se de que as chaves expiram. defina lembretes em pares para regenerar as chaves.
- para estar no lado seguro use o watchdog de software embutido no opensvn [opção ping-restart] + coloque o script bash additoinal simples que verifica ciclicamente se o processo openvpn está rodando. openpn morreu por mim ~ 2 vezes nos últimos 3 anos.
- use tunelamento sobre o udp sempre que puder [em vez de tcp]. Eu tive problema com vpn do escritório por trás nat [onde linux caixa estava por trás do roteador dlink barato eu não podia controlar] onde pacotes udp depois de algum tempo ware bloqueado - nesse caso eu fui forçado a usar tcp.
- aproveite o openvpn de trás do firewalls / nats .. contanto que um lado possua ip público e possa ser acessado por tcp ou udp em uma porta - vc pode estabelecer vpn nele, o outro nó não precisa ter ip público!