■ はじめに
WSLがらみのネットワークトラブルをメモ
本件で他に学べたこと
* PowerShell + Get-NetAdapter + Set-NetAdapter (InterfaceMetric) + Get-DnsClientServerAddress (-AddresesFamily) + Where-Object (-Match)
目次
【1】現象 【2】エラー内容 【3】原因 【4】解決案 0)準備:ローカル上のDNSサーバのIPアドレスを調べておく 1)「generateResolvConf = false」にする 2)/etc/resolv.confに、ホストOS側のDNSを追加 3)ホストOSのWindowsからWSLを再起動 4)動作確認
【1】現象
* kubectlのインストールをしようとした際に、以下「エラー内容」が表示 * WSL上のUbuntuでping をしても通らない * ただし、ローカル上のWindowsではネットワークに繋がる
【2】エラー内容
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" curl: (6) Could not resolve host: storage.googleapis.com
pingを実行した場合
$ ping yahoo.co.jp
ping: yahoo.co.jp: Temporary failure in name resolution
【3】原因
* WSL上のUbuntuで名前解決ができていないため * ただし、ネットによくある /etc/resolv.conf を GoogleのDNSサーバに向けるでは解決せず。 sudo vi /etc/resolv.conf ~~~~ nameserver 8.8.8.8 ~~~~
【4】解決案
0)準備:ローカル上のDNSサーバのIPアドレスを調べておく
* ローカル上のWindows側で「ipconfig /all」で DNSサーバのIPアドレスを調べておく ~~~ DNS サーバー . . . . . . . . . . . .: YYY.YYY.YYY.YYY DNS サーバー . . . . . . . . . . . .: XXX.XXX.XXX.XXX ~~~
1)「generateResolvConf = false」にする
* WSLでは、/etc/resolv.conf が毎回上書きされるので その動作をオフにする
/etc/wsl.conf
[network] generateResolvConf = false
2)/etc/resolv.confに、ホストOS側のDNSを追加
sudo vi /etc/resolv.conf ~~~~ nameserver XXX.XXX.XXX.XXX nameserver YYY.YYY.YYY.YYY ~~~~ # 削除不可にする sudo chattr +i /etc/resolv.conf # 元に戻す場合 # sudo chattr +i /etc/resolv.conf
補足:chattr
* ファイルの属性を変更する + i: 変更できなくする
https://xtech.nikkei.com/it/article/COLUMN/20140115/529923/
3)ホストOSのWindowsからWSLを再起動
wsl --shutdown
4)動作確認
ping yahoo.co.jp # 反応が返ってきたらOK ~~~ PING yahoo.co.jp (XXX.XXX.XXX.XXX) 56(84) bytes of data. 64 bytes from XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX): icmp_seq=1 ttl=50 time=15.0 ms ~~~
参考文献
https://qiita.com/kkato233/items/1fc71bde5a6d94f1b982
https://blog.jp.square-enix.com/iteng-blog/posts/00015-wsl-dns-custom/
関連記事
WSL2 ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/01/29/000000