「2404:1a8::/32」IPv6ネットワークセグメントには、NTT東の「サービス情報サイト」サーバー「http://flets-east.jp/」が存在する。インターネットから接続出来ない。VPN接続時にsplit tunnelingするようにsubnetを設定していた。
アップデート後「OpenWrt化WZR-HP-G300NHのアップデート(V21.02.3) その後#2」で/etc/ipsec.confの「leftsubnet=192.168.0.0/20,2409:10:XXXX:YY00::/56,2404:1a8::/32」だと起動しないが「leftsubnet=192.168.0.0/20,2409:10:XXXX:YY00::/56」で起動する」と記載したが、起動するがVPN接続出来ない状態。何故起動せず、何故起動できるようになったか不明(誤認識?)。。。。
(1)詳細な不具合状態
/etc/ipsec.conf
# ipsec.conf - strongSwan IPsec configuration file
# basic configuration
config setup
# Add connections here.
conn %default
keyexchange=ikev2
ike=aes256-sha256-modp1024
esp=aes256
auto=add
left=%any
leftauth=pubkey
leftsubnet=192.168.0.0/20,2409:10:XXXX:YY00::/56,2404:1a8::/32
leftsendcert=always
leftcert=srv-pub.pem
leftid=@vpn.v6.AAAAAAAA.mydns.jp
right=%any
rightsourceip=192.168.13.0/24,2409:10:XXXX:YY20::13:0/120
rightdns=192.168.12.1,2409:10:XXXX:YY20::12:1
conn eap-id-passwd
rightauth=eap-mschapv2
eap_identity=%any
接続結果
Status of IKE charon daemon (strongSwan 5.9.2, Linux 5.4.188, mips)
leftsubnet=192.168.0.0/20,2409:10:XXXX:YY00::/56,2404:1a8::/32
leftsubnet=192.168.0.0/20,2404:1a8::/32
macOS Mojave(10.14.6)およびWindows10(21H2 19044.1889)共に接続出来ず
leftsubnet=192.168.0.0/20,2409:10:XXXX:YY00::/56,2404:1a8:ff43::/48
macOS Mojave(10.14.6)およびWindows10(21H2 19044.1889)共に接続出来ず
leftsubnet=192.168.0.0/20,2409:10:XXXX:YY00::/56
leftsubnet=192.168.0.0/20,2409:10:XXXX:YY20::/60
macOS Mojave(10.14.6)およびWindows10(21H2 19044.1889)共に接続
leftsubnet=192.168.0.0/20,2409:10:XXXX:YY40::/60
macOS Mojave(10.14.6)およびWindows10(21H2 19044.1889)共に接続出来ず
leftsubnet=0.0.0.0/0,::/0
macOS Mojave(10.14.6)およびWindows10(21H2 19044.1889)共に接続
(2)接続出来ない時のログ
Wed Aug 24 14:16:39 2022 daemon.info : 14[KNL] error installing route with policy 2404:1a8::/32 === 2409:10:XXXX:YY20::13:1/128 out
Wed Aug 24 14:16:39 2022 daemon.info : 14[IKE] unable to install IPsec policies (SPD) in kernel
Wed Aug 24 14:16:39 2022 daemon.info : 14[IKE] failed to establish CHILD_SA, keeping IKE_SA
Wed Aug 24 14:16:39 2022 daemon.info : 14[ENC] generating IKE_AUTH response 5 [ AUTH CPRP(ADDR ADDR6 DOMAIN DOMAIN DNS DNS6) N(AUTH_LFT) N(MOBIKE_SUP) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_6_ADDR) N(TS_UNACCEPT) ]
(3)Debian10サーバのstrongswan
Status of IKE charon daemon (strongSwan 5.7.2, Linux 4.19.0-20-amd64, x86_64)
leftsubnet=192.168.0.0/20,2409:10:XXXX:YY00::/56,2404:1a8::/32
debian10とopenwrtでplugin moduleの差(非強調文字は共通)
$ ssh root@debian10.matsuura ipsec statusall | grep 'Status of IKE'
Status of IKE charon daemon (strongSwan 5.7.2, Linux 4.19.0-20-amd64, x86_64):
$ ssh root@debian10.familyname ipsec statusall | grep 'loaded plugins'
loaded plugins: charon aesni aes rc2 sha2 sha1 md5 mgf1 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp agent xcbc hmac gcm attr kernel-netlink resolve socket-default connmark farp stroke updown eap-identity eap-aka eap-md5 eap-gtc eap-mschapv2 eap-radius eap-tls eap-ttls eap-tnc xauth-generic xauth-eap xauth-pam tnc-tnccs dhcp lookip error-notify certexpire led addrblock unity counters
$ ssh root@openwrt.matsuura ipsec statusall | grep 'Status of IKE'
Status of IKE charon daemon (strongSwan 5.9.2, Linux 5.4.188, mips):
$ ssh root@openwrt.familyname ipsec statusall | grep 'loaded plugins'
loaded plugins: charon test-vectors ldap pkcs11 aes des blowfish rc2 sha2 sha1 md4 md5 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl gcrypt af-alg fips-prf gmp curve25519 agent xcbc cmac hmac ctr ccm gcm curl mysql sqlite attr kernel-libipsec kernel-netlink resolve socket-default connmark forecast farp stroke vici smp updown eap-identity eap-md5 eap-mschapv2 eap-radius eap-tls xauth-generic xauth-eap dhcp whitelist led duplicheck addrblock unity
(4)原因を探る
「OpenWrt化WZR-HP-G300NHのアップデート(V21.02.3) その後#2」でトラブルシューティングに従い「strongswan-mod-kernel-libipsec」「mod-tun」をインストールした。「kernel-libipsec Plugin」によれば、「the OS kernel’s IPsec stack」が機能しない時の代替え策で標準では無いと記載。OpenWrt 19.07.04までは標準のstrongswanで動作していた。
「[strongSwan] 02[KNL] error installing route with policy after upgrading strongswan 5.1.3->5.3.5」によれば「kernel-libipsec Plugin」を使う事による事象が推察される。「Route-based VPN」によれば、全てのトラフィックをVPN経由にすれば、対象のパケットをVPN経由で通信出来るが、Split tunnelingにならない。
Linuxのカーネルが4.14 -> 5.4となった事が原因と推測できる。
OpenWrtの19.07.10に戻してみようとパッケージを探したが
パッケージが見つからず、確認できない。
(5)対策
firmware versionを戻せないので、全てのパケットをVPN経由にする事で対応する。
leftsubnet=0.0.0.0/0,::/0
split tunnelingにならないが、VPN先(自宅環境)からインターネット接続されるので問題は無い。
「OpenWrt化WZR-HP-G300NHのアップデート(V21.02.3)」
「OpenWrt化WZR-HP-G300NHのアップデート(V21.02.3) その後#1」
「OpenWrt化WZR-HP-G300NHのアップデート(V21.02.3) その後#2」