VPN com FreeBSD e VTUN
Há tempos eu venho instalando alguns servidores com VPN, porém entre FreeBSD's é outro nível hehe, bem mais fácil do que com MPD e esses PPTP like hehe.
Bem o VTUN (Virtual Tunnel), provê um tunelamento sobre rede TCP/IP, com compressão e encriptação, extremamente útil quando se precisa trafegar dados pela Internet de um modo seguro quando se está atrás de um NAT (onde não funcionaria a VPN por UDP).
Lembrando que tenho nas "pontas" desta VPN dois servidores com FreeBSD's.
Parte da "mão na massa":
Em ambos os servidores:
# cd /usr/ports/net/vtun && make install clean
...(instalando vá tomar um café)
# rehash
Configurações:
No Servidor:
No servidor temos que liberar quais as redes que serão liberadas, as opções de conexão e as rotas para ir e vir nestas redes.
# vi /usr/local/etc/vtund.conf
Segue abaixo o arquivo:
# vtund.conf - servidor
options {
port 5000; # Espera conexões nesta porta
ifconfig /sbin/ifconfig;
route /sbin/route;
}
default {
type tun;
proto tcp;
compress lzo:9;
encrypt yes; # Encriptação SIM!!!
keepalive yes;
stat no;
speed 0;
multi killold;
}
filial1 {
passwd senha01;
up {
# IP matriz: 10.1.1.1
# IP filial: 10.1.1.2
# configura interface ponto-a-ponto
ifconfig "%% 10.1.1.1 10.1.1.2 mtu 1450 netmask 255.255.255.252";
# adiciona rota para a rede da filial
route "add -net 192.168.2.0 10.1.1.2 255.255.255.0";
};
# se houver desconexão derruba rota e a interface tunX
down {
ifconfig "%% delete down";
route "delete 192.168.2.0";
};
}
:wq
# echo "vtund_enable="YES" >> /etc/rc.conf
# /usr/local/etc/rc.d/vtund.sh start
No Cliente:
No cliente vamos especificar onde o cliente vai se conectar (porta) e como levantará a rota após se autenticar.
# vi /usr/local/etc/vtund.conf
# vtund.conf - cliente
options {
port 5000;
timeout 20;
syslog daemon;
ifconfig /sbin/ifconfig;
route /sbin/route;
}
filial1 {
pass senha01;
persist yes;
up {
ifconfig "%% 10.1.1.2 10.1.1.1 mtu 1450 netmask 255.255.255.252";
route "add -net 192.168.1.0 10.1.1.1 255.255.255.0";
};
down {
ifconfig "%% delete down";
route "delete 192.168.1.0";
};
}
:wq
# echo "vtunclient_enable="YES" >> /etc/rc.conf
# echo "vtunclient_flags="filial1 200.x.x.x" >> /etc/rc.conf
# /usr/local/etc/rc.d/vtunclient.sh start
Onde 200.x.x.x é o enderço do servidor da VPN
Vejamos as saídas dos ifconfig's depois de "startarmos" os serviços.
No servidor:
# ifconfig
tun0: flags=8051 mtu 1450
inet 10.1.1.1 --> 10.1.1.2 netmask 0xfffffffc
Opened by PID 83209
No Cliente:
# ifconfig
tun0: flags=8051 mtu 1450
inet 10.1.1.2 --> 10.1.1.1 netmask 0xfffffffc
Opened by PID 91620
Pronto, temos duas redes interligadas por dois servidores FreeBSD por meio de uma VPN utilizando o VTUN.
Agora podemos trafegar nossos dados das redes clientes desses dois servidores, sem ter que instalar "discadores" de VPN's em todas as estações rWindows.
Read more!