【トラブル】【WSL】WSLで外部に繋げない

■ はじめに

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