「
Add-VPNConnectionRoute list」でググったら、以下のページを見つけた。
- Microsoft / Docs /Q&A / 2022-07-07: list of Add-VpnConnectionRoute
Get-VPNConnection で得られた VPN に .routes を適用すると Add-VpnConnectionRoute した結果の一覧が得られるとのこと。
とりあえず、
Add-VPNConnectionRoute "VPN接続名" -DestinationPrefix "IPアドレス/ネットマスク長" -PassThru
とすると目的の VPN 接続に route が追加される。
-PassThru は結果の pass through なので、なくても良い。
設定されている routing の一覧は
Get-VPNConnection "VPN接続名" |% routes
で得られる他、
設定後に再接続を行うと、
route print
でも確認できる。
この設定は、例によって
- %APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk
の各セクションに格納されることで永続化されてて
NumRoutes=設定されているroute数
Routes=1route当たり16進72桁の設定値が128桁区切りで並ぶ
Routes=...
みたいになってた。
NumRoutes=0 の場合 Routes= の行は存在しない。
16進72桁で表される 36 byte (=576 bit) の routing データの内訳は先頭から
- RouteMetric : little endian 32bit
- AddressFamily: little endian 32bit (2 = IPv4, 0x17 = IPv6 ?)
- NetMask(length) : little endian 32bit
- IPAddress : (4 byte (IPv4) + 12byte (padding ?)) or (16 byte (IPv6))
- 不明 : 8 byte
だと思う。
例えば、
PS C:\Users\kou> Add-VpnConnectionRoute "HOME" -DestinationPrefix "18.3.4.5/32" -RouteMetric 4660 -PassThru
DestinationPrefix : 18.3.4.5/32
InterfaceIndex :
InterfaceAlias : HOME
AddressFamily : IPv4
NextHop : 0.0.0.0
Publish : 0
RouteMetric : 4660
PolicyStore :
PS C:\Users\kou> Add-VpnConnectionRoute "HOME" -DestinationPrefix "1234:5:6:7:8:9:a:b/128" -RouteMetric 4660 -PassThru
DestinationPrefix : 1234:5:6:7:8:9:a:b/128
InterfaceIndex :
InterfaceAlias : HOME
AddressFamily : IPv6
NextHop : ::
Publish : 0
RouteMetric : 4660
PolicyStore :
のように設定すると
NumRoutes=2
Routes=341200000200000020000000120304050000000000000000000000000000000000000000341200001700000080000000123400050006000700080009000A000B
Routes=0000000000000000
のような設定値となる。
NextHop がどこかに入りそうな気がするが、IPv6 だと末尾の 8byte じゃ足らないし、Add-VPNConnectionRoute にもそれらしいオプションがなさそうなので気のせいだろうか?
なお、デフォルトでは、VPN 設定(プロパティ)の「ネットワーク」タブで
- インターネット プロトコル バージョン 4 (TCP/IPv4)
- インターネット プロトコル バージョン 6 (TCP/IPv6)
共に、「詳細設定」の「IP設定」のタブで
- ☑ リモート ネットワークでデフォルト ゲートウェイを使う
にチェックが入っているため、全てのパケットが VPN を経由しようとするので、予めこの設定を OFF にしておく必要がある。