Dúvidas para implementar uma rede VPN
Pessoal, boa noite!
Estou quebrando a cabeça aqui com uma configuração de VPN com o OpenVPN, gostaria de pedir ajuda de vocês, abaixo vou descrever tudo o que foi feito até o momento, se tiver algo errado me mostrem por favor.
Estou configurando para interligar duas empresas de cidades diferentes, ambas utilizam conexão ADSL com IP Dinâmico, sendo assim, criei uma conta no NO-IP e instalei o aplicativo na Matriz, segue abaixo as configurações que foram feitas no servidor Firewall/Proxy de ambas as empresas.
Configurações de IP's da loja matriz
Código :
IP Rede Local: 192.168.0.0/24
Gateway: 192.168.0.1
VPN: 10.0.0.0/16
Configurações de IP's da loja filial
Código :
IP Rede Local: 192.168.1.0/24
Gateway: 192.168.1.1
VPN: 10.1.0.0/16
Foram feitas as seguintes configurações nos servidores da matriz e da filial:
1º Passo: instalação da biblioteca lzo:
download: http://www.oberhumer.com/opensource/...zo-2.04.tar.gz
descompactar:
Código :
# tar -zxvf lzo-2.04.tar.gz
em seguida, dentro do diretório descompactado, foi executado os seguintes comandos:
Código :
# ./configure
# make
# make install
# ldconfig
O processo foi feito com sucesso.
2º Passo: instalação do OpenVPN
download: http://swupdate.openvpn.net/communit...n-2.1.4.tar.gz
descompactar:
Código :
# tar -zxvf openvpn-2.1.4.tar.gz
em seguida, dentro do diretório descompactado, foi executado os seguintes comandos:
Código :
# ./configure
# make
# make install
O processo foi feito com sucesso
Após as instalações acima, deu-se início a configuração da VPN:
Foi criado um diretório com o nome openvpn, dentro do diretório /etc
dentro do diretório, openvpn foi criada a chave de criptografia, com o comando:
Código :
# openvpn --genkey --secret chave.key
Logo após foi criado o arquivo de configuração, com o seguinte conteúdo:
Código :
# Arquivo de Configuração simples (Matriz)
#
proto udp
dev tun
ifconfig 10.0.0.0 10.1.0.0
secret /etc/openvpn/chave.key
port 5900
Todo o procedimento acima feito no servidor da Matriz foi feito também no servidor da Filial, exceto o arquivo de configuração que foi configurado conforme abaixo:
Código :
# Arquivo de Configuração simples (Filial)
#
proto udp
remote matrizac.no-ip.info
dev tun
ifconfig 10.1.0.0 10.0.0.0
secret /etc/openvpn/chave.key
port 5900
Após estas configurações, foi criada uma conta no site do No-IP - Dynamic DNS, Static DNS for Your Dynamic IP e um host com o IP dinâmico da Matriz. Depois feita a instalação do aplicativo NO-IP
no servidor da Matriz, com o endereço 'matrizac.no-ip.info' e iniciado o serviço do NO-IP.
Foi executado o seguinte comando no servidor Matriz:
Código :
# openvpn --config /etc/openvpn/matriz.conf &
e depois o mesmo comando no servidor Filial
Código :
# openvpn --config /etc/openvpn/filial.conf &
Após executar os comandos acima, foram criados em cada servidor uma nova interface 'tun0'
Para finalizar a configuração foram criadas as duas rotas, para a Matriz e Filial, com os seguintes comandos abaixo:
Matriz:
Código :
# route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.1.0.0
Filial:
Código :
# route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.0.0.0
Por fim foram acrescentadas algumas linhas nos Firewalls de ambas Empresas:
Matriz:
Código :
iptables -t nat -A POSTROUTING -o tun+ -j MASQUERADE
iptables -A FORWARD -i tun0 -s 192.168.0.0/24 -d 192.168.1.0/24 -j ACCEPT
Filial:
Código :
iptables -t nat -A POSTROUTING -o tun+ -j MASQUERADE
iptables -A FORWARD -i tun0 -s 192.168.1.0/24 -d 192.168.0.0/24 -j ACCEPT
Foram feitas também a liberação da porta 5900 em ambos servidores.
Fazendo a configuração acima, o correto seria a matriz 'enxergar' a filial e vice-versa, mas quando tento fazer o Ping, nenhuma responde.
Esta tudo correto com as configurações ou estou errando em algum lugar?
Re: Dúvidas para implementar uma rede VPN
Ola,
O erro mais comum quando se configura o openvpn eh configura-lo para comunicacao host a host com a opcao:
ifconfig 10.0.0.0 10.1.0.0 ( com esta opcao tem que ter um tunel para cada cliente conectado na rede ) o correto neste caso é usar:
server 10.0.0.0 255.255.255.0
pois isto ira configurar uma rede em comum entre os pontos da vpn, ou seja, um unico tunel para todos os clientes.
Para que os clientes da vpn enxerguem a rede da matriz eh preciso o comando:
push "route 192.168.0.0 255.255.255.0"
Para que o servidor reconheca as redes atras dos clientes eh preciso usar a opcao ccd:
client-config-dir ccd
Bem como dizer as redes dos clientes:
route 192.168.1.0 255.255.255.0
Agora na sua configuracao soh tem um probleminha, para o ccd funcionar, vc tem que usar gerar um arquivo de controle individual para cada cliente, o arquivo que tem extensao .crt, com isto feito, dentro do diretorio ccd, crie um arquivo com o mesmo nome do arquivo .crt usado no cliente com o seguinte conteudo:
iroute 192.168.1.0 255.255.255.0
Por exemplo:
criar chave e crt para o cliente com o nome filial01
e no diretorio ccd, criar um arquivo com o nome filial01
Re: Dúvidas para implementar uma rede VPN
Tambem para o ccd funcionar vc precisa usar certificados tanto no servidor como no cliente, no tutorial do openvpn tem como gerar os certificados, segue abaixo como seria sua configuracao para usar certificados:
### matriz.conf
port 5900
proto udp
dev tun
# Certificados gerados
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 10.0.0.0 255.255.255.0
push "route 192.168.0.0 255.255.255.0"
client-config-dir ccd
route 192.168.1.0 255.255.255.0
# Neste arquivo serão guardados os IPs dos clientes
# para conectarem com o mesmo IP da proxima vez
ifconfig-pool-persist ipp.txt
client-to-client
# Ative para permitir dois clientes com o mesmo
# certificado - não recomendável
;duplicate-cn
keepalive 10 120
# Compressão, privilégios do cliente
comp-lzo
max-clients 150
user nobody
group nobody
# Logs e etc
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
log-append /var/log/openvpn.log
verb 3
*Obs: nao esquecer que no diretorio ccd tem que ter um arquivo com o nome filial01 com o comando iroute, pois este eh o nome do certificado usado pelo cliente.
### filial.conf
client
dev tun
proto udp
remote matrizac.no-ip.info 5900
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert filial01.crt
key filial01.key
ns-cert-type server
comp-lzo
verb 3
status /var/log/openvpn-status.log
log /var/log/openvpn.log
log-append /var/log/openvpn.log
Obs: nao precisa criar rotas, nem fazer mascaramento neste caso
somente preciso colocar:
echo 1 > /proc/sys/net/ipv4/ip_forward
tanto no servidor como no cliente
Re: Dúvidas para implementar uma rede VPN
Primeiramente obrigado pelas respostas, entendi quase tudo o que o Sr. citou, só estou com dúvida com relação a este 'ccd'. O que exatamente o Sr. quis dizer sobre isso?
Re: Dúvidas para implementar uma rede VPN
CCD vem de:
Client-Config-Dir ccd,
que eh o diretorio onde ficarao os arquivos que indicam as rotas para cada rede conectada atraves dos clientes da vpn.
Por exemplo: vamos dizer que vc em uma cidade tenha 3 filiais ( filial01 - 192.168.1.0/24 , filial02 - 192.168.2.0/24 e filial03 - 192.168.3.0/24 ), e que estas filiais sao conectadas entre si por uma rede wireless e uma delas possua conexao com internet. Neste caso a filial que possui a conexao com a internet vai rodar o cliente da vpn e tera o nome de filial01, o certificado gerado no servidor tera o nome de filial01.crt, no diretorio /etc/openvpn/ccd, deve ter um arquivo como o nome filial01, dentro deste arquivo deve ter os comandos:
iroute 192.168.1.0 255.255.255.0
iroute 192.168.2.0 255.255.255.0
iroute 192.168.3.0 255.255.255.0
pois isto ira indicar ao servidor para rotear para as filiais 02 e 03 a partir da filial 01.
A opcao do ccd, evita ter que usar os comandos abaixo:
Matriz:
Código :
# route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.1.0.0
Filial:
Código :
# route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.0.0.0
Por fim foram acrescentadas algumas linhas nos Firewalls de ambas Empresas:
Matriz:
Código :
iptables -t nat -A POSTROUTING -o tun+ -j MASQUERADE iptables -A FORWARD -i tun0 -s 192.168.0.0/24 -d 192.168.1.0/24 -j ACCEPT
Filial:
Código :
iptables -t nat -A POSTROUTING -o tun+ -j MASQUERADE iptables -A FORWARD -i tun0 -s 192.168.1.0/24 -d 192.168.0.0/24 -j ACCEPT