Pesquisa de site

Uma maneira mais fácil de instalar e configurar o servidor OpenVPN no Linux


Este guia descreve como instalar e configurar o servidor OpenVPN em sistemas baseados em RPM e DEB. Neste guia, usaremos um script chamado openvpn-install que automatiza todo o processo de instalação e configuração do servidor OpenVPN. Este script ajuda você a configurar seu próprio servidor VPN em poucos minutos, mesmo que você nunca tenha usado o OpenVPN antes.

Vamos começar.

Instale e configure o servidor OpenVPN no Linux

Para efeitos deste guia, usarei dois sistemas que rodam com CentOS 7 edição de 64 bits. Um atua como servidor OpenVPN, outro atua como cliente openVPN. A seguir estão os detalhes das minhas caixas de teste.

Servidor OpenVPN:

  • SO: CentOS 7 edição mínima de 64 bits
  • IP: 192.168.43.150/24
  • Nome do host: vpnserver.ostechnix.local

Cliente OpenVPN:

  • SO : CentOS 7 edição mínima de 64 bits
  • IP: 192.168.43.199/24

Primeiro, veremos a configuração do lado do servidor.

Instalação e configuração do servidor OpenVPN

Baixe o script openvpn-install em sua página GitHub.

wget https://git.io/vpn -O openvpn-install.sh

Em seguida, execute o script usando o seguinte comando como usuário root:

bash openvpn-install.sh

Você será solicitado a responder uma série de perguntas. Responda-lhes adequadamente.

Certifique-se de que o endereço IP do servidor VPN esteja correto. Se você usar vários endereços IP, insira o IP da interface de rede que você deseja que o OpenVPN ouça.

Welcome to this quick OpenVPN "road warrior" installer

I need to ask you a few questions before starting the setup
 You can leave the default options and just press enter if you are ok with them

First I need to know the IPv4 address of the network interface you want OpenVPN
 listening to.
 IP address: 192.168.43.150

Selecione qual protocolo você deseja usar. Quero usar a porta tcp, por isso selecionei o número 2.

Which protocol do you want for OpenVPN connections?
 1) UDP (recommended)
 2) TCP
Protocol [1-2]: 2

Insira o número da porta.

What port do you want OpenVPN listening to?
Port: 1194

Insira os detalhes do servidor DNS que deseja usar com a VPN. Quero usar os resolvedores DNS do Google, então selecionei a opção 2.

Which DNS do you want to use with the VPN?
 1) Current system resolvers
 2) Google
 3) OpenDNS
 4) NTT
 5) Hurricane Electric
 6) Verisign
DNS [1-6]: 2

Chegamos à etapa final. Insira o nome do seu certificado de cliente. O nome deve ser uma palavra única e não deve conter caracteres especiais.

Finally, tell me your name for the client certificate
Please, use one word only, no special characters
Client name: client

Pressione a tecla ENTER para iniciar a instalação do servidor OPENVPN.

Okay, that was all I needed. We are ready to setup your OpenVPN server now
Press any key to continue...

Agora, este script começará a instalar todos os pacotes necessários para configurar o servidor OpenVPN. Além disso, ele criará todas as chaves e certificados necessários para autenticação com os clientes VPN. Isto leverá alguns minutos.

Por fim, o script perguntará se você possui algum endereço IP externo. Se você não tiver nenhum, ignore deixando em branco e pressione a tecla ENTER.

If your server is NATed (e.g. LowEndSpirit), I need to know the external IP
If that's not the case, just ignore this and leave the next field blank
External IP: 

Finished!

Your client configuration is available at /root/client.ovpn
If you want to add more clients, you simply need to run this script again!

A instalação e configuração do servidor OpenVPN estão concluídas. Como você pode ver na última saída, os detalhes da configuração do cliente são armazenados em um arquivo /root/client.ovpn. Você precisa copiar este arquivo para todos os seus sistemas clientes VPN.

Copiei o arquivo client.ovpn para meu cliente VPN

scp client.ovpn root@192.168.43.199:/etc/openvpn/

A seguir, precisamos configurar o cliente OpenVPN.

Configuração do cliente OpenVPN

Certifique-se de ter copiado o arquivo client.ovpn do seu sistema de servidor VPN. Já copiei este arquivo para o diretório /etc/openvpn/ do meu sistema cliente VPN.

Instale o pacote OpenVPN usando o gerenciador de pacotes de distribuição.

yum install openvpn

Em seguida, execute o seguinte comando para estabelecer uma conexão segura com o servidor VPN.

openvpn --config /etc/openvpn/client.ovpn

Exemplo de resultado:

