TL;DR
- 名前解決ができない →
/etc/resolv.conf
を変更し再起動。or/etc/wsl.conf
でgenerateResolvConf = true
を設定し再起動。 -
/etc/resolv.conf
などが変更できない →sudo vim
で編集する。 - ファイルが
imutable
になっている場合 →sudo chattr -i /etc/resolv.conf
で解除できる
はじめに
家から出て図書館で、git clone
しようとすると、失敗。
もしかして、と思ってsudo apt update
してみると、IGN
がたくさん出て進行度は0%のまま。
名前解決ができていないのでは?と思い、/etc/resolv.conf
を見てみると、nameserver 8.8.8.8
でうまくいっていそう。
ここを見ると、
power shell で
$ ipconfig /all
として、ホストのwindows がネットワークに接続している接続のDNSサーバのIPアドレスを調べます。それを、resolv.conf に追加しました。
とあるので、/etc/resolv.conf
にホストのDNSサーバのIPアドレスを追加してみることにした。
ここで詰まる
/etc/resolv.conf
を編集しようとすると、Permission denied
が出る。
sudo vim
での編集を試みたり、sudo echo "nameserver ***.***.***.***" >> /etc/resolv.conf
を試みたりするも、Permission denied
が出てしまう。
ここを参考に、sudo chmod 744 /etc/resolv.conf
を試みるも、そもそもchmod
実行時点でPermission denied
してしまう。
Permission の勉強をする
ここを読んだ。
ls -l /etc/resolv.conf
でパーミッションを確認すると、-rw-r--r--
となっていて、変更できそうである。
/etc/resolv.conf
にimutable
がついていた
ここに倣い、lsattr /etc/resolvconf.conf
を実行すると、i
がついていた。
/etc/resolv.conf
が変更できないモードになっているらしい。
解決
sudo chattr -i /etc/resolv.conf
でi
を外す。
結局
/etc/wsl.conf
にgenerateResolvConf = true
を追加して、再起動すると、/etc/resolv.conf
が自動的に生成されて、nameserver
も正しいものが指定された。
まとめ
以前、名前解決エラーで悩んでよくわからずにgenerateResolvConf = false
を設定してしまっていたことが敗因。
パーミッションの勉強、chattr
の勉強ができてよかった。