Como configurar um túnel com Vtun

Como fazer duas redes separadas pela internet conversarem? Simples, o Vtun faz com que os dois gateways se conectem via internet e funcionem como se fosse um único entre elas. Abordaremos sua instalação, configuração e execução neste artigo.

[ Hits: 63.110 ]

Por: Antonio Luigi Bonfitto Jr. em 15/12/2004


Introdução



Galera, como quase fiquei maluco com isso, aqui vai como fazer, para que vocês não fiquem tão descabelados também.

A coisa é mais ou menos assim:

REDE1 --> Gateway1 --> Internet --> Gateway2 --> REDE2

Estas duas redes não conseguirão conversar entre elas por si só e é aí que entra o Vtunel. Ele faz com que os dois gateways se conectem via Internet e funcionem como se fossem um único gateway entre as duas redes.

Aqui vamos abordar como montar um túnel que conecte estas duas redes em dois lugares diferentes no mundo. Usamos neste exemplo dois servidores (roteadores) com Conectiva 10 instalado. Iremos chamá-los de S1 e S2.

Vamos tomar como exemplo os seguintes números IP (na sua rede, faça um mapeamento como está abaixo e troque os números IP correspondentes):

Endereços de Rede:
  • Rede 1: 192.168.10.0/24
  • Rede 2: 192.168.20.0/24

Endereço Ethernet dos Gateways:
  • Gateway1 (eth0) (S1): 192.168.10.1
  • Gateway2 (eth0) (S2): 192.168.20.1
Endereço da Conexão à Internet:
  • Gateway1 (eth1) (S1): 200.220.10.1
  • Gateway2 (eth1) (S1): 200.220.20.1

    Próxima página

Páginas do artigo
   1. Introdução
   2. Instalando e configurando o Vtun
   3. Rodando o Vtun / Criando o túnel
Outros artigos deste autor

Apache 2 + mod_perl 2.0.1

Leitura recomendada

Instalando o modem NetDragon 56K

Um pouco do protocolo HTTP

Entendendo TCP/IP (Parte 3) - Resolução de nomes

Rodando ASP em servidores web Linux

Entendendo redes wireless

  
Comentários
[1] Comentário enviado por y2h4ck em 15/12/2004 - 10:42h

Ficou maneiro o artigo, podia ter colocado no final uma demonstração do funcionamento do tunel, com alguns pacotes entre as redes, mas ta valendo fica pro próximo Right ??

[]´s

Anderson

[2] Comentário enviado por __FERNANDO__ em 15/12/2004 - 11:51h

Excelente o artigo.

Só acho que ao invés de vtun -s é vtund -s... e ao invés de vtun cliente um ... é vtund cliente um...

Muito bom mesmo...você tá ligado o quanto eu tô esperando por ele né..hehehe...valeu manium.

Fernando.

[3] Comentário enviado por __FERNANDO__ em 15/12/2004 - 11:54h

Cara..fiz como no seu exemplo ai..mudando apenas a sua rede interna pela minha...mas num tô conseguindo pingar de uma rede para outra nem ferrando.

E ao invés de 192.168.10.253 e/ou 192.168.10.254 não é o 192.168.10.1 que descriminou como ip interno do gateway ?

Fernando.

[4] Comentário enviado por tony_ctc em 15/12/2004 - 15:51h

Então Fernando....
é o seguinte:

de um gateway, vc consegue pingar o outro gateway num consegue !?

então... qto aos ip's, eu num coloquei isso pra num confundir... mas parece q confundiu um pouco.... nos seus clientes, o ip do roteador (ao invés do ip real dele) vai virar o 253/254 (dependendo da rede q o cliente estiver....)

vc até mesmo pode tirar o ip xxx.xxx.xxx.1 da tabela.... o detalhe é, o ip do tunel SOZINHO não é valido.... vc tem que ter um ip na ethx.....

got it ?!

[]'s
Tony

[5] Comentário enviado por tony_ctc em 15/12/2004 - 15:53h

ah sim.... e o ip do tunel NÃO pode ser o mesmo da ethx... :o)
dah conflito... ;oppp

[]'s
Tony

[6] Comentário enviado por __FERNANDO__ em 16/12/2004 - 08:06h

Bom dia!

Eu consigo pingar somente de um gateway para o outro...mas no IP valido..tipo 200.x.x.10 ..de um para o outro...mas não consigo pingar no IP interno deles...e nem em outro ip interno da rede do outro. :S

