Perguntas Frequentes
Melhorando o desempenho e a taxa de transferência do OpenVPN
24 de março de 2021 por Hayden James , 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 .
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
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 compress
sem um algoritmo é o equivalente a comp-lzo no
desabilitar 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 cipher
opçã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-io
para 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 shaper
NÃ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-mtu
se 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-mtu
e 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: desempenho , segurança , administradores de sistemas
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.)
← BeagleV, Asahi Linux, JingPad A1 e mais | quinzenal # 5Com 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
- Melhorando o desempenho e a taxa de transferência do OpenVPN
- BeagleV, Asahi Linux, JingPad A1 e mais | quinzenal # 5
- 85% de todos os smartphones são movidos por Linux
- Desempenho do Raspberry Pi: adicione ZRAM e esses parâmetros de kernel
- Substituindo Cloudflare por CSF Firewall
- Verificação de compatibilidade e dicas de desempenho do PHP 8.
- Servir seu blog a partir de locais CDN de cache de página inteira
- Desempenho de PHP: núcleos de CPU adicionais vs núcleos de CPU mais rápidos
- Comando pstree no Linux com exemplos
- Qual distro alternativa CentOS você deve escolher?
© 2021 Hayden James. Política de privacidade , termos .Conecte-se: Twitter , Linkedin , Newsletter. > _