私が解決できた限り、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
には存在しません。
上記で説明したプロセスは正しいです。これはis WSL2でDNS設定を変更する方法です。
私の間違いは、CloudFlare(1.1.1.1)とGoogle(8.8.8.8&8.8.4.4)の有名なパブリックDNSサーバーをテスト目的で使用することでした。ローカルネットワークがパブリックDNSの使用をブロックしていることがわかりました。
上記のプロセスを正しい内部DNSサーバーのIPアドレスでテストしたところ、すべてが正常に動作しました。