- 公開日
- 最終更新日
VPN環境下でWSLを利用する
この記事を共有する
目次
はじめに
パーソル&サーバーワークスの横山です。
昨今VPNを利用してリモートで自社環境に接続する方が多くいらっしゃるかと思います。
パーソル&サーバーワークスの標準PCでも同様ですが、VPN環境下だとWSLを導入しても外部のNWに接続する事ができないため、利用する方法を記載します。
結論
WSL1を使おう
※WSL2でも環境によってはmirrored modeを利用すれば回避できるはず・・・ですがどうやら私の環境と相性が良くないようなので本記事では割愛させていただきます
WSLとは
WSL(Windows Subsystem for Linux)は、Windows上でLinux環境をそのまま動かせる仕組みです。
仮想マシンやデュアルブートなしで、UbuntuやAlmaLinuxなどのLinuxコマンドやツールを使えます。
開発やサーバー検証をWindows PC一台で完結できるのが大きなメリットです。
さらにVS Codeと連携することで、WSL上のコードをWindows側のエディタで快適に編集・デバッグしたり、ターミナルとして利用することもできます。
なぜWSLを使うのか?
AWSを利用した開発や運用では、CLI操作やシェルスクリプトなどLinux前提の作業が多く発生します。
WSLを使うことでAWS CLIや各種SDK、構成管理ツールを違和感なく利用できます。
仮想マシンより軽量で、VS Codeとも連携できるため日常的な開発効率も高まります。
また、CRLFとLF、SJISとUTF-8といったWindowsとLinuxの差分によるトラブルを避けられる点も大きな利点です。
加えて、個人的にLinux環境に慣れていることもあり、作業をスムーズに進められます。
WSL1とWSL2の比較
| 項目 | WSL1 | WSL2 |
|---|---|---|
| 基本方式 | Windowsカーネル上の互換レイヤー | 軽量VM上の実Linuxカーネル |
| Linuxカーネル | なし | あり |
| 起動方式 | Windowsプロセス | Hyper-V仮想マシン |
| Linux互換性 | △ 部分対応 | ◎ ほぼ完全 |
| ファイルシステム | NTFS直 | ext4(仮想ディスク) |
| ネットワーク構成 | Windowsと同一 | 仮想NICを作成 |
| Hyper-V必須 | ❌ | ⭕ |
簡易的な表ですが、見ていただければ分かる通り、WSL2は仮想マシン上の別OSであり、Windowsの裏にぶら下がってるNAT配下の別ネットワークのホストのような扱いです。
VPNの挙動としては、ルーティングテーブル/DNSを書き換えてセキュアに通信を行うことになりますが通信経路が異なることで、ルーティングテーブルが書き換えられない、Windows側までは通信届くけどWSL側まで来ない、DNSだけ引っ張れない等環境により色々な事象が発生します。
通常
アプリケーション → 物理NIC → VPN
WSL2
仮想NIC → Windows側仮想スイッチ → 物理NIC → VPN
設定手順
前提:WSLの利用が可能であること
①power shellを管理者権限で実行し、WSL1を利用できるようにする
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
②Windows再起動
③デフォルトのWSLをVersion1に固定する
wsl --set-default-version 1
④お好みのLinuxをインストール
※私はRedHat系が好きなのでAlmaLinux-10にしました、まあviでvim開けないのは好きじゃないのでエイリアス作りますが
wsl --install -d AlmaLinux-10
⑤wsl.confでDNS周りの自動生成を辞める
sudo vim /etc/wsl.conf
以下を追記します。
[network]
generateResolvConf = false
⑥resolv.confの修正
sudo vim /etc/resolv.conf
以下の内容に書き換えます。 ※CloudflareとGoogleDNSのパブリックDNSを指定しますがここはお好みでOKです。
nameserver 1.1.1.1
nameserver 8.8.8.8
⑦WSL再起動
wsl --shutdown
⑧疎通確認
WSLを再度開き
curl -k -I https://www.google.com
※以下OKの場合の出力
HTTP/2 200
content-type: text/html; charset=ISO-8859-1
content-security-policy-report-only: object-src 'none';base-uri 'self';script-src 'nonce-dl2WT00aAyngTtsrarRwUg' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp
accept-ch: Sec-CH-Prefers-Color-Scheme
p3p: CP="This is not a P3P policy! See g.co/p3phelp for more info."
date: Tue, 27 Jan 2026 03:05:18 GMT
server: gws
x-xss-protection: 0
x-frame-options: SAMEORIGIN
expires: Tue, 27 Jan 2026 03:05:18 GMT
cache-control: private
set-cookie: AEC=AaJma5uzQWY8DImq1UzMQI1QWMH8P8wuSSPoXmCT_pYygo5Vx3G5HAxoGys; expires=Sun, 26-Jul-2026 03:05:18 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax
set-cookie: NID=528=jfjK1z9SOYu0-Fa73OVet8jDhnI-MA36BuEV6avs0TDUoCLKxE3d_FETOTT26D9_yKFlHgBjpoJF_Qkez7LR7IWSkpS696gHeZIOnQRpOXBCjcAGD_-uyQk4j0IBxjKEWOt9mxCZUaZ4U81n6rpIns8rwyYgGVh20r2sAaxvgc-xPsyKbt2AkqM_955sTXJJFAD71g5TWUzV-qQqdWqnZLfCyntt0M4; expires=Wed, 29-Jul-2026 03:05:18 GMT; path=/; domain=.google.com; HttpOnly
set-cookie: __Secure-BUCKET=CMID; expires=Sun, 26-Jul-2026 03:05:18 GMT; path=/; domain=.google.com; Secure; HttpOnly
補足 WSLとVs Codeの連携
①VS Code 左下の ><(リモート接続アイコン)を押す
②検索バーに"WSL"と出てくるのでクリック
③左下が WSL: "OS名" みたいになればOK
まとめ
WSLが無いと仕事にならんので、全企業はLinuxマシンを別途支給するかWSL2をネイティブに使えることを前提としてほしい
この記事は私が書きました
横山 俊成
記事一覧こんにちは!サービスGの横山です。 オンプレ/クラウド問わずインフラエンジニアとしてキャリアを積んできました。 「面倒なことは自動化したい」という精神のもと、効率的なインフラ構築・運用を目指しています。 趣味は ゲームです。夢は会社でポケモンユナイトのチームを組んで企業リーグに出場し優勝すること 「どうすればもっと楽ができるか?」を常に考えながら、日々技術を磨いています! よろしくお願いします! 🚀