
Estou tentando copiar alguns certificados para o meu servidor usando o arquivo scp
.
$ scp ./cert.* [email protected]:/tmp/
cert.crt 100% 2386 0.1KB/s 00:18
packet_write_wait: Connection to 192.168.0.42 port 22: Broken pipe
lost connection
O primeiro arquivo é gravado no servidor, mas não completamente, pois o hashsum não corresponde ao arquivo original.
Isso acontece toda vez que tento scp
esses arquivos ( crt
, key
e p12
).
Testado com Ubuntu 16.10 ( OpenSSH_7.3p1 Ubuntu-1, OpenSSL 1.0.2g 1 Mar 2016
) e com Windows 10 ( WinSCP 5.9.4
). Ambos falham ao copiar os arquivos.
Pode valer a pena mencionar que estou conectado a um servidor OpenVPN para alcançar o servidor de destino (192.168.0.42) - mas isso não deve ser um problema.
Por que o tubo quebra e como posso transferir os arquivos para o servidor com sucesso?
editar:Isso, conforme sugerido nos comentários, provavelmente tem a ver com o MTU - no entanto, ainda não tenho certeza de como corrigir esse problema.
Responder1
Reduzir o MTU da conexão OpenVPN funcionou para mim.
Do manual do OpenVPN:
--mssfix max Anuncia às sessões TCP em execução no túnel que elas devem limitar o tamanho dos pacotes de envio de forma que, após o OpenVPN encapsula-los, o tamanho do pacote UDP resultante que o OpenVPN envia ao seu par não exceda o máximo de bytes. O valor padrão é 1450.
O parâmetro max é interpretado da mesma maneira que o parâmetro --link-mtu, ou seja, o tamanho do pacote UDP após a sobrecarga de encapsulamento ter sido adicionada, mas não incluindo o próprio cabeçalho UDP. O pacote resultante seria no máximo 28 bytes maior para IPv4 e 48 bytes para IPv6 (20/40 bytes para cabeçalho IP e 8 bytes para cabeçalho UDP). O valor padrão de 1450 permite que pacotes IPv4 sejam transmitidos através de um link com MTU 1473 ou superior sem fragmentação de nível IP.
A opção --mssfix só faz sentido quando você está usando o protocolo UDP para comunicação ponto a ponto OpenVPN, ou seja, --proto udp.
--mssfix e --fragment podem ser usados idealmente juntos, onde --mssfix tentará evitar que o TCP precise de fragmentação de pacotes em primeiro lugar, e se pacotes grandes passarem de qualquer maneira (de protocolos diferentes do TCP), --fragment irá fragmentá-los internamente.
Tanto --fragment quanto --mssfix são projetados para solucionar casos em que a descoberta do Path MTU é interrompida no caminho da rede entre pares OpenVPN.
O sintoma usual de tal falha é uma conexão OpenVPN que inicia com sucesso, mas depois para durante o uso ativo.
Se --fragment e --mssfix forem usados juntos, --mssfix pegará seu parâmetro max padrão da opção --fragment max.
Portanto, pode-se diminuir o tamanho máximo do pacote UDP para 1300 (uma boa primeira tentativa para resolver problemas de conexão relacionados ao MTU) com as seguintes opções:
--tun-mtu 1500 --fragmento 1300 --mssfix
Eu adicionei o seguinte à configuração do OpenVPN:
mssfix 1200
Também presumo que esse valor possa ser ajustado para melhor desempenho.