🔥

WindowsでVPN接続時に特定の通信のみをVPN経由で通信させる

2025/02/16に公開

はじめに

リモートIT技術者としてVPN接続しながら作業するということは割とよくあることだと思います。しかしながら、VPN接続すると外界と遮断されてしまいブラウザベースで動作するアプリが利用できなかったりする不便さが発生することが多々あります。今回は特定の通信のみVPNを経由するスプリットトンネルの設定について説明します。

VPN設定の確認

PowerShellを起動し、以下のコマンドを入力してVPN接続設定を確認します

PS > get-vpnconnection


Name                  : {VPNの名前}
ServerAddress         : ***.***.***.***
AllUserConnection     : False
Guid                  : {*******-****-****-****-*******}
TunnelType            : L2tp
AuthenticationMethod  : {*******}
EncryptionLevel       : Optional
L2tpIPsecAuth         : ***
UseWinlogonCredential : False
EapConfigXmlStream    : ********
ConnectionStatus      : Disconnected
RememberCredential    : True
SplitTunneling        : False
DnsSuffix             : *********
IdleDisconnectSeconds : 0

スプリットトンネルを有効にする

PowerShellにて以下のコマンドを実行し、スプリットトンネルを有効にします

PS > set-vpnconnection -Name "VPNの名前" -SplitTunneling $true

VPNを経由する通信を指定する

VPN経由で通信したい宛先を登録します。ここでは、10.0.10.0/16の範囲はVPN経由で通信するものとします

PS > Add-VpnConnectionRoute "VPNの名前" -DestinationPrefix "10.0.10.0/16" -PassThru

接続確認する

該当VPNで接続後、指定したアドレスに対してはVPN経由で通信し、他の通信はVPNを経由していないことを確認します

登録経路の確認

以下のコマンドで登録済み経路を確認できます。

(Get-VpnConnection "surara-VPN").Routes

スプリットトンネルの削除

スプリットトンネルが不要になり、無効化したり、あて先を削除したい場合は以下のコマンドを実行してください。

# スプリットトンネル無効化
PS > set-vpnconnection -Name "VPN" -SplitTunneling $false
# 経路削除
PS > Remove-VpnConnectionRoute "VPN" -DestinationPrefix "10.0.10.0/16" -PassThru

Discussion