Fontes:
N2n é uma virtual private network (VPN) peer-to-peer que trabalha na camada dois, sendo capaz de permitir aos seus usuários desfrutarem dos recursos de uma rede P2P a nível de rede ao invés de aplicação. Isso significa uma abstração de rede onde os usuários ganham um IP extra de uma rede virtual, sendo ainda visíveis na rede real a qual pertencem.
Simplificando, assim como OpenVPN tunela via SSL (aplicação para protocolo), n2n tunela via uma rede P2P (aplicação para rede).
Original: n2n is a layer-two peer-to-peer virtual private network (VPN) which allows users to exploit features typical of P2P applications at network instead of application level. This means that users can gain native IP visibility (e.g. two PCs belonging to the same n2n network can ping each other) and be reachable with the same network IP address regardless of the network where they currently belong. In a nutshell, as OpenVPN moved SSL from application (e.g. used to implement the https protocol) to network protocol, n2n moves P2P from application to network level.
Enfim, uma grande vantagem nesse tipo de VPN é a própria distribuição (ou desvantagem :P depende do ponto de vista). Com isso o servidor da VPN (supernode) deve apenas gerenciar as conexões assim como um tracker bittorrent.
Para mais detalhes leia o site da ntop, vou ser curto e grosso nesse artigo, até porque não sou um expert nisso, não quero falar besteira.
Leiam também o artigo contido neste documento PDF:
NN: A Layer Two Peer-to-Peer VPN
Instalação e configuração
Para distros como o Ubuntu e o Debian, use o apt para os seguintes pacotes (lembre-se, # significa que você deve possuir permissões de administrador do sistema):
# apt-get install uml-utilities gcc make
No servidor
Faça um checkout do svn:
# cd /usr/src/
# svn co https://svn.ntop.org/svn/ntop/trunk/n2n
# cd n2n
Retire os flags de debug (-g) do Makefile, caso não esteja mais testando.
# make
Pronto, agora vamos iniciar o supernode:
# ./supernode -l 50000 -v
Agora aguarde as mensagens que iniciarão quando os primeiros clientes conectarem.
No(s) cliente(s)
Faça um checkout do svn:
# cd /usr/src/
# svn co https://svn.ntop.org/svn/ntop/trunk/n2n
# cd n2n
Retire os flags de debug (-g) do Makefile, caso não esteja mais testando.
# make
Após a instalação vamos criar um túnel para a vpn.
# tunctl -t tun0
Agora vamos iniciar a interface (supondo que o servidor tenha o ip 192.168.0.1):
# ./edge -a 10.0.2.1 -c minharede -k palavrachave -l 192.168.0.1:50000
Você pode adicionar o endereço MAC que deseja usar acrescentando -m 00:00:00:00:00:00 (troque os zeros pelo endereço desejado).
Pronto!
Agora para que os clientes estejam na mesma rede é necessário que:
- Ambos estejam com a mesma community (opção -c)
- Ambos tenham a mesma palavra chave (opção -k)
- A faixa de IPs seja compatível (ex: a.b.c.X, a.b.c.Y -> 10.0.0.1 10.0.0.2 10.0.0.3 ...)
Existem ainda versões específicas para FreeBSD, MAC OS X e Windows.
O site
VPNHosting.cz provê o seguinte link, onde é possível baixar o cliente (GUI) para o Windows XP/2000:
Para usá-lo basta preencher os campos da GUI, os nomes são diferentes do que foi dito acima, mas é simples perceber o que é o quê.
Testado em Windows XP e
Linux (i386/amd64).
BrainStorm e agradecimento
- Adicionar recursos de cadastro igual ao Hamachi.
- Criar uma interface de gerenciamento de recursos (usuários/redes) para o servidor.
- Criar um tutorial de roteamento com iptables.
- Medir desempenho.
Sugestões? Adicione um comentário ou mande um email.
Agradecimentos:
- ntop
- vpnhosting
- E amigos que me ajudaram a testar
Obrigado a todos.