Perguntas Frequentes

Melhorando o desempenho de transferência do openvpn.
Última atualização 3 ano(s) atrás

Melhorando o desempenho e a taxa de transferência do OpenVPN

24 de março de 2021 por , no BlogLinux

OpenVPN, Wireguard, L2TP / IPSec, SSTP, IKEv2, PPTP ou outro. Se você pudesse escolher, qual desses protocolos VPN usaria? É aí que reside o meu problema. No meu caso de uso atual, devo encontrar uma maneira de melhorar o desempenho e o rendimento do OpenVPN.

Você pode estar seguindo minha construção de laboratório doméstico Linux . Uma das decisões mais importantes ao construir seu laboratório doméstico é selecionar o roteador / firewall adequado para sua rede. No meu caso, depois de muitas horas de pesquisa, comparações online, leitura de comentários e assistir a vídeos no Youtube, optei pelo Edgerouter 10x (ER-10x). Observação: este artigo inclui meus links de afiliados; no entanto, eu só linko para hardware e serviços pelos quais eu mesmo paguei e testei.

Bem, na semana passada, descobri que ele não é compatível com o Wireguard, pelo menos não oficialmente , como descobri recentemente (minha próxima tarefa ). Isso não é uma crítica ao ER-10x, de forma alguma; é um roteador incrivelmente capaz com muitos recursos de classe empresarial e, o mais importante, estabilidade sólida.

Dito isso, meu provedor de serviços VPN preferido é ovpn.com . Eles têm muitas localizações, excelente desempenho e oferecem IPs dedicados com portas abertas por US $ 3 / mês. Em roteadores, eles oferecem suporte a Wireguard ou OpenVPN .

Otimizando OpenVPN: testes de velocidade


Resultados do teste de velocidade de internet OpenVPN 2.4 usando Google + M-Lab e wifiman.com .

O Edgerouter 10x é construído no Debian Linux . É um prazer trabalhar com isso porque muitas das funcionalidades parecem familiares. No ano passado, passei mais tempo na linha de comando e menos tempo usando a GUI.

A configuração do OpenVPN é um desses recursos somente de linha de comando. No entanto, depois de baixar o arquivo .ovpn e configurá-lo no roteador, logo cheguei a uma limitação incapacitante do OpenVPN. A CPU! O ER-10x possui núcleos de CPU de 880 MHz, o que é um exagero na grande maioria dos casos. No entanto, neste caso, o desempenho do OpenVPN não é muito eficiente, pois o rendimento depende muito da velocidade do núcleo da CPU.

No meu primeiro teste de velocidade, as velocidades de download estavam em torno de 15 Mbps de download e 12 Mbps de upload. Eu precisava de sólidos 20 Mbps para baixo para os dispositivos IoT conectados a uma VLAN que usa essa conexão VPN.

Minha configuração básica em casa atualmente é: WAN dupla com failover automático de backup 4G LTE ISP, VLANs para rede WiFI de convidado isolada e para dispositivos IoT com e sem fio. Por enquanto, vou correr com o que tenho; funciona!

Melhorando o desempenho do OpenVPN

minha configuração openvpn: /config/user-data/ovpn.ovpn


OpenVPN config Captura de tela da minha sessão SSH Manjaro i3 com o roteador.

Nota: Eu já verifiquei os resultados quando inicialmente configurei tudo uma semana atrás usando meu servidor Ubuntu em uma maior taxa de transferência de LAN com iperf . Como os limites de hardware / CPU são tão baixos no Edgerouter, os testes do ISP foram muito representativos desses testes. Se você estiver usando o OpenVPN em uma configuração restrita por hardware, experimente os seguintes ajustes de configuração. Tentarei encontrar tempo e revisitar este artigo com alguns resultados de testes do iperf refeitos. Se tiver tempo, você pode compartilhar os resultados do seu teste na seção de comentários abaixo ou por e-mail usando o link “contato”.

A velocidade de download do meu ISP é pouco mais de 100 Mbps. O que, nesta parte do mundo, é tão bom quanto ganha por menos de US $ 200 por mês. Dito isso, mesmo antes dessa configuração do OpenVPN, os dispositivos IoT em minha rede doméstica eram restritos a um download máximo de 20 Mbps. Estou usando um EdgeSwitch para limitar a largura de banda das conexões com fio e o controlador Unifi via Unifi APs para limitar a largura de banda sem fio. Essas restrições de rede garantem que um ou mais dispositivos não consumam largura de banda.

