WSL - VPNに接続すると、DNSは機能しません。

WSL - VPNに接続すると、DNSは機能しません。

私は何年もWSL Bash / Ubuntuを使用してきましたが、何らかの理由で最近この問題が発生しました。
DNSは内部名と外部名を解決できません。初めてWSLを再インストールしたときは、1日間は機能すると思いましたが、再インストール後も機能しなくなりました。

Windows StoreでUbuntu 18.04を新規インストールします。

user@hostname:~$ cat /etc/resolv.conf
# This file was automatically generated by WSL. To stop automatic generation of this file, remove this line.
nameserver <DNS server from wi-fi NIC 1>
nameserver <DNS server from wi-fi NIC 2>
nameserver <DNS server from ethernet 2 (VPN) NIC 1>
search anyconnect.local

user@hostname:~$ ping google.com -c 1
ping: google.com: Name or service not known

user@hostname:~$ ping 8.8.8.8 -c 1
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=54 time=16.1 ms

--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 16.197/16.197/16.197/0.000 ms

user@hostname:~$ dig +short google.com
user@hostname:~$ dig +short @8.8.8.8 google.com
user@hostname:~$ 

修正後/etv/resolv.conf

user@hostname:~$ dig +short google.com

user@hostname:~$ cat /etc/resolv.conf
search <internal-domain>.local
search anyconnect.local
nameserver <DNS server from wi-fi NIC 1>
nameserver <DNS server from wi-fi NIC 2>
nameserver <DNS server from ethernet 2 (VPN) NIC 1>
nameserver <DNS server from ethernet 2 (VPN) NIC 2>
nameserver 8.8.8.8
nameserver 8.8.4.4

user@hostname:~$ ls -la /etc/resolv.conf
-rw-r--r-- 1 root root 167 May 28 09:18 /etc/resolv.conf

user@hostname:~$ ping google.com -c 1
ping: google.com: Name or service not known

user@hostname:~$ ping 8.8.8.8 -c 1
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=54 time=17.0 ms

--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 17.045/17.045/17.045/0.000 ms

# disconnected VPN

user@hostname:~$ dig +short google.com
172.217.21.142

user@hostname:~$ ping google.com -c 1
PING google.com (172.217.21.142) 56(84) bytes of data.
64 bytes from arn11s02-in-f14.1e100.net (172.217.21.142): icmp_seq=1 ttl=53 time=17.4 ms

--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 17.445/17.445/17.445/0.000 ms

user@hostname:~$ dig +short google.com
172.217.21.142

# connected VPN

user@hostname:~$ dig +short google.com

user@hostname:~$ ping google.com -c 1
ping: google.com: Name or service not known
user@hostname:~$ 

ご覧のとおり、VPN の接続を解除すると、名前解決は完全に機能します。しかし、会社のリソースへの接続が必要なため、一日中VPNに接続していました。

WSL では内部 DNS に依存しません。理想的には内部DNSも機能するはずですが、機能するには外部DNSが必要です。

DNSはローカルで期待どおりに機能します。 VPNネットワークカードではDNSサーバーにpingを送信できますが、Wi-Fiネットワークカードではpingできません。 WSLを再インストールし、Googleのネームサーバーも試してみました/etc/resolv.conf。 DNSが必要なため、WSLはまだ更新されていませんapt

Windows 10バージョン1909
Ubuntu 18.04(Windowsストア)
Cisco AnyConnect VPN(「接続時にローカルLANへのアクセスを許可する」を確認)

誰にもアイデアがありますか?どこから始めますか?

ベストアンサー1

解決する。

VPNをオンまたはオフにすると、Ubuntuサブシステム(WSL)は会社と会社以外のドメインを確認できません。

安定した。

/etc/wsl.conf ファイルを生成し、再起動時に resolv.conf ファイルの自動生成を終了するエントリを追加する必要があります。 /etc/wsl.conf にコードブロックを追加します。

[network] 

generateResolvConf = false

次に、管理者としてpowershellを開き、コマンドを実行してUbuntuサブシステムを再起動します。

wsl --shutdown

次に、Ubuntuサブシステムを再度開きます。

次のコマンドを順番に使用します。

cd /etc
ls

ディレクトリには「resolv.conf」ファイルを表示する必要があります(シンボリックリンク)。リンクが赤で表示され、どこにも接続されていないことを示します。 resolv.conf リンクを削除し、新しい /etc/resolv.conf ファイルを作成します。

新しい resolv.conf ファイルから次のコードブロックを作成します。

search    your.domain.com
nameserver    x.x.x.x
nameserver    x.x.x.x
nameserver    y.y.y.y

ここで、X は Cisco Anyconnect VPN アダプタに設定された DNS アドレスです。ネットワーク設定でCisco VPNアダプタを見つけて、Cisco VPNアダプタを右クリックして[プロパティ]をクリックします。次に、IPv4を強調表示し、[プロパティ]をクリックします。次に、プライマリDNSと代替DNSを記録し、resolv.confファイルにコピーします。

Y は汎用 IPv4 DNS アドレスです。

次に、Powershell でサブシステムを再起動します。注:これが機能しない場合は、resolv.confファイルがサブシステムによって再度削除されたことを意味します。これが機能するためには、システムはwsl.confファイルを読み取る必要があります。読まない場合は、サブシステムを再インストールするか、20.04にアップグレードしてみてください。

おすすめ記事