🙌
WSL2でresolv.confが消える問題の解決方法
やりたいこと
/etc/resolv.conf
でnameserverを8.8.8.8にしたい
発生する問題
WSL2/Ubuntu-20.04で/etc/wsl.conf
にgenerateResolvConf = false
を指定した場合に、/etc/resolv.conf
が削除されてしまう。
$ cat /etc/resolv.conf
cat: /etc/resolv.conf: No such file or directory
/etc/wsl.conf
を削除すれば/etc/resolv.conf
は消えないが、resolv.confの中身がデフォルトになってしまう。
解決方法
chattrコマンドで/etc/resolv.conf
ファイルが削除されないように属性を変更する。
手順
-
/etc/wsl.conf
にresolv.confを再生成しないように下記を記述
# /etc/wsl.conf
[network]
generateResolvConf = false
-
/etc/resolv.conf
にnameserverを指定
# /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
- chattrコマンドで
/etc/resolv.conf
が削除されないように属性を変更
$ sudo chattr +i /etc/resolv.conf
- WSLを再起動して
/etc/resolv.conf
が設定どおりになっているかを確認
$ cat /etc/resolv.conf
# /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
さいごに
WSL環境で毎回resolv.confが削除されてしまい、何度もresolv.confを作り直してきました。
Qiitaや技術ブログではresolv.confの書き換え対策しか書かれておらず、解決策を探すのに時間がかかりました。
私と同じような問題で頭を悩ませているエンジニアの手助けになれば幸いです。
Discussion