クライアントこんにちは後にカールが停止します。

クライアントこんにちは後にカールが停止します。

Ubuntuで次のコマンドを実行するとき:

 curl -v --insecure -XGET 'https://user:pass@IP_ADDR:PORT/SOME_FILE.php'

私は次のような結果を得ます。

* Hostname was NOT found in DNS cache
*   Trying IP_ADDR...
* Connected to IP_ADDR (IP_ADDR) port PORT (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):

数分後、私はこれを得ました:

* Unknown SSL protocol error in connection to IP_ADDR:PORT 
* Closing connection 0
curl: (35) Unknown SSL protocol error in connection to IP_ADDR:PORT 

CentOSで同じことを試しましたが、まだ停止しましたが、Client Hello最終的に次のような結果が得られました。

curl: (28) Operation timed out after 0 milliseconds with 0 out of 0 bytes received

原因が何であるか、解決策を知っている人はいますか?

答え1

誤って設定されたMTUのために同じ問題が発生しましたが、他の考えられる原因がたくさんあります。

重要なことは、エッジルータからのトラフィックをスニッフィングすることです。ここで、要求しているサーバー(GitHub.com)に送信されたICMPメッセージを表示できます。分裂。これにより、接続がめちゃくちゃになり、再送信、ACKの重複などが発生する可能性があります。

ここに画像の説明を入力してください。

ICMPパケットには、MTU of next hop奇妙な値1450を含むフィールドがあります。一般的な値は1500です。

ここに画像の説明を入力してください。

ルータを確認しましたが、インターフェイスの1つ(Ethernetトンネル)にその値がMTUとして含まれているため、ルータはすべてのインターフェイスのうち最小のMTUをネクストホップとして使用しました。このインターフェイスを削除すると(使用されていない)、SSHハンドシェイクが再び機能し始めました。

答え2

OpenVPNを介して2つのインフラストラクチャを接続するときにも同じ問題が発生しました。

Curlはhttps / httpでは機能しません。

Charlieのソリューションは私にとって効果的です。

私はこのリンクをクリックしました:https://www.sonassi.fr/help/troubleshooting/setting-Cordirect-mtu-for-openvpn

したがって、正しいMTUを見つけるには、次のコマンドを使用できます。

bryan@debian-dev11@ping -c 1 -M do -s 1472 10.0.0.5
PING 10.0.0.5 (10.0.0.5) 1472(1500) bytes of data.
1480 bytes from 10.0.0.5: icmp_seq=1 ttl=126 time=6.19 ms

ここで、1472はテストされたMTUです。

とMTUエラー応答

bryan@debian-dev11:~$ ping -c 1 -M do -s 1474 10.0.0.5
PING 10.0.0.5 (10.0.0.5) 1474(1502) bytes of data.
ping: local error: Message too long, mtu=1500

ターゲットサーバーのファイアウォールはicmp / echo要求を受け入れる必要があります。

私の特別なケースでは、2つのNATルールを順番に2つのルータの背後にあります。パケットが最終ホストに到達すると、最終ホストは元のIPではなくゲートウェイを超えて欠落している部分を要求します。したがって、要求は元のホストに到達できません。

答え3

私の考えでは、httpsをまったく使用できないサーバーでhttps:ポートを使用しようとしているようです。この場合、サーバーはまだHTTP要求の終了を待っていますが、クライアントはサーバーがSSLハンドシェイクを続行するのを待っています。ブラウザを使用して、httpsでまったく同じURLにアクセスできることを確認してください。

答え4

コメントするのに十分なポイントはありませんが、Charlieの答えは変装設定の問題を解決するのに役立ちました。しかし、私の場合は、ppp0接続が出ているため、デバイスを削除できません。

この場合、直接またはdhcpd構成を介して他のクライアントのMTUをppp0デバイス値(1492)に減らすのに役立ちました。この場合の症状は、電子メールを受信しようとしたときのTLSハンドシェイクの問題(一部のサーバーのみ)と他のクライアントのビデオストリーミングの問題です。

関連情報