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