Parece que você precisa de uma VPN, e eu acho que OpenVPN é um bom candidato .
Reciclou uma resposta anterior abaixo:
OpenVPN é uma solução VPN de código-fonte aberto com recursos completos que reside no usuário espaço. Multi plataforma (windows, linux, osx ..) incluiu todas as principais distribuições Linux.
Exemplo de configuração:
Primeiro, geramos a chave estática (não tão segura, mas simples):
$ openvpn --genkey --secret static.key
(copie esta chave via scp para seus clientes / servidores)
Servidor de configuração (/etc/openvpn/server.conf)
dev tun
ifconfig 10.8.0.1 10.8.0.2
secret static.key
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
Cliente de configuração (/etc/openvpn/client.conf)
remote myserver.address.com
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret static.key
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
Certifique-se de que a porta UDP 1194 esteja aberta no servidor.
Executar no cliente / servidor:
# server
openvpn --config /etc/openvpn/server.conf
# client
openvpn --config /etc/openvpn/client.conf
Para verificar se a VPN está em execução, você deve conseguir efetuar ping de 10.8.0.2 do servidor e 10.8.0.1 do cliente.
Você precisa adicionar algumas regras de NAT no lado do servidor para acessar o restante do mundo, mas deixou como um exercício para o leitor:)