Zenn Dev Brainy Software Articles Claudecode VPN MTU Connection Closed
Claude CodeがVPN接続中に「Connection closed mid-response」で切れる原因はMTUだった
- URL: https://zenn.dev/brainy_software/articles/claudecode-vpn-mtu-connection-closed
- 日付: 2026-06-24
- Tier: Tier 3
- 要旨: NordVPN 接続中に Claude Code で長い応答が「Connection closed mid-response」で途中切れする現象を診断。短いやり取りは通るのに大きなデータで止まるパターンから、Path MTU Discovery(PMTUD)ブラックホールが原因と特定。VPN プロトコルを NordLynx(WireGuard UDP ベース)から OpenVPN(TCP) に切り替えて解消。
詳細
Claude Code は Anthropic API と SSE(Server-Sent Events)ストリーミングで応答を受信。短い応答は問題なく、長い応答(コード生成・長文説明)だけ途中で切れるのは典型的なサイズ依存症状。MTU(Maximum Transmission Unit、1つのパケット最大サイズ)が疑わしい。NordLynx は WireGuard ベースで VPN トンネルの MTU が通常 1420〜1380。経路の途中に 1500 より小さい区間があると、PMTU 探索が機能しない場合にブラックホール(パケット無言ドロップ)が発生。診断は macOS の ping -D フラグで実施。payload サイズで指定し IP パケット総サイズ(payload + IPヘッダ 20 + ICMPヘッダ 8 = 28)で比較。実測では総サイズ 1400 は通るが 1448 で落ちる → 経路 MTU は約 1400。TCP の MSS(Maximum Segment Size)は両端が 1500 前提で決定されるが、経路に 1380 区間があると ICMP「Fragmentation Needed」通知が返って来ない場合、送信側は大きなパケットを何度も再送→タイムアウト。対処は VPN プロトコルを OpenVPN(TCP) に切り替え。TCP over TCP による二重再送制御で、分割・再送・順序制御が自動化される。付帯注意として、専用 IP 運用での出口 IP 変更リスク(プロトコル切替時に紐づけサーバが変わる)。