VPN - usando SSH
Este artigo ensina como fazer o SSH trabalhar como uma VPN.
Parte 2: Estabelecendo a conexão - Túnel ponto a ponto
Depois de realizar a configuração no servidor, é hora de estabelecer a conexão com o mesmo e começar a usar sua VPN.
Logado como 'root' (no cliente), digite no terminal o comando abaixo:
# ssh -f -w 0:0 -o Tunnel=ethernet root@192.168.222.33 ifconfig tap0 10.5.5.1 netmask 255.255.255.0
Obs.: É necessário digitar usando o usuário 'root', pois só ele tem poder administrativo para gerar o dispositivo virtual no servidor e no cliente. A autenticação realizada vai seguir a configurada no servidor, pode ser através da senha do 'root' ou através das chaves de autenticação ( o que é mais seguro).
Caso digite o comando sem o usuário 'root' ter permissão de se logar via SSH (configuração feita no "/etc/ssh/sshd_config" na primeira página), provavelmente um erro como o mostrado abaixo será retornado:
Caso apareça este outro erro descrito abaixo, significa que, ou o SSH do servidor não está usando uma versão mais antiga ou a opção 'PermitTunnel' está desabilitada:
Explicação das opções usadas:
Após executar o comando no cliente e não ter gerado algum erro como comentado no inicio da página, logue no servidor como 'root' e execute o comando:
# ifconfig
E veja que a interface 'tap0' foi criada:
Observe que foi criado até um MAC para a interface virtual.
Agora é hora de configurar a interface 'tap0' do cliente que ainda não foi ativada. Para isto, execute no terminal como 'root':
# ifconfig tap0 10.5.5.2 netmask 255.255.255.0 up
Teste, usando o ping:
# ping -c 3 10.5..5.1
Logado como 'root' (no cliente), digite no terminal o comando abaixo:
# ssh -f -w 0:0 -o Tunnel=ethernet root@192.168.222.33 ifconfig tap0 10.5.5.1 netmask 255.255.255.0
Obs.: É necessário digitar usando o usuário 'root', pois só ele tem poder administrativo para gerar o dispositivo virtual no servidor e no cliente. A autenticação realizada vai seguir a configurada no servidor, pode ser através da senha do 'root' ou através das chaves de autenticação ( o que é mais seguro).
Caso digite o comando sem o usuário 'root' ter permissão de se logar via SSH (configuração feita no "/etc/ssh/sshd_config" na primeira página), provavelmente um erro como o mostrado abaixo será retornado:
Tunel device open failed
Could not request tunnel forwarding
Caso apareça este outro erro descrito abaixo, significa que, ou o SSH do servidor não está usando uma versão mais antiga ou a opção 'PermitTunnel' está desabilitada:
SIOCSIFADDR: Dispositivo inexistente
tap0: ERROR while getting interface flags: Dispositivo inexistente
SIOCSIFNETMASK: Dispositivo inexistente
Explicação das opções usadas:
- -f:- Esta opção faz com que o comando seja executado em background e não fique ocupando seu terminal durante a execução.
- -w 0:0:- É usada para criar o túnel, neste caso criando a interface 'tap0' no cliente e a interface 'tap0' no servidor.
- -o Tunnel=ethernet:- Indica que deve ser criada uma interface virtual TAP. O default do SSH (quando a opção é omitida) é criar uma interface TUN. A grande diferença entre as duas é que a interface TAP pode ser usada para criar um 'bridge', o que permite efetivamente unir as duas redes.
- root@192.168.222.33:- O '192.168.222.33' representa o endereço IP do servidor, e deve ser substituído pelo endereço IP do seu servidor SSH. O "root" refere-se ao usuário que irá logar no servidor.
- ifconfig tap0 10.5.5.1 netmask 255.255.255.0:- Configura o endereço IP e a máscara que será usada pela interface 'tap0' que será criada no servidor. Você pode usar o endereço e máscara que quiser, mas ela deve ser diferente da faixa de IPs usada na rede local.
Após executar o comando no cliente e não ter gerado algum erro como comentado no inicio da página, logue no servidor como 'root' e execute o comando:
# ifconfig
E veja que a interface 'tap0' foi criada:
tap0 Encapsulamento do Link: Ethernet Endereço de HW EA:CE:66:FB:1A:DG
inet end.: 10.5.5.1 Bcast:10.5.5.255 Masc:255.255.0.0
endereço inet6: fe80::e8ce:ecff:fefb:1add/64 Escopo:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1
pacotes RX:4 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:26 erros:0 descartados:0 excesso:0 portadora:0
colisões:0 txqueuelen:500
RX bytes:328 (328.0 b) TX bytes:4317 (4.2 KiB)
Observe que foi criado até um MAC para a interface virtual.
Agora é hora de configurar a interface 'tap0' do cliente que ainda não foi ativada. Para isto, execute no terminal como 'root':
# ifconfig tap0 10.5.5.2 netmask 255.255.255.0 up
Teste, usando o ping:
# ping -c 3 10.5..5.1
Valews!!!