エンジニア日記
PR

Claude Codeで「Unable to connect to API (ECONNRESET)」が出た時の対処法:MTU設定を変更しよう

solte@8
記事内に商品プロモーションを含む場合があります

こんにちは、ポンコツエンジニアのソルテです。

今日はClaude code を利用して開発をしていた際に以下のようなエラーが出てしまいweb版の Claude 以外利用することができなくなってしまいました。

(プロンプトを送ってもエラーが出てコーディングをしてくれませんでした….TT)

Unable to connect to API (ECONNRESET)

今回は上記のようなエラーが出た際の解決方法を紹介いたします。

今回私はMacを利用しています。
他OSでは方法が異なるかもしれません。

NURO

結論

皆さんが知りたいのは解決方法だと思いますので、最初に解決方法から紹介します。

解決方法は「MTUのサイズを変更(MTUは1400に)しろ!」です。

変更方法は以下のコマンドを打ってください。

はい、これで解決しているはずです。

今すぐにClaudeに戻って開発を進めましょう。

これで解決していなかったら、あなたのエラーはMTUが問題でなかったということです。

原因の特定が進んだということで許してください。

上記の対応ではデフォルトの変更はできていないため、
再起動時などに再度コマンドを実行する必要があります。

現象の整理

今回の起きていた現象についてまとめます。

利用できていたClaude
  • Web版 Claude code:OK
  • アプリ版 Claude code:NG
  • CLI 版 Claude code:NG
エラーが起きていたネットワーク
  • テザリング:OK
  • 自宅Wi-Fi(5GHz):NG
  • 自宅Wi-Fi(2.4GHz):NG

上記のようにネットワークの種類によって Claude との通信ができているかどうかが変わっていました。

ECONNRESETの接続エラーの原因

今回のエラーの原因

通信経路の許容サイズ(MTU)に対して、
アプリが送ろうとしたデータがデカすぎて、ルーターなどで強制遮断されていた

正直MTUのエラーなんて初めてだったのでどうしてこういったMTUのエラーがClaudeで起きたのかまではわかりません。

調査方法

今同じClaudeの(ECONNRESET)接続エラー現象が起きている人は以下の調査をしてみてほしいです。

以下の調査をすることでMTUが原因なのかわかります。

上記のように1500バイトでの疎通ができなかった場合「送ったパケットに対して返事がない」状態です。

この状態になる可能性としては以下の2つがあります。

  • サイズが大きすぎてブロックされた
  • そもそもPing(ICMP)が禁止(無視される設定に)されている

次にバイト数を下げて通信ができるかを確認します。

もしこれで通信ができたのであればMTUが問題である可能性が高いです。

MTUの変更においてのセキュリティ懸念や影響について

  • 安全性
    • 通信を小さく分割して送るだけなのでセキュリティリスクはないです。
  • 速度
    • 通信を小さく分割して送るので効率が数%変わります。
      ですが、体感でわかるほどの差は基本ありません。

まとめ

今回のClaudeの(ECONNRESET)接続エラーの解決方法の結論としてMTUを1400に下げれば解決するという話をしました。

原因として、送るパケットの大きさが大きすぎることが原因だからMTUのサイズを上げた方がいいんじゃないかと思ったのですが、それはできないらしいです。

理由としてはインターネットの通信の標準が1500バイトなため、もしパソコンの方でMTUを変更したとしても通信をしていると勝手に1500に戻されてしまうみたいです。

今回このようなエラーが起こったことによって今まであまり考えなかったパケットサイズのことや、実際にMTUの設定を変更するなどをしてよりネットワークに少し詳しくなった今日この頃でした。

これからはこのような私のエンジニアの日常についても記事を執筆していこうと思いますので、ディズニーが好きでエンジニアの方はぜひブックマークして行ったください。

NURO
ABOUT ME
ソルテ
毎月ディズニーに行き、毎週1本は映画を見て、毎日コーヒーを飲む。 そんな多趣味な一般人の本当にオススメをするものを紹介するブログです。
記事URLをコピーしました