🌊
Cisco Annyconnect VPNでWSLから外部へアクセスできない問題を解決する方法
理由はさっぱりわからない
セキュリティ意識の高い会社で仕事をするとき、
貸与されたPCと会社のネットワークはVPNで接続することになると思うが、
Cisco Annyconnect というCiscoのツールでVPN接続すると、
WSLから外部のドメインにアクセスできなくなった。
通常
curl google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
VPN接続中
curl google.com
( ゚Д゚) ヘンジガナイ
ただの屍のようだ。
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
------------------- ↓ 本題はここから ↓-------------------
正直、理由は説明されてもさっぱりわからなかった。
ただ、動かす方法だけはわかったので記載だけしておく。
VPN接続
Cisco AnyConnect よりVPN接続をする
VPNネットワークインタフェースの優先度を下げる
VPNが使用しているネットワークインタフェースの優先度を下げる
InterfaceMetric
という値を 6000 に設定。
Powershellのアイコンを右クリックして管理者権限で実行する
(コマンド内部でgsudoを使うと事故るので注意)
powershell
Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Set-NetIPInterface -InterfaceMetric 6000
DNSアドレスをresolv.confに記述
DNSアドレスを /etc/resolv.conf
に転記する。
WSLインスタンス名を Ubuntu-22.04
とすると
powershell
Get-DnsClientServerAddress -AddressFamily ipv4 | Select-Object -ExpandProperty ServerAddresses | % { "nameserver " + $_ } | wsl -d Ubuntu-22.04 --user root -- tee /etc/resolv.conf
------------------- ↓ 後書きはここから ↓-------------------
以下のようなコマンドがあるが、
WSLからPowershellが起動できるかは微妙なのであまり使えない。
また、wsl.confをいじってresolv.confを固定化するのを薦めているのをよく見かけるが、
私的にはお勧めできない。
もし記述にミスがあったら復帰が不可能になる。
Discussion