症状
- Ubuntu にて wget すると wget: unable to resolve host address なるエラーでネット通信できない
原因
- Ubuntu のデフォルト設定で /etc/resolv.conf が nameserver 172.22.176.1 になっているので、DNS名前解決できない
確認方法は以下。
cat /etc/resolv.conf
nameserver の数値は環境によって少し変わるが、普段のWindowsでのネット通信時に使用しているDNS(192.168.11.1 とか 8.8.8.8 とか)と異なっていると、Ubuntu ではネット通信できない。
対処法
Windows のターミナルから Ubuntu タブを開き、sudo su でログイン。
sudo su
/etc/wsl.conf を vi で開き、(無ければ新規作成)
vi /etc/wsl.conf
以下を記入して wsl.conf を保存。
[network] generateResolvConf = false
これで、Ubuntu側で resolv.conf を自動生成しなくなる。
次に、/etc/resolv.conf を rm で削除。
rm /etc/resolv.conf
/etc/resolv.conf.manually-configured を vi で新規作成し、
vi /etc/resolv.conf.manually-configured
DNSサーバー 8.8.8.8 を設定して、/etc/resolv.conf.manually-configured を保存。
nameserver 8.8.8.8
ln -s コマンドで /etc/resolv.conf.manually-configured を参照する /etc/resolv.conf という名前のシンボリックリンクを作成。
ln -s /etc/resolv.conf.manually-configured /etc/resolv.conf
これで、PC再起動しても resolv.conf が自動生成されない、かつ、resolv.conf 経由で resolv.conf.manually-configured を参照してくれるので、wget に成功する。
参考:/etc/resolv.conf を、DNS 設定を手動で設定するシンボリックリンクに置き換え
備考
- generateResolvConf = false にして /etc/resolv.conf を nameserver 8.8.8.8 にして保存するだけでは、PC再起動すると wget エラーが再発してしまう