0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cisco AnyConnectでVPN接続するとwsl2がsshで外部サーバーにつながらない問題の解決策(Windows)

Last updated at Posted at 2024-04-13

問題・エラー

Cisco AnyConnectでVPN接続して、Windowsでwsl2からsshで外部サーバーにアクセスすると
Temporary failure in name resolutionなどと、名前解決エラーが出てアクセスできない問題

解決策 (ここではwsl2はUbuntuを例とする)

VPN接続した状態で操作1と2をPower shellで(管理者として)実行する

[操作1] Cisco Anyconectの優先度を6000に変更

→値を十分に大きく(6000)にすることで、接続の優先度を落とす

Windows Power Shell (管理者権限つき)
Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Set-NetIPInterface -InterfaceMetric 6000

[操作2] resov.confに、DNSアドレスを書き込む

Windows Power Shell (管理者権限つき) (Ubuntuの場合)
Get-DnsClientServerAddress -AddressFamily ipv4 | Select-Object -ExpandProperty ServerAddresses | % { "nameserver " + $_ } | wsl -d Ubuntu --user root -- tee /etc/resolv.conf

※Ubuntu 22.04.3 LTSの場合は[操作2]を、以下に変えて実行する

(つまり、wsl -d と --userの間を、使用するwsl2のものに適宜変更すればよい。)

Windows Power Shell (管理者権限つき) (Ubuntu 22.04.3 LTSの場合)
Get-DnsClientServerAddress -AddressFamily ipv4 | Select-Object -ExpandProperty ServerAddresses | % { "nameserver " + $_ } | wsl -d Ubuntu-22.04 --user root -- tee /etc/resolv.conf

問題の原因 (詳細は、参考文献[3]を参照)

外部サーバーにアクセスする際、wsl2がホストに接続先外部サーバーのIPアドレスの問い合わせを行うが、
Cisco AnyConnectが、ホスト→wsl2方向の経路を断ってしまうため、
問い合わせの返信がwsl2に届かず、wsl2側が名前解決(Name resolution)できなくなり、
その結果、名前解決エラー(Temporary failure in name resolution)が発生しているらしい。

本解決策の位置づけ&他のアプローチ

主なアプローチは2つ。

1. 手軽なアプローチ(ただし、接続先を複数切り替えたい場合は破綻する、暫定的対応)

wsl2側がIPアドレスをあらかじめ参照できるようにresolv.confに格納し (→本手法[操作2])、
かつ、
VPN側に接続が行かないように、Cisco AnyConnect側のインターフェースメトリックス値を6000にすることで、接続優先度を下げる (→本手法[操作1])

なお、本記事で紹介している方法は、参考文献[1]の方法とほぼ同じであるが、
より動きやすいように修正及び補足説明を加えたものである。

2.少し複雑なアプローチ(接続先を複数切り替えたい場合でも対応できる、恒久的対応)

wsl-vpnkitを導入することで、wsl2側がホストとやり取りできる道を構築する
→基本的には参考文献[2]のサイト参照

ただし、ゲストOS側の2の2行目のコマンド:

wsl2(Ubuntuなど)側
sudo cp ./wsl-vpnkit.service /etc/systemd/system/

の部分は、

wsl2(Ubuntuなど)側
sudo cp /etc/systemd/system/wsl-vpnkit.service .

に変更する必要がある(でないと私の環境では動かなかった。)

本記事では1のアプローチを詳細に取り上げたが、
接続先サーバーが複数ある場合などは、複雑ではあるものの、
基本的には2(wsl-vpnkitを用いる方法)のアプローチをとることを推奨する。

参考文献(2024年4月13日時点、すべて閲覧可能)

[1. 本手法の元] https://zenn.dev/dozo/articles/21630720e6476b
[2. 少し複雑な別のアプローチ] https://zenn.dev/xeres/articles/2023-10-05-install-wsl-vpnkit
[3. 問題の原因の詳細説明など] https://aquasoftware.net/blog/?p=1472

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?