Meu plano? Melhore o desempenho do OpenVPN o máximo possível para atingir velocidades de download de pelo menos 20 Mbps, como você pode ver acima, antes e depois dos testes de velocidade da Internet. (Desde então, desativei as restrições de largura de banda no OpenVPN VLAN).

Depois de otimizar o desempenho do OpenVPN, a velocidade máxima de subida / descida é praticamente igual aos limites anteriores. Vejamos como você pode ir de 15 Mbps para 20 Mbps de velocidade de download da Internet em um roteador de núcleo de CPU de 880 MHz.

Localização do servidor OpenVPN

Esteja você usando NordVPN (suporte ao cliente incrível 24 horas por dia, 7 dias por semana), OVPN (melhor VPN IP dedicado em minha opinião) ou outro serviço VPN, o primeiro passo deve ser selecionar os servidores VPN mais próximos de você. No meu caso, seus servidores estão localizados no sul de Miami. Não há muito o que elaborar aqui ... Closer é geralmente mais rápido. Ainda assim, você deve testar os locais por si mesmo, porque nem todos os servidores têm desempenho igual. Alguns estão sob mais carga do que outros. Felizmente, OVPN mostra os níveis de carga para locais de servidor VPN.

Desativar compressão

Se a CPU não for um gargalo, fique à vontade para habilitar a compactação. No Edgerouter, a compactação usará recursos da CPU, levando a um maior uso da CPU. Você pode desativar com:

comp-lzo no; obsoleto - remova ou use 'compactar' sem um algoritmo

ou recomendado para OpenVPN versão 2.4+:

comprimir

Fornecer apenas compresssem um algoritmo é o equivalente a comp-lzo nodesabilitar a compactação, mas habilitar o enquadramento do pacote para compactação.

Use UDP para melhor desempenho do OpenVPN.

Com o OpenVPN, na maioria dos casos e especialmente no meu caso de uso, o UDP é mais rápido que o TCP . Os pacotes TCP são mais pesados, adicionando sobrecarga. O TCP também numera os pacotes em uma sequência, enquanto o UDP não. O UDP usa cabeçalhos mínimos, o que o torna menos intensivo em recursos. Esta é a linha de configuração:

proto udp

Escolhendo a cifra certa

Por padrão, o OpenVPN usa Blowfish , uma cifra de 128 bits. Quando se trata do nível de segurança de que você precisa, você terá que decidir entre uma criptografia melhor e uma taxa de transferência mais rápida em relação à carga da CPU. Novamente, especialmente com este CPU de 880 MHz. Se não houver afunilamento de CPU, eu recomendaria usar AES-256-GCM. No meu caso, estou usando AES-128-CBC, pois resultou em uma taxa de transferência OpenVPN mais rápida.

cifra AES-128-CBC

Desativar negociação de cifra

Você pode definir ncp-disable(desabilitar “parâmetros criptográficos negociáveis”). Isso desativa completamente a negociação de cifras e, em vez disso, usa o que é especificado pela cipheropção discutida anteriormente. A partir do OpenVPN 2.4, ele está obsoleto. Além disso, leia Negociação de criptografia OpenVPN (referência rápida) .

ncp-disable

Otimize as gravações de E / S TUN / TAP / UDP

Configure fast-iopara otimizar as gravações de E / S TUN / TAP / UDP, evitando uma chamada para poll / epoll / select antes da operação de gravação.

“O objetivo dessa chamada normalmente seria bloquear até que o dispositivo ou soquete esteja pronto para aceitar a gravação. Esse bloqueio é desnecessário em algumas plataformas que não oferecem suporte ao bloqueio de gravação em soquetes UDP ou dispositivos TUN / TAP. Nesses casos, pode-se otimizar o loop de eventos evitando a chamada poll / epoll / select, melhorando a eficiência da CPU em 5% a 10% . Esta opção só pode ser usada em sistemas não Windows, quando proto udpé especificado e quando shaperNÃO é especificado. ” - Fonte .

Definir buffers de envio / recebimento

Você pode definir os tamanhos de buffer de envio e recebimento do soquete UDP. No OpenVPN 2.3.9+, o padrão é o padrão do sistema operacional (geralmente 64K).

Adicionar à configuração do cliente (bytes):

sndbuf 512000
rcvbuf 512000