Wed Apr 5 18:50:44 2017 Unrecognized option or missing parameter(s) in /etc/openvpn/client.ovpn:14: block-outside-dns (2.3.14)
Wed Apr 5 18:50:44 2017 OpenVPN 2.3.14 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Dec 7 2016
Wed Apr 5 18:50:44 2017 library versions: OpenSSL 1.0.1e-fips 11 Feb 2013, LZO 2.06
Wed Apr 5 18:50:44 2017 Control Channel Authentication: tls-auth using INLINE static key file
Wed Apr 5 18:50:44 2017 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Wed Apr 5 18:50:44 2017 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Wed Apr 5 18:50:44 2017 Socket Buffers: R=[87380->87380] S=[16384->16384]
Wed Apr 5 18:50:44 2017 Attempting to establish TCP connection with [AF_INET]192.168.43.150:1194 [nonblock]
Wed Apr 5 18:50:45 2017 TCP connection established with [AF_INET]192.168.43.150:1194
Wed Apr 5 18:50:45 2017 TCPv4_CLIENT link local: [undef]
Wed Apr 5 18:50:45 2017 TCPv4_CLIENT link remote: [AF_INET]192.168.43.150:1194
Wed Apr 5 18:50:45 2017 TLS: Initial packet from [AF_INET]192.168.43.150:1194, sid=c6fb554e 362eb192
Wed Apr 5 18:50:45 2017 VERIFY OK: depth=1, CN=ChangeMe
Wed Apr 5 18:50:45 2017 Validating certificate key usage
Wed Apr 5 18:50:45 2017 ++ Certificate has key usage 00a0, expects 00a0
Wed Apr 5 18:50:45 2017 VERIFY KU OK
Wed Apr 5 18:50:45 2017 Validating certificate extended key usage
Wed Apr 5 18:50:45 2017 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
Wed Apr 5 18:50:45 2017 VERIFY EKU OK
Wed Apr 5 18:50:45 2017 VERIFY OK: depth=0, CN=server
Wed Apr 5 18:50:45 2017 Data Channel Encrypt: Cipher 'AES-256-CBC' initialized with 256 bit key
Wed Apr 5 18:50:45 2017 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Wed Apr 5 18:50:45 2017 Data Channel Decrypt: Cipher 'AES-256-CBC' initialized with 256 bit key
Wed Apr 5 18:50:45 2017 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Wed Apr 5 18:50:45 2017 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 DHE-RSA-AES256-GCM-SHA384, 2048 bit RSA
Wed Apr 5 18:50:45 2017 [server] Peer Connection Initiated with [AF_INET]192.168.43.150:1194
Wed Apr 5 18:50:48 2017 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1)
Wed Apr 5 18:50:48 2017 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 8.8.8.8,dhcp-option DNS 8.8.4.4,route-gateway 10.8.0.1,topology subnet,ping 10,ping-restart 120,ifconfig 10.8.0.2 255.255.255.0'
Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: timers and/or timeouts modified
Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: --ifconfig/up options modified
Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: route options modified
Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: route-related options modified
Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Wed Apr 5 18:50:48 2017 ROUTE_GATEWAY 192.168.43.1/255.255.255.0 IFACE=enp0s3 HWADDR=08:00:27:28:98:6b
Wed Apr 5 18:50:48 2017 TUN/TAP device tun0 opened
Wed Apr 5 18:50:48 2017 TUN/TAP TX queue length set to 100
Wed Apr 5 18:50:48 2017 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Wed Apr 5 18:50:48 2017 /usr/sbin/ip link set dev tun0 up mtu 1500
Wed Apr 5 18:50:48 2017 /usr/sbin/ip addr add dev tun0 10.8.0.2/24 broadcast 10.8.0.255
Wed Apr 5 18:50:48 2017 /usr/sbin/ip route add 192.168.43.150/32 dev enp0s3
Wed Apr 5 18:50:48 2017 /usr/sbin/ip route add 0.0.0.0/1 via 10.8.0.1
Wed Apr 5 18:50:48 2017 /usr/sbin/ip route add 128.0.0.0/1 via 10.8.0.1
Wed Apr 5 18:50:48 2017 Initialization Sequence Completed

Agora, verifique se tun0(interface VPN) foi criado e verifique o endereço IP da interface VPN usando o comando 'ip addr':

ip addr

Exemplo de resultado:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 inet 127.0.0.1/8 scope host lo
 valid_lft forever preferred_lft forever
 inet6 ::1/128 scope host 
 valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
 link/ether 08:00:27:28:98:6b brd ff:ff:ff:ff:ff:ff
 inet 192.168.43.199/24 brd 192.168.43.255 scope global dynamic enp0s3
 valid_lft 42359sec preferred_lft 42359sec
 inet6 fe80::a00:27ff:fe28:986b/64 scope link 
 valid_lft forever preferred_lft forever
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
 link/none 
 inet 10.8.0.2/24 brd 10.8.0.255 scope global tun0
 valid_lft forever preferred_lft forever

Como você pode ver na saída acima, nosso servidor VPN atribuiu automaticamente um endereço IP 10.8.0.2 ao cliente VPN.

Agora, tente executar ping no servidor VPN a partir do seu sistema cliente VPN:

ping -c3 10.8.0.1

Exemplo de resultado:

PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=1.05 ms
64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=1.94 ms
64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=2.49 ms

--- 10.8.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 1.057/1.832/2.495/0.594 ms

Parabéns! Agora instalamos e configuramos com sucesso o servidor e cliente OpenVPN no CentOS. Este método é o mesmo para sistemas baseados em DEB, como Ubuntu e Linux Mint. Ao contrário da instalação manual, esse script facilita muito a instalação e configuração do openvpn.

Saúde!

Recurso:

  • página GitHub openvpn-install

Artigos relacionados