Agora quer dizer que tenho que mudar nos cliente o IP do gateway ? Por exemplo...nos clientes da minha redeA estão utilizando como gateway o IP da eth0 do gateway (linux) que compartilha a internet..no caso: 192.168.18.200 e na RedeB: 192.168.30.200.

É isso mesmo ?

Fernando.

[7] Comentário enviado por __FERNANDO__ em 16/12/2004 - 08:10h

Cara se num tem messenger ou até mesmo o webmessenger pra gente bater uma idéia..é coisa rapida cara.

MSN: fnd_2002@hotmail.com


Fernando.

[8] Comentário enviado por mandark_br em 16/12/2004 - 08:41h

Recomendo uso do parâmetro -p para ele ficar persistindo em conectar caso a conexão caia. Tipo dá um pau no link e o túnel cai, quando o link volta, o túnel volta sozinho.

Já uso o vtun a um bom tempo e ele é muito bom. Uso ele com PPP.

[9] Comentário enviado por tony_ctc em 16/12/2004 - 16:10h

CORREÇÃO!!!!!!!!!!!!!!!!!!!!
(só tem um detalhe.... seria bom se existisse um módulo de correção dos artigos... a gente sempre esquece alguma coisa....) :oppppp

bom... galera... só complementando o artigo....
eu dei uma mão pro __FERNANDO__ pra criar um vtun entre 2 redes dele...
ae é o seguinte, ficou faltando 5 letrinhas nas configurações (no route, faltou "dev %%")... aqui estão as corretas....


#CONFIGURAÇÃO DO SERVIDOR
#/etc/vtund.conf
#Server S1 (192.168.10.1)
default {
type tun;
proto tcp;
keepalive yes;
pass seupass;
}

#Tunel entre S1 e S2 (192.168.10.0 <-> 192.168.20.0)
#Configuração do Cliente
clienteum {
pass seupass;
proto tcp;
compress yes;
type tun;
up {
ifconfig "%% 192.168.10.254 pointopoint 192.168.10.253 netmask 255.255.255.0 broadcast 192.168.10.255";
route " add -net 192.168.20.0/24 gw 192.168.10.253 dev %%";
};
down {
ifconfig "%% down";
route " del -net 192.168.20.0/24 gw 192.168.10.253 dev %%";
};
}

============================================
#CONFIGURAÇÃO DO CLIENTE
#/etc/vtund.conf
#Tunel entre S2 e S1 (192.168.20.0 <-> 192.168.10.0)
#Configuração do Clienteum
clienteum {
pass seupass;
proto tcp;
compress yes;
type tun;
up {
ifconfig "%% 192.168.10.253 pointopoint 192.168.10.254 netmask 255.255.255.0 broadcast 192.168.10.255";
route "add -net 192.168.10.0/24 gw 192.168.10.254 dev %%";
};
down {
ifconfig "%% down";
route "del -net 192.168.10.0/24 gw 192.168.10.254 dev %%";
};
}

é só isso....

agora... para rodar o vtund.... aproveitando alguns dos comentários que foram deixados aqui tb...... (obrigado pelos comentários: mandark__br, __FERNANDO__ e y2h4ck)...

seguinte:
Servidor: #vtund -s -P 5000
Cliente: #vtund -p -P 5000 clienteum <ipexternodoservidor>

no caso do exemplo do artigo ficaria assim:
Servidor: #vtund -s -P 5000
Cliente: #vtund -p -P 5000 clienteum 200.220.10.1

ae pra ter certeza que funcionou, digite: #ifconfig
vc verá um novo tipo de interface.... tun0...

e caso vc digitar #route
no cliente vc verá uma linha mais ou menos assim:
192.168.10.0 192.168.10.254 255.255.255.0 ............... 0 0 tun0

e no servidor:
192.168.20.0 192.168.10.253 255.255.255.0 ............... 0 0 tun0

bom... é isso ae.... agora sim.... é só copiar pra vc e mudar os ips pro da sua rede.... ae qualquer duvida pode mandar um email pra mim....

[]'s
Tony

[10] Comentário enviado por __FERNANDO__ em 16/12/2004 - 16:50h

É o melhor...me deu uma super ajuda...e agora tá funcionando certinho..tudo perfeito.

Valeu irmão...

Fernando.

[11] Comentário enviado por juglenijr em 14/01/2005 - 10:27h

