はじめに
あるときにWSLからのaptに失敗する事象が発生したため、復旧対応を行った際の記録となります。
本投稿は作業記録からchatGPT5で草案を生成し、投稿主が微修正をしたものとなります。
- WSL2上で
ping google.co.jp
は成功する - しかし
curl http://google.co.jp
やwget
、apt update
は応答せず固まる - Windows本体側からは問題なくHTTP/HTTPS通信できる
- WSLの再起動では改善せず
調査内容
Firewallの影響確認
目的:TCP/HTTP通信がWindows Defenderやセキュリティソフトにブロックされていないか切り分ける。
結果:無効化しても変化なし。
MTU調整
目的:パケットサイズ不一致や断片化によるTCP不通を切り分ける。
実施:
sudo ip link set dev eth0 mtu 1400
結果:変化なし。
IPv6無効化
目的:IPv6優先で接続しようとして失敗していないか確認する。
実施:
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
curl -4 http://google.co.jp
結果:変化なし。
vEthernet (WSL) の無効化/再有効化
目的:WSL2の仮想NICが不安定になっている可能性を切り分けるため、強制リセットを実施。
実施(PowerShell):
Disable-NetAdapter -Name "vEthernet (WSL (Hyper-V firewall))" -Confirm:$false
Enable-NetAdapter -Name "vEthernet (WSL (Hyper-V firewall))"
wsl --shutdown
結果:一時的には復旧したが、しばらくすると再発。根本解決には至らず。
その他(未実施)
- DNSをGoogle Public DNSへ変更
- Proxy環境変数の確認
- ルーティングテーブルやNICの状態確認
解決方法
最終的に以下のコマンドで完全に復旧。再発も解消した。
wsl --shutdown
netsh winsock reset
実行後、Windowsを再起動。
その後は curl
や wget
が正常に動作し、apt update
も問題なく実行可能となった。
まとめ
-
ping
が通るのにcurl/wget/apt
が固まる場合、Windows側のネットワークスタック異常が原因のことがある -
vEthernet (WSL)
の無効化/有効化は一時的効果のみ - 根治には
netsh winsock reset
→ 再起動 が有効
参考コマンド
# WSL側
ip link
ip route
ip -6 addr show
curl -v http://google.co.jp
# Windows側
Get-NetAdapter
Disable-NetAdapter -Name "vEthernet (WSL (Hyper-V firewall))" -Confirm:$false
Enable-NetAdapter -Name "vEthernet (WSL (Hyper-V firewall))"
netsh winsock reset