Configurando um servidor de openvpn parte 2
Dando continuidade a parte 1 do artigo, vamos configurar o lado do cliente.
Chaves e certificados para a filial
server:~/easy-rsa# ./build-key filial1 Generating a 2048 bit RSA private key ......................+++ ..........+++ writing new private key to 'filial1.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [BR]: State or Province Name (full name) [SP]: Locality Name (eg, city) [Sao Paulo]:"Sao Paulo" Organization Name (eg, company) [Personal OpenVPN Client]: Organizational Unit Name (eg, section) []: POC Common Name (eg, your name or your server's hostname) []:filial1 Email Address [but3k4@gmail.com]: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Using configuration from /root/easy-rsa/openssl.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName : PRINTABLE:'BR' stateOrProvinceName : PRINTABLE:'SP' localityName : T61STRING:'"Sao Paulo"' organizationName : PRINTABLE:'Personal OpenVPN Client' organizationalUnitName: PRINTABLE:'POC' commonName : PRINTABLE:'filial1' emailAddress : IA5STRING:'but3k4@gmail.com' Certificate is to be certified until Aug 9 14:59:05 2018 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated server:~/easy-rsa#
Com os certificados criados, vamos copiá-los para o /etc/openvpn:
server:~/easy-rsa# mkdir /etc/openvpn/{certs,ccd,keys} server:~/easy-rsa# cp keys/*.crt /etc/openvpn/certs/ server:~/easy-rsa# cp keys/*.key keys/dh2048.pem /etc/openvpn/keys/
Criando o arquivo de rotas
O arquivo /etc/openvpn/ccd/filial1 é responsável por definir rotas individuais para os clientes, ou seja, sem ele, o servidor nao vai saber que as maquinas de ambos os lados querem se comunicar e com isso a comunicação fica restrita apenas aos servidores.
server:~/easy-rsa# echo "iroute 192.168.1.0 255.255.255.0" > /etc/openvpn/ccd/filial1
Ajustando as permissões de arquivos / diretórios
server:~/easy-rsa# cd /etc/openvpn/ server:/etc/openvpn# chown -R nobody:nogroup keys certs ccd server:/etc/openvpn# chmod 0400 keys/* certs/* ccd/*
Criando o diretorio de log
Precisamos criar o diretório de log, pois nossa configuração salva estas informações em arquivos específicos
server:/etc/openvpn# mkdir /var/log/openvpn
Startando o openvpn do lado matriz
server:/etc/openvpn# /etc/init.d/openvpn start Starting virtual private network daemon: openvpn(OK). server:/etc/openvpn#
Com o lado do servidor ok, vamos criar os arquivos para a filial:
server:/etc/openvpn# mkdir -p filial1/{certs,keys} server:/etc/openvpn# cp certs/{ca.crt,filial1.crt} filial1/certs/ server:/etc/openvpn# cp keys/{filial1.key,shared.key} filial1/keys/
Criando o arquivo /etc/openvpn/filial1/openvpn.conf:
# /etc/openvpn/openvpn.conf filial configuration file # diretorio onde esta os arquivos de configuracao / certificados cd /etc/openvpn # Especifica que este certificado eh de um cliente client # Define o ip do servidor para o cliente conectar remote 189.47.25.20 # porta usada para os clientes conectarem no servidor port 1194 # protocolo usado na conexao proto udp # device usado pelo openvpn dev tun # Diz que o certificado foi assinado pelo servidor ns-cert-type server # Habilita conexoes tls # Ajuda a bloquear ataques DoS e flooding na porta usada pelo openvpn tls-client # arquivo de chave compartilhada usado pelo tls-server # O mesmo adiciona uma camada a mais de seguranca, habilitando controle de conexoes tls tls-auth keys/shared.key 1 # Certificado de autoridade # Tem que ser o mesmo em todos os hosts # que conectarem a sua vpn ca certs/ca.crt # Certificado e chave privada do servidor # Cada maquina tem que ter seu certificado e chave cert certs/filial1.crt key keys/filial1.key # Habilita ping de 10 em 10 segundos para dizer ao lado da filial que a matriz # esta no ar, usado para manter a conexao ativa ping-timer-rem keepalive 10 120 # Tipo de criptografia usada cipher DES-EDE3-CBC # habilita compressão no link VPN comp-lzo # Ativa a opcao de se conectar, caso o cliente nao esteja na internet, ou # o mesmo tenha perdido a conexao. resolv-retry infinite # Nao especifica uma porta local para o cliente ouvir. nobind # usuário e grupo sob o qual o openvpn ira rodar user nobody group nogroup # Permite um restart sem fechar a conexão e re-ler as chaves persist-key persist-tun # Log de status das conexoes status /var/log/openvpn/openvpn-status.log # define um arquivo de log, pois o default é o /var/log/syslog log /var/log/openvpn/openvpn.log log-append /var/log/openvpn/openvpn.log # Nivel de log # 0 silencioso, exceto para erros fatais # 4 razoavel para uso geral # 5 e 6 podem ajudar a debugar problemas de conexoes # 9 maximo debug, muito util para tentar descobrir erros caso a vpn nao suba verb 3 # desabilita mensagens repetitivas, ou seja, erros ou conexoes em sequencia # acima de 20, ele dropa. mute 20
Compactando os arquivos para a filial:
server:/etc/openvpn# tar -czpf filial1.tar.gz filial1
Envie o arquivo filial1.tar.gz para o /tmp/ da filial.
Agora do lado da filial, é necessário instalar o openvpn e descompactar os arquivos:
filial1:~# apt-get install -y openvpn
Com o openvpn instalado, edite o arquivo /etc/default/openvpn e descomente a linha #AUTOSTART=”all”. Agora descompacte o arquivo filial1.tar.gz que está no /tmp/:
filial1:~# cd /tmp/ filial1:~# tar xzf filial1.tar.gz filial1:~# mv filial1/* /etc/openvpn/ filial1:~# rm -rf /tmp/filial1*
Criando o diretorio /var/log/openvpn:
filial1:/etc/openvpn# mkdir /var/log/openvpn
Startando o openvpn do lado filial:
filial1:/etc/openvpn# /etc/init.d/openvpn start Starting virtual private network daemon: openvpn(OK). filial1:/etc/openvpn#
Pronto, seu openvpn esta instalado e matriz/filial estao se comunicando. Não esqueça de liberar no fw da matriz a porta 1194 udp de sua interface externa e tudo na interface da vpn que é tun0.
Caso necessite configurar um notebook para acessar o servidor, basta seguir os passos da criação das configurações para a filial, alterando é claro o nome de filial para notebook ou qualquer outro nome.
Abraços.
Boa tarde Claudio!
Nao se ainda vai responder este post, ja faz tempo eu publicou este tutorial. Mas vale a tentativa. Fiz conforme os seus passos, mas tanto do servidor como da filial nao pinga. Veja o route -n:
SERVER:
root@z:/etc/openvpn/filial1# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
200.200.200.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
200.200.200.0 200.200.200.2 255.255.255.0 UG 0 0 0 tun0
192.168.1.0 200.200.200.2 255.255.255.0 UG 0 0 0 tun0
192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth2
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth2
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth2
++++++++++++++++++++++++++++++++++++++++++++++
FILIAL1
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 1000 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 0 eth0
Leandro
28 Oct 11 at edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>
Olá Leandro,
Do lado da matriz o que mostra o route -n? você já tentou pingar os ips da tun0?
Abraços.
but3k4
28 Oct 11 at edit_comment_link(__('Edit', 'sandbox'), ' ', ''); ?>