Pages: [1]   Go Down
Author Topic: [tutorial] criar uma vpn com openvpn  (Read 2813 times)
kodo no kami
RegMem
*

Karma: +0/-0
Offline Offline

Posts: 44


« on: December 19, 2015, 11:47:09 AM »

entao galera hoje vou ensinar criar uma vpn com o programar openvpn que é software opensource e tem para diversas plataformas como linux, windows, mac e ate android, no caso para a gente baixar o openvpn podemos ir no site oficial dele

site oficial

antes de mais nada vamos entender o que é uma vpn e para que serve uma vpn alem de um pouquinho de rede tambem, no caso uma vpn é uma forma de virtualizar uma rede interna usando uma rede externa seria o mesmo que a gente ter uma rede lan mesmo que os computadores esteja em pontos geograficos diferente isso tudo pela rede wan ou seja a internet, como sabemos podemos atribuir IP privado para a nossa maquina e as demais maquinas na rede e assim podemos fazer essas maquinas se comunicar, porem esse IP privado fica limitado dentro da propria rede devido ele nao ser roteado ou seja nao podemos navagar na internet com esse IP e nem é possivel se comunicar com computadores fora da rede diretamente pelo IP privado, entao como seria a comunicação entre sua maquina e um servidor de site se a gente nao pode se comunicar externamente pelo IP privado? quando a gente configura a rede temos que configurar 3 coisas pelo menos para funcionar a primeira é o IP privado (ex. 192.168.1.1) a segunda é a mascara de rede que define a extensão da rede no caso quantas redes e quantos hosts (ex. 255.255.255.0 ) e a outra é o gateway que é nada mais nada menos que o IP privado do roteador, com isso quando as maquina precisar se comunicar com outra maquina e ela esta na mesma rede a comunicação ali vai ser lan ou seja vai enviar direto para maquina porem quando a comunicação é uma maquina fora da rede vai ser redirecionado para seu roteador e ele que vai ter o trabalho de enviar para a maquina correta ou a rota correta ate chegar na maquina, o roteador tambem tem o trabalho de mascarar o IP da fonte do pacote para o IP dele mesmo ou seja ja que as maquina da outra so enxerga a propria rede o roteador fica como intermediario ali passando de uma rede para outra porem ele tem que fazer parte das duas redes ou existir uma rota entre as duas redes que leva para o roteador (dai o nome dele ne roteador vem de rotas), na maioria das  vezes o roteador ou modem que recebe o IP publico ou seja o IP que pode ser roteado que é distribuido pelo seu provedor de internet e é por esse IP que navegamos na internet, no caso o roteador tem dois IPs que é o IP privado que faz ele esta na sua a sua rede e o IP publico que faz a comunicação externa



no caso do exemplo acima se o pc do kodo fosse se comunicar com pc do fts315 a comunicação entre eles nao poderia ser via IP privado ou seja ambas as maquinas ali estao usando rede lan com isso o kodo nao poderia digitar o IP da maquina do fts que é 10.0.0.1 e nem o fts315 nao pode digitar o IP 192.168.1.1 do pc do kodo ja que são IPs privados e so podem ser enxergados na propria rede, tambem podemos ver que os dois roteadores tanto do kodo quanto do fts315 tem dois IPs no caso o IP da rede lan e o IP da rede wan e os dois roteadores tambem faz parte de uma rede (essa rede wan é na verdade a redes dos ISPs que seu provedor e o os outros provedores estao interligados de certa forma e é isso que conhecemos como internet no caso a rede das redes), no caso o roteador conhece os outros roteadores entao para se comunicar com a rede lan usamos o IP da rede wan, no caso para o kodo se comunicar com o pc do fts315 precisa digitar o IP 200.0.0.2 e nao o IP 10.0.0.1 porem se fizer isso a comunicação vai ser para o roteador do fts315 e nao para o pc dele, ai entra aquela parte que temos que liberar porta no roteadores isso permite redirecionar o trafego de uma porta especifica do roteador para IP especifico dentro da rede lan (ou seja quando duas ou mais maquinas vão jogar via internet precisa libera a porta X para determinado IP da rede lan entao qualquer trafego que chegar no roteador referente aquela porta aberta vai ser redirecionado para a rede lan para uma maquina especifica), é importante voce aprender liberar porta do roteador isso é se voce for subir algum servidor de alguma coisa precisa fazer isso (o openvpn a parte servidor tambem precisa)



bom como ja sabemos o vpn ele virtualiza uma rede interna por uma rede externa ou seja seria como ter os dois ou mais computadores em rede lan ligado pela rede wan ou seja o exemplo do kodo tanto ele quanto o fts315 poderia ter mais uma interface de rede virtual onde kodo poderia atribuir o IP 192.168.2.1 e o fts315 192.168.2.2 para interface virtual e isso seria equivalente esta na mesma isso tudo pela rede pela comunicação da rede wan, um dos usos do vpn seria se sua empresa tivesse varias filiais espelhadas pelo mundo ou seja ia ser complicado puxar um cabo nao é? outro uso é o para jogos onde voce pode jogar jogos em rede sendo alguns jogos é limitado apenas para lan, outra forma se voce mexe com informação sensivel onde precisa transferir de uma maquina para outra use vpn muitas delas permite criptografar o trafego ou seja tambem vai ser uma especie como tunel entre as duas interfaces virtuais



