接続構成
Windows 11 端末から宛先の NAT 配下サーバにアクセスするため、IKEv2 を用いて同一の LAN セグメントに接続する。この時、Winsows 11 端末は NAPT ルータ配下で送信元 NAPT が行われる。
各パラメータは Windows 11 標準の VPN クライアントで利用・変更可能なものを使用する。
※証明書等は「【VyOS】SSTP を使用した SSL/TLS VPN リモートアクセス (User/Password 認証)」を参照。
IKE バージョン | IKEv2 |
暗号アルゴリズム(認証付き) | AES128-GCM |
鍵交換アルゴリズム | Diffie-Hellman Group 14 (MODP 2048) |
PRF (Pseudo-Random Function) | PRF_HMAC_SHA2_256 |
サーバ認証方式 (クライアントがサーバを認証) | RSA デジタル署名 (X.509証明書) |
クライアント認証方式 (サーバがクライアントを認証) | EAP-MSCHAP v2 |
キープアライブ (DPD) | Disabled |
NAT Traversal | NAT 環境下 |
ライフタイム | 28800 (8時間) |
MTU | 自動(Windows側で決定?) |
暗号アルゴリズム(認証付き) | AES128-GCM |
暗号プロトコル | ESP |
通信モード | Tunnel Mode |
PFS (鍵交換アルゴリズム) | 無効 |
ライフタイム | 3600 (1時間) |
払い出し IP 範囲 | 192.168.1.0/28 |
プライベートCA (認証局)
秘密鍵のフォーマット | PKCS#8 (OpenSSL 3 系の標準) |
サブジェクト DN | C=JP, CN=Ubuntu CA, O=Private Lab |
X.509 エンコーディング形式 | PEM (Base64) |
サーバ証明書
有効期限 | 約1年 (365日) |
RSA 暗号の鍵長 | 2,048bit (約617桁 log2 x 2048) |
秘密鍵のフォーマット | PKCS#8 (OpenSSL 3 系の標準) |
サブジェクト DN | CN=vyos.net.home ※対象に合わせて適切に変更 |
シリアル番号 | 自動生成 |
X.509 エンコーディング形式 | PEM (Base64) |
基本制約 | 重要【critical】 CA:FALSE |
鍵用途 | 重要【critical】 digitalSignature |
拡張鍵用途 | 重要【critical】 serverAuth |
サブジェクトの別名 (SAN) | 【DNS】vyos.net.home ※対象に合わせて適切に変更 |
IKEv2 暗号スイート | IKE:AES_GCM_16_128/PRF_HMAC_SHA2_256/MODP_2048 ※コマンドで変更 |
IKEv2 ライフタイム | 28800 (8時間) ※変更方法わからない |
ESP 暗号スイート | ESP:AES_GCM_16_128/NO_EXT_SEQ ※コマンドで変更 |
ESP ライフタイム | 3600 (1時間) ※変更方法わからない |
暗号化 | 必須 |
スプリットトンネル | 有効 |
Windows の VPN 設定
VPN 接続設定の作成
Window 11 からVPNの設定を行う。これはGUIから可能。コマンドの場合は以下。
※長いので「`」で改行して入力。
Add-VpnConnection -Name "vyos-01" `
>> -ServerAddress "vyos.net.home" `
>> -TunnelType "Ikev2" `
>> -Encryptionevel "Required" `
>> -SplitTunneling
次に暗号スイートの設定を行う。これはコマンドの設定が必須となる。
※長いので「`」で改行して入力。
Set-VpnConnectionIPsecConfiguration -ConnectionName "vyos-01" `
>> -EncryptionMethod GCMAES128 `
>> -IntegrityCheckMethod SHA256 `
>> -DHGroup Group14 -PfsGroup None `
>> -AuthenticationTransformConstants GCMAES128 `
>> -CipherTransformConstants GCMAES128
※リセットは以下
Set-VpnConnectionIPsecConfiguration -ConnectionName "vyos-01"
-RevertToDefault
設定値の確認
PS C:\Users\admin> Get-VpnConnection
Name : vyos-01
ServerAddress : vyos.net.home
AllUserConnection : False
Guid : {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
TunnelType : Ikev2
AuthenticationMethod : {Eap}
EncryptionLevel : Custom
L2tpIPsecAuth :
UseWinlogonCredential : False
EapConfigXmlStream : #document
ConnectionStatus : Disconnected
RememberCredential : True
SplitTunneling : True
DnsSuffix :
IdleDisconnectSeconds : 0
VyOS (1.5 系) の設定
証明書のインポート
作成したCA 証明書、サーバ証明書を VyOS にインポートする。
[edit]
# set pki ca private_ca certificate MII... (略)
# set pki certificate server_crt private key MII... (略)
# set pki certificate server_crt certificate MII... (略)
# commit
# run show pki
Certificate Authorities:
Name Subject Issuer CN Issued Expiry Private Key Parent
--------- ------------------------------- ----------- ------------------- ------------------- ------------- --------
private_ca C=JP,CN=Ubuntu CA,O=Private Lab C=JP 2024-10-25 15:19:37 2034-10-25 15:19:37 No N/A
Certificates:
Name Type Subject CN Issuer CN Issued Expiry Revoked Private Key CA Present
-------- ------ -------------------- ----------- ------------------- ------------------- --------- ------------- ---------------
server_crt Server CN=vyos.net.home C=JP 2024-11-24 11:18:32 2025-11-24 11:18:32 No Yes Yes (private_ca)
Certificate Revocation Lists:
CA Name Updated Revokes
--------- --------- ---------
Config (VyOS ver1.5系)
【enable-proxy-arp】を忘れると同セグメント間通信ができない事に注意。
※ESP 側のハッシュは何でも良い?(AES128GMAC 指定しても変化せず接続化)
interfaces {
ethernet eth0 {
address 10.0.0.250/24
}
ethernet eth1 {
address 192.168.1.254/24
ip {
enable-proxy-arp
}
}
}
nat {
source {
rule 100 {
outbound-interface name eth0
source {
address 192.168.1.0/24
}
translation {
address masquerade
}
}
}
}
pki {
ca private_ca {
certificate MII... (略)
}
certificate server_cert {
certificate MII... (略)
private {
key ****************
}
}
}
protocols {
static {
route 0.0.0.0/0 {
next-hop 10.0.0.254 {
interface eth0
}
}
}
}
vpn {
ipsec {
esp-group ikev2-esp {
pfs disable
proposal 10 {
encryption aes128gcm128
hash sha256 ← aes128gmac や未設定でも変わらず
}
}
ike-group ikev2-ike {
disable-mobike
key-exchange ikev2
proposal 10 {
dh-group 14
encryption aes128gcm128
hash sha256
}
}
interface eth0
remote-access {
connection vpn-01 {
authentication {
client-mode eap-mschapv2
local-id 10.0.0.250
local-users {
username user-01 {
password password123
}
}
x509 {
ca-certificate private_ca
certificate server_cert
}
}
esp-group ikev2-esp
ike-group ikev2-ike
local-address 10.0.0.250
pool ipv4-pool-01
}
pool ipv4-pool-01 {
prefix 192.168.1.0/28
}
}
}
}
VPN 接続確認
Windows 11 にプライベートCA の証明書を信頼できる証明書としてインポートする。
※詳細は「【VyOS】SSTP を使用した SSL/TLS VPN リモートアクセス (User/Password 認証)」を参照。
インポート後にWindows 11 から接続し、状態を確認する。
PS C:\Users\admin> Get-NetIPsecMainModeSA
Name : 1
LocalEndpoint : 192.168.100.1
RemoteEndpoint : 10.0.0.250
LocalFirstId.Identity :
LocalFirstId.ImpersonationType : None
LocalFirstId.AuthenticationMethod : EAP
LocalFirstId.Flags : None
RemoteFirstId.Identity : vyos.net.home
RemoteFirstId.ImpersonationType : None
RemoteFirstId.AuthenticationMethod : Certificate
RemoteFirstId.Flags : None
LocalSecondId.Identity :
LocalSecondId.ImpersonationType :
LocalSecondId.AuthenticationMethod :
LocalSecondId.Flags :
RemoteSecondId.Identity :
RemoteSecondId.ImpersonationType :
RemoteSecondId.AuthenticationMethod :
RemoteSecondId.Flags :
CipherAlgorithm : AESGCM128
HashAlgorithm : SHA256
GroupId : DH14
KeyModule : IkeV2
MaxQMSAs : 0
LifetimeSeconds : 28800
LocalUdpEncapsulationPort : 4500
RemoteUdpEncapsulationPort : 4500
ExtendedFilterId : 0
PS C:\Users\admin> Get-NetIPsecQuickModeSA
Name : 1
LocalEndpoint : 192.168.100.1
RemoteEndpoint : 10.0.0.250
TransportLayerFilterName : IKEv2 Client Quick mode IPsec tunnel policy
EncapsulationMode : Tunnel
Direction : Inbound
LocalPort :
RemotePort :
IpProtocol : 4
InterfaceAlias : Wi-Fi
RealIfProfileId : 0
LocalUdpEncapsulationPort : 4500
RemoteUdpEncapsulationPort : 4500
SPI : 2464408466
FirstTransformType : EspAuthAndCipher
FirstIntegrityAlgorithm : AESGMAC128
FirstCipherAlgorithm : AESGCM128
SecondSpi :
SecondTransformType : None
SecondIntegrityAlgorithm : None
SecondCipherAlgorithm : None
Flags : NoExplicitCredMatch, AllowNullTargetNameMatch, AssumeUdpContextOutbound
MmSaId : 1
PfsGroupId : None
PeerV4PrivateAddress : 0.0.0.0
QuickModeFilterid : 67853
LifetimeSeconds : 3600
LifetimeKilobytes : 250000
LifetimePackets : 2147483647
IdleDurationSeconds : 300
NdAllowClearTimeoutSeconds : 0
NapContext : 0
QmSaId : 3848172696
VirtualIfTunnelId : 1
TrafficSelectorId : 1
MmTargetName : vyos.net.home
EmTargetName :
ExplicitCredentials : 0
Name : 1
LocalEndpoint : 192.168.100.1
RemoteEndpoint : 10.0.0.250
TransportLayerFilterName : IKEv2 Client Quick mode IPsec tunnel policy
EncapsulationMode : Tunnel
Direction : Outbound
LocalPort :
RemotePort :
IpProtocol : 4
InterfaceAlias : Wi-Fi
RealIfProfileId : 0
LocalUdpEncapsulationPort : 4500
RemoteUdpEncapsulationPort : 4500
SPI : 3477435066
FirstTransformType : EspAuthAndCipher
FirstIntegrityAlgorithm : AESGMAC128
FirstCipherAlgorithm : AESGCM128
SecondSpi :
SecondTransformType : None
SecondIntegrityAlgorithm : None
SecondCipherAlgorithm : None
Flags : NoExplicitCredMatch, AllowNullTargetNameMatch, AssumeUdpContextOutbound
MmSaId : 1
PfsGroupId : None
PeerV4PrivateAddress : 0.0.0.0
QuickModeFilterid : 67853
LifetimeSeconds : 3600
LifetimeKilobytes : 250000
LifetimePackets : 2147483647
IdleDurationSeconds : 300
NdAllowClearTimeoutSeconds : 0
NapContext : 0
QmSaId : 3848172696
VirtualIfTunnelId : 1
TrafficSelectorId : 1
MmTargetName : vyos.net.home
EmTargetName :
ExplicitCredentials : 0
同様に、 VyOS 側で確認する。
$ show vpn ike sa
Peer ID / IP Local ID / IP
------------ -------------
10.0.0.251 192.168.100.1 10.0.0.250 10.0.0.250
State IKEVer Encrypt Hash D-H Group NAT-T A-Time L-Time
----- ------ ------- ---- --------- ----- ------ ------
up IKEv2 AES_GCM_16_128 n/a MODP_2048 no 31 28116
$ show vpn ipsec sa
Connection State Uptime Bytes In/Out Packets In/Out Remote address Remote ID Proposal
------------- ------- -------- -------------- ---------------- ---------------- ------------- --------------
vpn-01-client up 35s 2K/0B 29/0 10.0.0.251 192.168.100.1 AES_GCM_16_128
$ show vpn ipsec remote-access detail
ra-vpn-01: #17, ESTABLISHED, IKEv2, ea97eb1e370c46b9_i 0957e648b0afc4e2_r*
local '10.0.0.250' @ 10.0.0.250[4500]
remote '192.168.100.1' @ 10.0.0.251[14684] EAP: 'user-01' [192.168.1.1]
AES_GCM_16-128/PRF_HMAC_SHA2_256/MODP_2048
established 57s ago, rekeying in 28090s
vpn-01-client: #20, reqid 1, INSTALLED, TUNNEL-in-UDP, ESP:AES_GCM_16-128
installed 57s ago, rekeying in 2965s, expires in 3543s
in c3a27725, 3300 bytes, 30 packets, 21s ago
out 598724b6, 0 bytes, 0 packets
local 0.0.0.0/0 ::/0
remote 192.168.1.1/32
【参照URL】
Add-VpnConnection
Set-VpnConnectionIPsecConfiguration
IKEv2 IPSec road-warriors remote-access VPN
【図解/IPsec】IKEv1とIKEv2の違いと仕組み~シーケンス,フォーマット,isakmp,DH group,PFSについて~