SCPはSSHパイプを再現可能に切断します。

SCPはSSHパイプを再現可能に切断します。

を使用していくつかの証明書を自分のサーバーにコピーしようとしています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

最初のファイルはサーバーに書き込まれますが、ハッシュ合計が元のファイルと一致しないため、不完全です。

scpこれらのファイル(crtkeyおよび)を使用しようとするたびに、p12この現象が発生します。

Ubuntu 16.10(OpenSSH_7.3p1 Ubuntu-1, OpenSSL 1.0.2g 1 Mar 2016)とWindows 10()でWinSCP 5.9.4テストされました。ファイルをコピーすることもできません。

ターゲットサーバー(192.168.0.42)に到達するためにOpenVPNサーバーに接続されていることは言及する価値がありますが、これは問題ではありません。

パイプが壊れるのはなぜですか?ファイルをサーバーに正常にscpする方法は何ですか?

編集する:コメントで示唆したように、これはMTUに関連している可能性が高いです。しかし、この問題をどのように解決するのかわかりません。

答え1

OpenVPN接続のMTUを下げることは私にとって効果的でした。

OpenVPNマニュアルから:

--mssfix max OpenVPNがカプセル化された後にOpenVPNがピアに送信した結果、UDPパケットサイズが最大バイトを超えないように送信パケットサイズを制限する必要があることをトンネルで実行されているTCPセッションに通知します。デフォルト値は 1450 です。

maxパラメータは--link-mtuパラメータ、つまりカプセル化オーバーヘッドを追加した後のUDPパケットサイズと同じように解釈されますが、UDPヘッダ自体は除外されます。結果のパケットは、IPv4の場合は最大28バイト、IPv6の場合は最大48バイト(IPヘッダーの場合は最大20/40バイト、UDPヘッダーの場合は最大8バイト)増加します。デフォルト値1450を使用すると、IPレベルの断片化なしでMTU 1473以降のリンクを介してIPv4パケットを送信できます。

--mssfixオプションは、OpenVPN P2P通信にUDPプロトコル(つまり、-proto udp)を使用する場合にのみ意味があります。

--mssfix と --fragment は理想的に一緒に使用できます。ここで、--mssfixは最初にTCPがパケットの断片化を必要としないようにします。 。

--fragment と --mssfix はどちらも、OpenVPN ピア間のネットワークパスからの切断されたパス MTU 検索を解決するように設計されています。

このタイプの障害の一般的な症状は、OpenVPN接続が正常に開始されたがアクティブな使用中に停止することです。

--fragmentが--mssfixと一緒に使用される場合、--mssfixは--fragment maxオプションでデフォルトのmaxパラメータを使用します。

したがって、次のオプションを使用して最大UDPパケットサイズを1300に下げることができます(MTU関連の接続問題を解決するための最初の試み)。

--tun-mtu 1500 --ピース 1300 --mssfix

OpenVPN設定に以下を追加しました。

mssfix 1200

また、パフォーマンスを向上させるためにこの値を調整できるとします。

関連情報