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の勉強ができてよかった。