wsl2(Ubuntu20.04)とCisco AnyConnectの組み合わせでインターネット接続をする
概要
会社のWindows10のバージョンが1909に上がったため、wsl2を入れられるようになった。
その際にインターネット接続に苦労したので、その設定方法を記載する。
(写経しているので、コマンドが間違っていたらごめんなさい)
問題となったのは2点で、
- resolv.confが社内のDNSサーバーが設定されていない。設定しても、起動の都度書き換えられてしまい、都度設定が必要。
- AnyConnectがルーティング情報を書き換えているので、社内のDNSサーバーに名前解決にいけない。また、プロキシサーバーにアクセスできない。
設定方法
resolv.confの設定
ubuntuの場合DNSの設定はresolv.confに記述する。resolv.confの書き換えを自動or手動かの設定はdpkg-reconfigure resolvconf
で設定できるようだが、wls2の場合はwsl.confに記載する必要がある。
sudo vi /etc/wsl.conf
次のとおり記載。
[network]
generateResolvConf = false
管理者権限でpowershellを立ち上げ、次のコマンドを実行してwslの再起動。
wsl --shutdown
サイドwslのシェルを起動すると自動的にwslが再起動するので、次のファイルを編集。ただし、事前にシンボリックリンクになっているか確認し、シンボリックリンクの場合は上記設定に失敗しているので設定内容を見直すこと。
ls -l /etc/resolv.conf
sudo vi /etc/resolv.conf
ここは個別の設定を記載する。
nameserver X.X.X.X
search mydomain.local
ルーティングの設定
Githubのissueの内容でOK.ただし、AnyConnectに接続する前にwls2が起動していないと後述のスクリプトを実行してもうまくいかない。
-
%HOMEDRIVE%\%HOMEPATH%\scripts\UpdateAnyConnectInterfaceMetric.ps1
に次の内容を記載
Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Set-NetIPInterface -InterfaceMetric 6000
- タスクスケジューラを設定
具体的な設定方法はサイトの内容を転記します。
Open 'Task Scheduler'
Click "Create Task" on Right SidebarName: Update Anyconnect Adapter Interface Metric for WSL2
Set Security Options
Check box: 'Run with highest priveleges'
Select 'Triggers' TabClick 'New' at bottom of Window
Open 'Begin the task' drop-down
Select 'On an Event'
Configure Event:
Log: 'Microsoft-Windows-NetworkProfile/Operational'
Source: 'NetworkProfile'
Event ID: '10000'
Click 'OK'Select 'Actions' Tab
Click 'New'
Configure Action:
Action: 'Start a Program'
Program/script: 'Powershell.exe'
Add arguments: '-ExecutionPolicy Bypass -File %HOMEDRIVE%%HOMEPATH%\scripts\UpdateAnyConnectInterfaceMetric.>ps1'
Click 'OK'Select 'Conditions' Tab
Uncheck box:
Power -> Start the task only if the computer is on AC Power
Click 'OK'
以上
Discussion