Amigo estou tentando fazer funcionar um vpn com vtund seguindo o seu tutorial postado aqui no viva o linux, tenho algumas dúvidas referenta aos gw e modos de conexao com a internet (ADSL), fiz ezatamente o que esta postado em seu tutorial e o Fernando vem me dando uma maozinha.
Já conseguimos sub as interfaces tun0 nos dois lados mais nao estou conseguindo pingar de um lado para o outro...
será que vc tem msn, assim facilitaria a comunicacao.. é jogo rapido acredito eu. O meu msn é juglenijr@hotmail.com

Agradeço muito...

Abraço

[12] Comentário enviado por marlon.paulo em 28/11/2005 - 17:07h

Meu caro,

nao estou conseguindo conectar de jeito nenhum:

configuracao do servidor:
#CONFIGURAÇÃO DO SERVIDOR
#/etc/vtund.conf
#Server S1 (172.16.0.2)
default {
type tun;
proto tcp;
keepalive yes;
pass seupass;
}

#Tunel entre S1 e S2 (172.16.0.2 <-> 172.16.0.1)
#Configuração do Cliente
clienteum {
pass seupass;
proto tcp;
compress yes;
type tun;
up {
ifconfig "ed0 172.16.0.2 pointopoint 172.16.0.1 netmask 255.255.255.0 broadcast 172.16.0.255";
route " add -net 192.168.0.0/24 gw 192.168.200.4 dev ed0";
};
down {
ifconfig "ed0 down";
route " del -net 192.168.0.0/24 gw 192.168.200.4 dev ed0";
};
}

Configuracao do lado client

#CONFIGURAGCO DO CLIENTE
#/etc/vtund.conf
#Tunel entre S2 e S1 (172.16.0.1 <-> 192.168.200.0)
#Configuragco do Clienteum
clienteum {
pass seupass;
proto tcp;
compress yes;
type tun;
up {
ifconfig "rl1 172.16.0.1 pointopoint 172.16.0.2 netmask 255.255.255.0 broadcast 172.16.0.255";
route "add -net 192.168.200.0/24 gw 192.168.200.4 dev rl1";
};
down {
ifconfig "%% down";
route "del -net 192.168.200.0/24 gw 192.168.200.254 dev rl1";
};
}


Quando eu dou um ps no servidor ele da a mensagem
19988 ?? Ss 0:00.30 vtund: waiting for connections on port 5000 (vtund)

No lado client
227 ?? Ss 0:00.22 vtund: clienteum connecting to 172.16.0.2 (vtund)

O que pode ser,

Agradeco desde o momento.

Marlon Paulo

[13] Comentário enviado por tony_ctc em 29/11/2005 - 10:42h

ae Marlon.... seguinte...

tem alguns erros meio estranhos no seu script....

faz o seguinte... manda o seu script pra mim por email.... ae eu te retorno ele certim....

junto no email, manda o como está configurada a sua rede.... tipo... faixa de ip interno... ok?

abraço
Tony

[14] Comentário enviado por dilamar em 16/03/2006 - 08:04h

Oi Pessoal.

Segui todos os passos do tutorial mas não estou obtendo sucesso. alguém poderia me ajudar por favor.. Estou meio enrolado no assunto.
minha configuração é a seguinte:

#CONFIGURAÇÃO NO GATEWAY A

# Gateway A.
# eth0 10.1.1.3 / 255.0.0.0
# eth1 192.168.1.254 / 255.255.255.0

# Gateway B
# eth0 10.1.1.3 / 255.0.0.0
# eth1 192.168.0.254 / 255.255.255.0

# Gateway C.
# eth0 10.1.1.3 / 255.0.0.0
# eth1 192.168.3.254 / 255.255.255.0


#/usr/local/etc/vtund.conf
#Server A (192.168.1.254)
#default {
#type tun;
#proto tcp;
#keepalive yes;
#pass seupass;
#}

options {
port 5000; # servidor escutando na porta 5000

# Caminho para outros programas

ppp /usr/sbin/pppd;
ifconfig /usr/sbin/ifconfig;
route /sbin/route;
firewall /sbin/iptables;

}

