🙌

WSL2でresolv.confが消える問題の解決方法

2022/08/22に公開

やりたいこと

/etc/resolv.confでnameserverを8.8.8.8にしたい

発生する問題

WSL2/Ubuntu-20.04で/etc/wsl.confgenerateResolvConf = 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ファイルが削除されないように属性を変更する。

手順

  1. /etc/wsl.confにresolv.confを再生成しないように下記を記述
# /etc/wsl.conf
[network]
generateResolvConf = false
  1. /etc/resolv.confにnameserverを指定
# /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
  1. chattrコマンドで/etc/resolv.confが削除されないように属性を変更
$ sudo chattr +i /etc/resolv.conf
  1. 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