ENGINEER BLOG ENGINEER BLOG
  • 公開日
  • 最終更新日

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の横山です。 オンプレ/クラウド問わずインフラエンジニアとしてキャリアを積んできました。 「面倒なことは自動化したい」という精神のもと、効率的なインフラ構築・運用を目指しています。 趣味は ゲームです。夢は会社でポケモンユナイトのチームを組んで企業リーグに出場し優勝すること 「どうすればもっと楽ができるか?」を常に考えながら、日々技術を磨いています! よろしくお願いします! 🚀

横山 俊成

この記事を共有する

クラウドのご相談

CONTACT

クラウド導入や運用でお悩みの方は、お気軽にご相談ください。
専門家がサポートします。

サービス資料ダウンロード

DOWNLOAD

ビジネスをクラウドで加速させる準備はできていますか?
今すぐサービス資料をダウンロードして、詳細をご確認ください。