Ou, se você tiver acesso, defina buffers na configuração do servidor :

sndbuf 512000
rcvbuf 512000
empurre "sndbuf 512000"
empurre "rcvbuf 512000"

Leia mais sobre o ajuste fino desses buffers aqui . Eles fazem uma diferença notável quando ajustados corretamente.

Ajuste os MTUs do cliente para corresponder ao servidor OpenVPN

Você pode usar o seguinte comando para executar grep nos logs de conexão para incompatibilidades de 'MTU'. Use os avisos sobre incompatibilidade de tamanho para ajustar, tun-mtuse necessário. O padrão do meu roteador é 1500, que também é o padrão do OpenVPN, então não há necessidade de mexer nisso. Além disso, consulte os avisos sobre ajustes tun-mtue certifique-se de ler a respeitomssfix .

sudo cat /path/to/openvpn.log | grep AVISO

Que exibirá qualquer aviso como este:

AVISO: 'link-mtu' é usado inconsistentemente, local = 'link-mtu 1500', remote = 'link-mtu 3000'

Defina o comprimento da fila de transmissão

Defina o comprimento da fila TX na interface TUN / TAP. O padrão é o sistema operacional do sistema, que no meu caso é 1000.

txqueuelen 2000

Configuração ovpn.com padrão (antes)

cliente
dev tun
servidor remote-cert-tls
cifra aes-256-cbc
puxar
nobind
reneg-sec 0
resolv-retry infinito
verbo 3
persist-key
persist-tun
remoto-aleatório
proto udp
mute-replay-warnings
comp-lzo
atraso de rota 10

Meu arquivo de configuração de desempenho OpenVPN aprimorado. (Depois de)

cliente
dev tun
servidor remote-cert-tls

comprimir
proto udp
cifra aes-128-cbc
ncp-disable
fast-io

sndbuf 512000
rcvbuf 512000
txqueuelen 2000

puxar
nobind
reneg-sec 0
resolv-retry infinito
verbo 3
persist-key
persist-tun
remoto-aleatório
mute-replay-warnings
atraso de rota 10

Desempenho do OpenVPN - Conclusão

Freqüentemente, ainda mais em ambientes de trabalho do que em casa, somos obrigados a usar tecnologia, dispositivos, software e outras ferramentas que normalmente não ofereceríamos suporte. Nesses casos, ainda temos a tarefa de fazer as coisas funcionarem, encontrar uma solução alternativa e consertar as coisas. Usar o OpenVPN em um Edgerouter parece muito com isso agora.

Meu próximo artigo deve ser os cinco principais roteadores domésticos e para pequenas empresas ; O que você acha? Eu ainda incluiria o Edgerouter 12, mas tenho pelo menos três outros em cima da minha cabeça que estou vendo a seguir. Por um lado, estou interessado no Firewalla Gold , mas por 2x o custo do ER-12, ele provavelmente não entrará na lista. Vamos discutir isso mais tarde, sim? Envie-me algumas sugestões para analisar também.

Tags: , ,

Baixe gratuitamente 101 Comandos Úteis do Linux (PDF).

Além disso, notificarei você quando novos artigos sobre Linux forem publicados. - Assine agora e receba meu PDF grátis .
(Média de 1 ou 2 e-mails por mês, enviados apenas às segundas-feiras.)

Com mais de 4 milhões de leitores , este blog apresenta artigos sobre administração de servidores Linux e desempenho de servidores Linux.

TÓPICOS POPULARES

administradores de sistemas , linux , desempenho , servidor , apm , segurança , debian , hospedagem , CentOS , php

ARTIGOS MAIS POPULARES

100 melhores soluções de monitoramento de servidor e APM

60 comandos e scripts de rede Linux

90 comandos do Linux usados ​​com freqüência

Melhores distros Linux para desktop

Guia para iniciantes de laboratório doméstico - Hardware

Compreendendo PHP memory_limit

“O servidor MySQL desapareceu” - Solução (ões)

iowait - Como isso afeta o desempenho do Linux?

Quase sempre adicione espaço de troca

Como copiar arquivos com segurança usando exemplos de SCP

ARTIGOS RECENTES

AppOptics da Solarwinds

© 2021 Hayden James. Política de privacidade , termos .Conecte-se: Twitter , Linkedin , Newsletter. > _

Por favor, aguarde!

Por favor aguarde... vai levar um segundo!