A_B {
pass xxxxxx; # senha
proto tcp; # Protocolo TCP
compress yes; # Compressão de arquivos ativada
type ether; # Tunel por ethernet
device tap0; # Dispositivo tap
comp lzo:1; # Compressão LZO nível 1
stat yes; # Status ligado
encr yes; # Encryptação ligada
keepalive yes; # ?????
speed 256:128; # velocidade de download e upload

up {
ifconfig "%% 192.168.1.254 pointopoint 192.168.1.253 netmask 255.255.255.0 broadcast 192.168.1.255";
route "add -net 192.168.0.0/24 gw 192.168.1.253 dev %%";
};

down {
ifconfig "%% down";
route "del -net 192.168.0.0/24 gw 192.168.1.253 dev %%";
};
}

A_C {
pass xxxxxx; # senha
proto tcp; # Protocolo TCP
compress yes; # Compressão de arquivos ativada
type ether; # Tunel por ethernet
device tap1; # Dispositivo tap
comp lzo:1; # Compressão LZO nível 1
stat yes; # Status ligado
encr yes; # Encryptação ligada
keepalive yes; # ?????
speed 256:128; # velocidade de download e upload

up {
ifconfig "%% 192.168.1.254 pointopoint 192.168.1.253 netmask 255.255.255.0 broadcast 192.168.1.255";
route "add -net 192.168.3.0/24 gw 192.168.1.253 dev %%";
};

down {
ifconfig "%% down";
route "del -net 192.168.3.0/24 gw 192.168.1.253 dev %%";
};
}

Quanto executo o vtun -s -P 5000 as interfaces tap não sobem. E e quando executo um ps vejo a seguinte mensagem 23972 ------ vtund esperando conecção na porta 5000.

O que eu posso estar fazendo de errado.

agradeço a ajuda de todos..

Dilamar Jr.

[15] Comentário enviado por tony_ctc em 12/04/2007 - 11:13h

hmmm.. Dilamar... as interfaces TAP soh aparecerão depois de conectados os routers....

blz... depois do vtun -s -P 5000 no servidor A, vc vai no cliente C, por exemplo, e digita vtund A_C <ip_externo_do_servidor_A>, e no cliente B, vtund A_B <ip_externo_do_servidor_A>..................

mas soh te avisando... vc vai ter q fazer um "servidor" de tunel no B ou no C e fazer uma conexão do B para o C tb...

[16] Comentário enviado por marcoperez em 03/08/2007 - 14:33h

Tony, nao tou conseguindo, vc pode me ajudar, tou desesperado... minha internet nao eh pela eth0, eh pela hdlc0, link da empratel no roteador. Entao eu nao tenho gw 192.168.1.1, e sim gw real da internet, como faco?

[17] Comentário enviado por caiquemd em 08/08/2007 - 17:54h

Amigo esse artigo é otimo fiz de um tudo minha vpn funciona que é uma maravilha mais estou com um sério comflito onde fica meu servidor tenho um link de 300 meus clientres toalizan 40 pc com winxp todos passam 8 horas concetado ao meu servidor mais eles só coneguem ver meus arquivos no sambas se tiverem com Gateway da vpn ativo com isso minha conecção da internet fica mais do que lenta como posso fazer para que eles consigam mapea sem usar meu Gateway agradeço to no terro...

[18] Comentário enviado por alexandrebchaves em 22/07/2008 - 16:43h

Rapaz ... tentei aqui e aparece a seguinte mensagem no log:

vtund[6675]: VTun client ver 3.X 02/10/2008 started
vtund[6675]: Connecting to 189.x.y.z
vtund[6675]: Session filial[189.x.y.z] opened
vtund[6675]: Can't allocate tun device tun1. Device or resource busy(16)
vtund[6675]: Session filial[189.x.y.z] closed
vtund[6675]: Exit

O que pode ser???

[19] Comentário enviado por dtux em 10/09/2010 - 09:12h

Ola fiz alguns teste e está dando o seguinte erro no cliente:

Sep 10 05:58:54 mx kernel: [ 179.069472] tun0: Disabled Privacy Extensions
Sep 10 05:58:59 mx kernel: [ 184.405594] tun0: Disabled Privacy Extensions
Sep 10 05:59:04 mx kernel: [ 189.741281] tun0: Disabled Privacy Extensions
Sep 10 05:59:10 mx kernel: [ 195.174409] tun0: Disabled Privacy Extensions
Sep 10 05:59:15 mx kernel: [ 200.460441] tun0: Disabled Privacy Extensions
Sep 10 05:59:20 mx kernel: [ 205.542349] tun0: Disabled Privacy Extensions
Sep 10 05:59:26 mx kernel: [ 210.889765] tun0: Disabled Privacy Extensions
Sep 10 05:59:31 mx kernel: [ 216.583255] tun0: Disabled Privacy Extensions
Sep 10 05:59:37 mx kernel: [ 221.909968] tun0: Disabled Privacy Extensions

