はじめに
VPN接続した際に、指定した宛先だけVPNへ通信させ、その他の通信はVPNを経由せず、直接インターネット接続ができるようにする”スプリットトンネル設定”を、PowerShellで設定する方法を紹介します。
すべての通信がVPNを経由してしまうことで、VPN接続先のインターネット回線に通信が集中してしまい帯域を圧迫してしまうなど問題があるときに、この設定を行うことで通信を分散させることができます。
この設定は、VPNを接続するWindows10のPCごとに設定を行います。
現在のVPN設定の確認
現在設定されているVPN設定を表示します。(コマンドの結果は例です)
- 既にVPNの接続設定がされている前提です。スプリットトンネルを有効にするには先にVPN接続設定が完了している必要があります。
- Nameは、VPN名でスプリットトンネルの設定時に使用します。
- SplitTunnelingが、スプリットトンネルの設定が有効(True)、無効(False)の値です。
PS> get-vpnconnection
Name : VPN名
ServerAddress : **********
AllUserConnection : False
Guid : {CFEF7B63-0CF0-4753-B42D-38A3A084C477}
TunnelType : L2tp
AuthenticationMethod : {MsChapv2}
EncryptionLevel : Optional
L2tpIPsecAuth : Psk
UseWinlogonCredential : False
EapConfigXmlStream :
ConnectionStatus : Disconnected
RememberCredential : True
SplitTunneling : False
DnsSuffix :
IdleDisconnectSeconds : 0
スプリットトンネルの有効化
VPN名を指定してスプリットトンネルを有効にします。
- "VPN"は現在設定されているVPN名に合わせて変更してください
PS> set-vpnconnection -Name "VPN" -SplitTunneling $true
VPNを経由する通信を指定する
VPN経由で通信したい宛先をしています。
- ここではプライベートアドレス「10.0.0.0/8、172.16.0.0/12、192.168.0.0/16」はVPN経由となる設定を例とします。
- "VPN"は現在設定されているVPN名に合わせて変更してください
PS> Add-VpnConnectionRoute "VPN" -DestinationPrefix "10.0.0.0/8" -PassThru
PS> Add-VpnConnectionRoute "VPN" -DestinationPrefix "172.16.0.0/12" -PassThru
PS> Add-VpnConnectionRoute "VPN" -DestinationPrefix "192.168.0.0/16" -PassThru
VPNスプリットトンネルの無効化、経路の削除
もし、スプリットトンネルの無効化、通信系を設定を削除したい場合は、以下のコマンドで削除できます
- "VPN"は現在設定されているVPN名に合わせて変更してください
PS> #スプリットトンネルの無効化
PS> set-vpnconnection -Name "VPN" -SplitTunneling $false
PS> #経路削除
PS> Remove-VpnConnectionRoute "VPN" -DestinationPrefix "10.0.0.0/8" -PassThru
PS> Remove-VpnConnectionRoute "VPN" -DestinationPrefix "172.16.0.0/12" -PassThru
PS> Remove-VpnConnectionRoute "VPN" -DestinationPrefix "192.168.0.0/16" -PassThru