web-dev-qa-db-ja.com

WSL2のDNS設定を変更するにはどうすればよいですか?

私が解決できた限り、Windows 10でWSL2が使用するDNSサーバーを変更する公式のプロセスは以下のとおりです。 (WSL2はLinux用のWindowsサブシステムの新しいリリースで、軽量のVM)で実際のLinuxカーネルを実行します。)

ただし、このプロセスは私にとっては機能しません。結局、タイムアウトになり、アドレスを解決できないシステムになってしまいます。

何が悪いのですか?

これまでにまとめたプロセスは次のとおりです。

1。 /etc/resolv.confの生成をオフにする

Linuxプロンプト(Ubuntuを使用しています)を使用して、/ etc/wsl.confを次の内容で変更(または作成)します。

[network]
generateResolvConf = false

(どうやら、現在のリリースにはバグがあり、これらの行の末尾の空白が原因でつまづきます。)

2。 WSL2仮想マシンを再起動します

Linuxプロンプトをすべて終了し、次のPowershellコマンドを実行します

wsl --shutdown

3。カスタム/etc/resolv.confを作成します

新しいLinuxプロンプトを開き、cdして/etcに移動します

resolv.confが別のファイルにソフトリンクされている場合は、

rm resolv.conf

次の内容で新しいresolv.confを作成します

nameserver 1.1.1.1

4。 WSL2仮想マシンを再起動します

手順2と同じ

5。新しいLinuxプロンプトを開始します。

利益!

2020年3月18日更新

私の/etc/hostsファイルにはこれが含まれています:

# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateHosts = false
127.0.0.1       localhost
127.0.1.1       [redacted]  bearps-desktop

10.168.244.140  Host.docker.internal
10.168.244.140  gateway.docker.internal
127.0.0.1       kubernetes.docker.internal

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

ファイル/etc/switch.confは存在しません。

ツールresolvectlは私のパス上にありません。 /usr/bin/resolvectlには存在しません。

同様に、systemd-resolveは私のパス上にありません。 /usr/bin/systemd-resolveには存在しません。

3
Bevan

上記で説明したプロセスは正しいです。これはis WSL2でDNS設定を変更する方法です。

私の間違いは、CloudFlare(1.1.1.1)とGoogle(8.8.8.8&8.8.4.4)の有名なパブリックDNSサーバーをテスト目的で使用することでした。ローカルネットワークがパブリックDNSの使用をブロックしていることがわかりました。

上記のプロセスを正しい内部DNSサーバーのIPアドレスでテストしたところ、すべてが正常に動作しました。

1
Bevan