o que pode ser é um Ubuntu Server, o meu servidor é um Slackware, nele só aparece:

Sep 10 09:05:25 MASTER vtund[23902]: Session mx[192.168.11.10:45671] opened
Sep 10 09:05:25 MASTER vtund[23902]: Session mx closed
Sep 10 09:05:29 MASTER vtund[23903]: Session mx[192.168.11.10:35977] opened
Sep 10 09:05:29 MASTER vtund[23903]: Session mx closed
Sep 10 09:05:34 MASTER vtund[23904]: Session mx[192.168.11.10:52413] opened
Sep 10 09:05:34 MASTER vtund[23904]: Session mx closed
Sep 10 09:05:37 MASTER vtund[24053]: Session mx[192.168.11.10:47058] opened
Sep 10 09:05:37 MASTER vtund[24053]: Session mx closed

o que pode ser?

[20] Comentário enviado por dtux em 10/09/2010 - 10:54h

Funciou!!!!!!
Segue as confs

#### Servidor
options {
port 5000; # Listen on this port.
bindaddr { iface eth0; }; # Listen only on loopback device.

# Syslog facility
syslog daemon;

# Path to various programs
ppp /usr/sbin/pppd;
ifconfig /sbin/ifconfig;
route /sbin/route;
firewall /usr/sbin/iptables;
ip /sbin/ip;
}

# Default session options
default {
compress no; # Compression is off by default
speed 0; # By default maximum speed, NO shaping
}
mx {
passwd tux; # Password
type tun; # IP tunnel
device tun10;
proto udp; # UDP protocol
compress lzo:9; # LZO compression level 9
encrypt yes; # Encryption
keepalive yes; # Keep connection alive

up {
# 10.3.0.1 - local, 10.3.0.2 - remote
ifconfig "%% 10.3.0.1 pointopoint 10.3.0.2 netmask 255.255.255.0 broadcast 10.3.0.255"; mtu 1450";
route "add -net 10.3.0.0/24 gw 10.3.0.2 dev %%";
firewall "-t nat -A POSTROUTING -o %% -s 10.3.0.1 -d 10.3.0.2 -j MASQUERADE";
};
down {
ifconfig "%% down";
route "del -net 10.3.0.0/24 gw 10.3.0.2 dev %%";
firewall "-t nat -D POSTROUTING -o %% -s 10.3.0.1 -d 10.3.0.2 -j MASQUERADE";
};

}

##CLIENTE
options {
port 5000; # Listen on this port.
bindaddr { iface eth0; }; # Listen only on loopback device.

# Syslog facility
syslog daemon;

# Path to various programs
ppp /usr/sbin/pppd;
ifconfig /sbin/ifconfig;
route /sbin/route;
firewall /usr/sbin/iptables;
ip /sbin/ip;
}

# Default session options
default {
compress no; # Compression is off by default
speed 0; # By default maximum speed, NO shaping
}
mx {
passwd tux; # Password
type tun; # IP tunnel
device tun10;
proto udp; # UDP protocol
compress lzo:9; # LZO compression level 9
encrypt yes; # Encryption
keepalive yes; # Keep connection alive

up {
# 10.3.0.1 - local, 10.3.0.2 - remote
ifconfig "%% 10.3.0.1 pointopoint 10.3.0.2 netmask 255.255.255.0 broadcast 10.3.0.255"; mtu 1450";
route "add -net 10.3.0.0/24 gw 10.3.0.2 dev %%";
firewall "-t nat -A POSTROUTING -o %% -s 10.3.0.1 -d 10.3.0.2 -j MASQUERADE";
};
down {
ifconfig "%% down";
route "del -net 10.3.0.0/24 gw 10.3.0.2 dev %%";
firewall "-t nat -D POSTROUTING -o %% -s 10.3.0.1 -d 10.3.0.2 -j MASQUERADE";
};

}






[21] Comentário enviado por gealves97 em 18/02/2018 - 16:18h

boa tarde excelente post. Mano tentei configurar aqui o problema e que quando do o comando vtund -s da o erro desse jeito:

vtund[3526]: Unknown option 'pass' line 237
vtund[3526]: No hosts defined

voce sabe me ajudar?? fiz igual o tutorial

[22] Comentário enviado por gealves97 em 18/02/2018 - 16:52h




Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts