これは
- Windows11
- WSL2
- Ubuntu20.04LTS
それは
- ネットからのダウンロードが高頻度でタイムアウト
- npmを使えば
ETIMEDOUT
みたいに言われ、brewを使えばDownloading (curlを使ってそうな表示)で延々と待たされてtimeoutし、Spacemacsがelpaからダウンロードする時も無言で固まっている - たまに成功する (意味がわからない)
- たとえば
brew upgrade
で10パッケージ近くをダウンロードしてしまっている時、Ctrl+Cで遮断して再実行すると、1~3個ずつダウンロードが完了することがあるし、Spacemacsのパッケージダウンロードが(1/3)
で固まった時もSpacemacs自体を再起動すると(2/3)
へ進捗することがある - 低確率で成功するから「あっ待ち始めたな」と思ったら遮断・再実行……を10回くらい繰り返していればそのうち最後まで行ける
- 不思議なことにcurlを直接使ってタイムアウトした経験はない
- npmを使えば
- 色んなアプリが遭遇するのだからWSLのネットワークで何か起きてそうだけど途中の通信をどう引き抜けば良いのか全然わからない
- WiresharkでvEthernet (WSL)をキャプチャすると
TCP Port numbers refused
がドカドカ出てくるのでWindows側で何か弾いてるんじゃないかとは思うけど何もわからない - 443ポートがやたら嫌われている感じはした
- 何も考えずファイアウォールを無効化するなどしてみたけど特に効果を感じなかった
あれは
WSLの resolv.conf
自動生成機能を止めた上で、WSLのDNSサーバ指定を 8.8.8.8
(Googleに限らず外部のDNSサーバなら何でも良いのかもしれない)へ変える
/etc/wsl.conf
[network]
generateResolvConf = false
/etc/resolv.conf
nameserver 8.8.8.8
cf. https://github.com/microsoft/WSL/issues/7254#issuecomment-905767204
そんなんでええんか?
自動生成されるのがWindowsホスト機IPだったなら、知らんドメインをホストに聞きに行ってホストがデフォルトルートなり何なりでルータへ繋いでくれそうだから自然な流れだと思って手を付けていなかったけど
(自動生成されるのが何のIPかも覚えていないし いいや……)