vantagem e desvantagens do openvpn sobre as outras vpn, a primeira vantagem que podemos citar que é uma ferramenta opensource e tem para diversas plataformas ou seja pode modificar a vontade e nao precisa ficar limitado em um sistema operacional, outra vantagem que nao tem limitação de clientes ja que é voce que cria o servidor voce pode conectar quantos clientes quiser diferente de outras vpns tipo o hamachi que aceita poucos clientes, outra vantagem é a criptografia do trafego que voce pode usar varios tipos de cifras como des, aes, rc2 e algumas outras alem de permitir criptografia assimetrica e certificados digitais, outra coisa que tambem é possivel é compactação de trafego com o lzo, em termos de segurança tambem é um ponto a mais ja que seu trafego puro nao passa na mao de terceiros nem mesmo seu provedor saberia o conteudo dos dados passado no tunel (dificultando a lei 12965/14 art.10 na parte de armazenamento dos isp, porem nada impede deles dropar o trafego kkkkk), a desavantagem diferente  de algumas vpn é que voce tem que configurar manualmente diferente de muitas outras onde voce apena baixa o cliente ja no openvpn voce tem que configurar o servidor (liberar porta no roteador, criar regra no firewall, e sempre passar seu IP publico ou usar algum servidor de dns dinamico como no-ip ou criar o seu proprio), bom galera agora a gente ja sabe um pouco mais sobre o openvpn vamos criar o nosso servidor no caso baixe o openvpn no site oficial e instale (caso use linux use apt-get ou yum), depois abra o prompt ou terminal e digite o comando para ver se ta instalado realmente

Code:
openvpn --help



como podemos ver na imagem anterior eu to tanto no linux quanto no windows, no caso o linux é o IP 192.168.1.1 e o windows é o IP 192.168.1.2 sendo o linux o servidor e o windows o cliente  (sim eles estao na mesma rede entao nao precisava fazer isso mais como é so um exemplo mesmo), no caso podemos criar dois tipos de interfaces que a é tun e a tap, a tun é tunel que funciona como p2p ou seja so vai conectar ponto a ponto na outra maquina entao temos que definir o nosso IP e o IP da maquina que vamos conectar, o tap funciona como  uma rede mesmo ou seja alem de definir o nosso IP virtual temos que definir a mascara de rede, para a gente escolher entre tun e tap usamos o paramentro --dev seguido de tun ou tap, no caso vamos começar com o tun

Code:
openvpn --dev tun

para a gente especificar o ip virtual usamos --ifconfig seguido do IP que vamos atribuir a interface virtual, no caso da interface tun tambem temos que definir o ip da onde vamos estabelecer a conexao ponto a ponto

Code:
openvpn --dev tun --ifconfig 10.0.0.1 10.0.0.2



na maquina cliente basta inverte os IPs do --ifconfig e usar o parametro --remote com o IP do servidor para conectar nele

Code:
openvpn --remote 192.168.1.1 --dev tun --ifconfig 10.0.0.2 10.0.0.1



para testar basta da um ping no ip (sendo esse ip que voce colocaria no jogo)

Code:
ping 10.0.0.1



nao é muito eficiente usar o tun o tap é bem melhor por que simula uma rede no caso para usar ele basta definir ele no --dev, e no --ifconfig definimos o ip da maquina e a mascara  de rede ou seja qualquer maquina que corresponda aquela mascara de rede vai esta nela

Code:
openvpn --dev tap --ifconfig 10.0.0.1 255.0.0.0



na maquina cliente fazemos mesma coisa porem com outro ip e mesma mascara de rede, tambem temos que usar o --remote e o ip do servidor para conectar nele

Code:
openvpn --remote 192.168.1.1 --dev tap --ifconfig 10.0.0.2 255.0.0.0



para a gente mudar a porta padrao usamos --port seguido da porta (se muda a porta padrao deve ser especificado no cliente tambem)

Code:
openvpn --port 315 --dev tap --ifconfig 10.0.0.1 255.0.0.0

podemos compactar o trafego com o --comp-lzo yes (lembrando que o mesmo deve ser especifico no cliente)

Code:
openvpn --comp-lzo yes --dev tap --ifconfig 10.0.0.1 255.0.0.0

podemos ver as cifras criptograficas com --show-ciphers

Code:
openvpn --show-ciphers

e podemos mudar ele com --cipher

Code:
openvpn --cipher AES-256-CFB1 --dev tap --ifconfig 10.0.0.1 255.0.0.0

porem para usar criptografia temos que gerar uma chave compartilhada com o comando --genkey --secret seguido do nome da chave que sera criado (o arquivo gerado deve ser enviado para o cliente tambem e deve ser o mesmo arquivo)

Code:
openvpn --genkey --secret kodo.key



para usar basta especificar a criptografia como antes e usar o --secret seguido do arquivo

Code:
openvpn --cipher AES-256-CBC --secret kodo.key --dev tap --ifconfig 10.0.0.1 255.0.0.0



no cliente é mesma coisa deve ser especificado tanto a criptografia quanto a chave

Code:
openvpn --remote 192.168.1.1 --cipher AES-256-CBC --secret kodo.key --dev tap --ifconfig 10.0.0.2 255.0.0.0



a gente tambem pode armazenar esses parametros dentro de um arquivo depois chamar os comandos direto pelo arquivo, para isso basta criar  um arquivo com eles um embaixo do outro sem o menos menos

Code:
cipher AES-256-CBC
secret kodo.key
dev tap
ifconfig 10.0.0.1 255.0.0.0

depois usar o --config seguido do nome do arquivo

Code:
openvpn --config kodoconf

bom galera tem muitos outros comandos para openvpn isso é apenas o basico de como criar uma vpn por ele \o

by kodo no kami
Logged

Pages: [1]   Go Up
Print
Jump to: