Desempenho decepcionante do OpenVPN-server

4

No meu VPS (Ubuntu 14.04 - 64-bit), que possui o OpenVPN 2.3.2-server instalado, estou tendo um desempenho decepcionante. O servidor VPN usa a codificação AES-128-CBC para criptografia e não tenho firewall instalado.

O problema é que a velocidade de download / upload é baixa. Ao fazer alguns testes de velocidade, a média é de cerca de 45 Mbps. A velocidade real cairá para 20 Mbps e chegará a 50 Mbps. Ao fazer esses testes, a CPU e a carga do servidor parecem bastante baixas.

Eu tentei alterar o valor de tun-mtu no servidor e no cliente, usando diferentes cifras (blowfish etc.), aumentando o buffersize etc. Minha velocidade de download sem a conexão VPN é de 180 - 190 Mbps ( meu ISP promete 200 Mbps), meu upload é de 10 Mbps. Como você pode ver, a diferença é bastante drástica e eu gostaria de aumentar a velocidade de download o máximo possível.

Usando programas como a geração de entropia disponível, nenhum desempenho parece ser obtido. Minha entropia disponível está sempre em torno de 3000 com a atividade ativa, o que é suficiente?

O próprio servidor tem uma conexão de 1 Gbit. Um teste de download para o servidor confirma essa velocidade (em torno de 800+ Mbps). Também testei o download de um arquivo aleatório de 1 GB do servidor para um dos clientes VPN sem usar a conexão VPN, e isso me deu uma velocidade de download de 180 Mbps (meu máximo) em média.

Não consegui encontrar muita informação na internet sobre velocidades baixas / baixas de download com um servidor OpenVPN que estava ajudando. O que me preocupa é que a CPU e a carga do servidor são muito baixas (o uso da CPU é de cerca de 16% em apenas um núcleo (o OpenVPN não suporta multi / hyper-threading?) Durante testes de velocidade).

Se você quiser mais informações ou detalhes sobre minha configuração ou instalação, pergunte.

EDIT 2015-02-28:

Estou mais uma vez tentando usar um servidor OpenVPN com apenas três (3) clientes. Mais uma vez, estou enfrentando o problema em que a velocidade de download não atinge o máximo (nem mesmo a metade) da minha velocidade de conexão com a Internet nos clientes.

Eu testei a instalação do servidor OpenVPN na própria máquina host, e isso me deu bons resultados! Mas, eu preciso usar o servidor VPN em um VPS (máquina virtual) e não em uma máquina host. Ao fazer o download de um arquivo de 10 GB, posso chegar a 10 MB / s (800 Mb / s) e a uma média de 7,5 MB / s (60 Mb / s). Minha conexão de internet onde os clientes estão se conectando é uma conexão de 200 Mb / s. Ao fazer vários testes de velocidade sem uma conexão VPN, posso atingir uma média de 180 Mb / s. Ao conectar-se através do servidor VPN (no VPS!), As velocidades não chegam nem a metade da velocidade que eu deveria obter. Ao conectar-se através do servidor VPN (no HOST!), Posso alcançar até 120 Mb / s.

Ambos os servidores usam o mesmo uso de CPU ao executar os testes e ambos têm suporte a aeni na CPU. Eu fiz alguns testes de velocidade com o openssl, mas eles parecem muito bons e máx. os núcleos da CPU. Também executei o comando -n 1 cat / proc / sys / kernel / random / entropy_avail durante a execução desses testes, mas a entropia disponível não parece mudar muito ao executar um teste de download. Tanto no host quanto no VPS, é de 850 a 900.

Estou sem ideias a respeito do motivo pelo qual o (s) servidor (es) VPS diferem muito em velocidade do host. Poderia ser a interface de rede virtualizada do Qemu (qemu-kvm)?

    
por Qlii256 02.11.2015 / 21:47

2 respostas

4

Sempre que vejo alguém em um VPS, e eles mencionam problemas de criptografia ou desempenho de SSL, a primeira coisa que vem à mente é que eles estão executando o pool aleatório seco.

Tente instalar o "haveged" e veja se isso resolve o problema. Em caso afirmativo, leia atentamente a documentação e as advertências de uso de um gerador de números aleatórios pseduo e suas implicações de segurança.

EDITAR

Por que instalar o "haveged"? Qualquer operação de criptografia depende muito de números aleatórios de alta qualidade. Portanto, seu throughput será eventualmente limitado pela taxa na qual você pode gerá-los. Em um VPS, você pode não ter todas as fontes de entropia disponíveis que você usaria no bare metal. Isso pode esgotar o conjunto (tente cat /proc/sys/kernel/random/entropy_avail ), fazendo com que seu programa seja bloqueado enquanto mais aleatoriedade é ativada no pool. O Haveged usa o algoritmo HAVEGE, que, dependendo do seu caso de uso, pode ser menos seguro. Depende de você decidir que vale a pena os riscos que podem se aplicar à sua situação. :) O Haveged é um daemon que roda em segundo plano para manter o pool de entropia do kernel cheio e agitado. Nenhuma alteração no seu software deve ser necessária, a não ser talvez uma reinicialização do seu VPS (depende da sua configuração).

    
por 02.11.2015 / 22:22
0

OpenVPN over UDP

Se você estiver executando o OpenVPN em UDP, poderá obter uma experiência melhor definindo valores de buffer fixos. Tente estas linhas em seu arquivo de configuração do cliente (* .ovpn ou * .conf).

sndbuf 393216
rcvbuf 393216
push "sndbuf 393216"
push "rcvbuf 393216"

link

    
por 08.11.2017 / 10:06

Tags