goo blog サービス終了のお知らせ 

rabbit51

it's since Nov.30 2005
May.29 2014, transferred from broach

StrongSwan IKEv2 VPN接続とINTERNAL_DNS_DOMAIN設定

2019-02-02 17:51:33 | WZR-HP-G300NH

「Buffalo OpenWrt化WZR-HP-G300NHでIKEv2 VPN over ぷららIPv6 IPoE接続」
が稼働した。iPhone(iOS 12.1.3)の構成ファイルで「Split DNS」が利用できる。

Windows10のIKEv2 VPN設定でも「PowerShell」から「VpnConnectionRoute」で「Split Tunneling」用経路設定が可能となり、「VpnConnectionTriggerDnsConfiguration」で「Split Dns」も利用できるようになった。

StrongSwanのIKEv2接続時の「Configuration Payload」で「INTERNAL_DNS_DOMAIN」を設定する事でiOS VPN設定アプリからも「Split DNS」 が利用できるようになった。
この設定値がWindows10のIKEv2 VPN設定に有効かどうか確認してみた。

StrongSwan設定
---=== /etc/ipsec.conf ===---
conn %default
	keyexchange=ikev2
	ike=aes256-sha256-modp1024
	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-pass
	rightauth=eap-mschapv2
	eap_identity=%any

conn pubcert-user10
	rightauth=pubkey
	rightid=someone@white.plala.or.jp

conn eap-tls-user100
	rightauth=eap-tls
	eap_identity=%any
	rightid="C=JP, ST=TOKYO, O=FAMILYNAME, OU=FAMILY, CN=Firstname LASTNAME"

------------------------
---=== /etc/ipsec.secrets ===---
: RSA srv-key.pem "秘密鍵暗号化パスワード"
user1 : EAP "user1パスワード"
user2 : EAP "user2パスワード"
user3 : EAP "user3パスワード"
------------------------
--- /etc/strongswan.conf ---
charon {
        load_modular = yes
        plugins {
                include strongswan.d/charon/*.conf
                # INTERNAL_DNS_DOMAIN設定
                attr {
                        25 = familyname,flets-east.jp
                }
        }
}

include strongswan.d/*.conf
--------


(1)Windows10のIKEv2 VPN設定名「test-ikev2-vpn」で作成
(2)PowerShellで「Split Tunnelling」の設定をする
windows10(OS build 17134.556)は、IKEv2接続時に「leftsubnet=192.168.0.0/20,2409:10:XXXX:YY00::/56,2404:1a8::/32」の情報を「Traffic Selector」で受け付けてくれない。


(3)iPhone6Sのテザリングでインターネットに接続し、「test-ikev2-vpn」でIKEv2 VPN接続を行う

(4)コマンドプロンプトからイントラネット内のFQDN名が解決できるか確認する
「nslookup ds216j.familyname」では、名前解決できない。
「ping -4 -c 1 ds216j.familyname」と「ping -6 -c ds216j.familyname」でアプリからFQDNの名前解決できる事を確認。



Windows10側へ送られた「INTERNAL_DNS_DOMAIN」情報。2ドメイン設定しているのでCP値(25)が2個生成され、送付されている。Windows10側からのCP値(25)の要求は無い。Windows10は、この情報を扱わないようだ。。。

------- 接続時のログ抜粋 --------
Sat Feb 2 14:49:13 2019 daemon.info : 15[IKE] CHILD_SA eap-id-passwd{1} established with SPIs c35775db_i a1d32b7c_o and TS 192.168.0.0/20 2404:1a8::/32 2409:10:XXXX:YY00::/56 === 192.168.13.1/32 2409:10:XXXX:YY20::13:1/128
Sat Feb 2 14:49:13 2019 authpriv.info : 15[IKE] CHILD_SA eap-id-passwd{1} established with SPIs c35775db_i a1d32b7c_o and TS 192.168.0.0/20 2404:1a8::/32 2409:10:XXXX:YY00::/56 === 192.168.13.1/32 2409:10:XXXX:YY20::13:1/128
Sat Feb 2 14:49:13 2019 daemon.info : 15[ENC] generating IKE_AUTH response 5 [ AUTH CPRP(ADDR ADDR6 (25) (25) DNS DNS6) SA TSi TSr N(AUTH_LFT) N(MOBIKE_SUP) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_6_ADDR) N(ADD_6_ADDR) ]
--------------------------------

この結果から、「VpnConnectionTriggerDnsConfiguration」で接続先DNS情報を設定しなくても「Split DNS」を利用できる事が確認できた。

----- 2019/2/2 追記 -----
Windows10は、「25 = familyname,flets-east.jp」で「INTERNAL_DNS_DOMAIN」を設定しなくても「rightdns=192.168.12.1,2409:10:XXXX:YY20::12:1」が設定されていれば、「Split DNS」機能を持つようだ。
受け取った「INTERNAL_DNS_DOMAIN」値を扱っているかは、不明(確認方法が?)。

----- 2019/2/4 追記 -----
「rightdns=192.168.12.1, 2409:10:XXXX:YY20::12:1」で設定されるDNS(dnsmasq)の設定を変更して「familyname」と「felts-east.jp」ドメインのFQDN名前解決だけ行うように設定し、「VpnConnectionTriggerDnsConfiguration」と「INTERNAL_DNS_DOMAIN」設定による「Split DNS」の状況を再確認してみた。

下記設定で「familyname」「felts-east.jp」ドメインだけFQDN名前解決する
dnsmasq
----- /etc/config/dhcp -----
config dnsmasq
        option domainneeded '1'
        option localise_queries '1'
        option expandhosts '1'
        option authoritative '1'
        option readethers '1'
        option leasefile '/tmp/dhcp.leases'
        option domain 'familyname'
        option localservice '0'
        option local '/local/'
        option rebind_protection '0'
        option boguspriv '0'
        option nonwildcard '0'
        list server '/familyname/192.168.11.250'
        list server '/flets-east.jp/192.168.1.1'
----------
iPhone6SのWiFiテザリングでインターネットへ接続し、Windows 10 IKEv2 VPN接続を行う
INTERNAL_DNS_DOMAIN=familyname,flets-east.jp」設定 有/無
SplitDNS(VpnConnectionTriggerDnsConfiguration)」設定 有/無
の4条件で接続テストを行ってみた。どの条件もインターネット上のFQDNは、インターネット用のDNSで名前解決。
「familyname」「felts-east.jp」ドメインのFQDNは、「rightdns」設定のDNSで名前解決。
Windows 10のIKEv2 VPNアプリ設定では、「rightdns」でDNSを指定すると「Split DNS」として扱われる。
StrongSwan IKEv2 VPN over IPv6 with Win10 (Split DNS設定)」では、「rightdns」を指定せずに確認している。Windows 10の場合、「rightdns」を指定し、「Split Tunneling」だけ設定するのが正解のようだ。
コメント (3)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

StrongSwan IKEv2 VPN over IPv6 with iPhone(iOS VPNアプリ設定接続)

2019-02-01 16:42:33 | WZR-HP-G300NH

「Buffalo OpenWrt化WZR-HP-G300NHでIKEv2 VPN over ぷららIPv6 IPoE接続」
が稼働した。

iPhone6S(iOS 12.1.3)のVPNアプリでStrongSwan(5.6.3)へのIKEv2接続設定で接続すると下記エラーで接続できない。

iOS (Apple iPhone, iPad...) and Mac OS X」情報から、StrongSwanの「ike/esp」設定が原因と推定していた。しかし「ログ」を調べてみると「IKE」暗号の選定が終わり、ユーザ認証もされ、ネットワーク設定でエラーが発生しているようだ。

--- 接続時のログ ---
Sun Jan 27 10:15:01 2019 daemon.info : 13[NET] received packet: from 2001:240:2419:d162:8474:dcc1:af30:ac5[500] to 2409:10:XXXX:YY20::12:1[500] (604 bytes)
Sun Jan 27 10:15:01 2019 daemon.info : 13[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(REDIR_SUP) N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) ]
Sun Jan 27 10:15:01 2019 daemon.info : 13[IKE] 2001:240:2419:d162:8474:dcc1:af30:ac5 is initiating an IKE_SA
Sun Jan 27 10:15:01 2019 authpriv.info : 13[IKE] 2001:240:2419:d162:8474:dcc1:af30:ac5 is initiating an IKE_SA
Sun Jan 27 10:15:01 2019 daemon.info : 13[IKE] IKE_SA (unnamed)[2] state change: CREATED => CONNECTING
Sun Jan 27 10:15:04 2019 daemon.info : 13[IKE] sending cert request for " CN=Private Network CA, OU=Root Certificate Authority, O=1A72E31E-EA31-4576-AAE6-8C03A00091CD, C=JP"
Sun Jan 27 10:15:04 2019 daemon.info : 13[ENC] generating IKE_SA_INIT response 0 [ SA KE No N(NATD_S_IP) N(NATD_D_IP) CERTREQ N(FRAG_SUP) N(MULT_AUTH) ]
Sun Jan 27 10:15:04 2019 daemon.info : 13[NET] sending packet: from 2409:10:XXXX:YY20::12:1[500] to 2001:240:2419:d162:8474:dcc1:af30:ac5[500] (473 bytes)
Sun Jan 27 10:15:04 2019 daemon.info : 09[NET] received packet: from 2001:240:2419:d162:8474:dcc1:af30:ac5[500] to 2409:10:XXXX:YY20::12:1[500] (604 bytes)
Sun Jan 27 10:15:04 2019 daemon.info : 09[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(REDIR_SUP) N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) ]
Sun Jan 27 10:15:04 2019 daemon.info : 09[IKE] received retransmit of request with ID 0, retransmitting response
Sun Jan 27 10:15:04 2019 daemon.info : 09[NET] sending packet: from 2409:10:XXXX:YY20::12:1[500] to 2001:240:2419:d162:8474:dcc1:af30:ac5[500] (473 bytes)
Sun Jan 27 10:15:04 2019 daemon.info : 14[NET] received packet: from 2001:240:2419:d162:8474:dcc1:af30:ac5[4500] to 2409:10:XXXX:YY20::12:1[4500] (1220 bytes)
Sun Jan 27 10:15:04 2019 daemon.info : 14[ENC] parsed IKE_AUTH request 1 [ EF(1/2) ]
Sun Jan 27 10:15:04 2019 daemon.info : 14[ENC] received fragment #1 of 2, waiting for complete IKE message
Sun Jan 27 10:15:04 2019 daemon.info : 15[NET] received packet: from 2001:240:2419:d162:8474:dcc1:af30:ac5[4500] to 2409:10:XXXX:YY20::12:1[4500] (756 bytes)
Sun Jan 27 10:15:04 2019 daemon.info : 15[ENC] parsed IKE_AUTH request 1 [ EF(2/2) ]
Sun Jan 27 10:15:04 2019 daemon.info : 15[ENC] received fragment #2 of 2, reassembling fragmented IKE message
Sun Jan 27 10:15:04 2019 daemon.info : 15[ENC] unknown attribute type (25)
Sun Jan 27 10:15:04 2019 daemon.info : 15[ENC] parsed IKE_AUTH request 1 [ IDi N(INIT_CONTACT) N(MOBIKE_SUP) IDr AUTH CERT CPRQ(ADDR DHCP DNS MASK ADDR6 DHCP6 DNS6 (25)) N(ESP_TFC_PAD_N) N(NON_FIRST_FRAG) SA TSi TSr ]
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] received end entity cert " C=JP, ST=TOKYO, O=FAMILYNAME, OU=FAMILY, CN=Firstname LASTNAME"
Sun Jan 27 10:15:04 2019 daemon.info : 15[CFG] looking for peer configs matching 2409:10:XXXX:YY20::12:1[vpn.v6.AAAAAAAA.mydns.jp]...2001:240:2419:d162:8474:dcc1:af30:ac5[someone@white.plala.or.jp]
Sun Jan 27 10:15:04 2019 daemon.info : 15[CFG] selected peer config 'publiccert-user10'
Sun Jan 27 10:15:04 2019 daemon.info : 15[CFG] using certificate " C=JP, ST=TOKYO, O=FAMILYNAME, OU=FAMILY, CN=Firstname LASTNAME"
Sun Jan 27 10:15:04 2019 daemon.info : 15[CFG] using trusted ca certificate " CN=Private Network CA, OU=Root Certificate Authority, O=1A72E31E-EA31-4576-AAE6-8C03A00091CD, C=JP"
Sun Jan 27 10:15:04 2019 daemon.info : 15[CFG] checking certificate status of " C=JP, ST=TOKYO, O=FAMILYNAME, OU=FAMILY, CN=Firstname LASTNAME"
Sun Jan 27 10:15:04 2019 daemon.info : 15[CFG] certificate status is not available
Sun Jan 27 10:15:04 2019 daemon.info : 15[CFG] reached self-signed root ca with a path length of 0
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] authentication of 'someone@white.plala.or.jp' with RSA signature successful


#IKEv2 over IPv6接続し、ユーザ認証(証明書による公開鍵方式)が成功

Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] processing INTERNAL_IP4_ADDRESS attribute
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] processing INTERNAL_IP4_DHCP attribute
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] processing INTERNAL_IP4_DNS attribute
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] processing INTERNAL_IP4_NETMASK attribute
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] processing INTERNAL_IP6_ADDRESS attribute
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] processing INTERNAL_IP6_DHCP attribute
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] processing INTERNAL_IP6_DNS attribute
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] processing (25) attribute
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] received ESP_TFC_PADDING_NOT_SUPPORTED, not using ESPv3 TFC padding
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] peer supports MOBIKE
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] authentication of 'vpn.v6.AAAAAAAA.mydns.jp' (myself) with RSA signature successful
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] IKE_SA publiccert-user10[2] established between 2409:10:XXXX:YY20::12:1[vpn.v6.AAAAAAAA.mydns.jp]...2001:240:2419:d162:8474:dcc1:af30:ac5[someone@white.plala.or.jp]
Sun Jan 27 10:15:04 2019 authpriv.info : 15[IKE] IKE_SA publiccert-user10[2] established between 2409:10:XXXX:YY20::12:1[vpn.v6.AAAAAAAA.mydns.jp]...2001:240:2419:d162:8474:dcc1:af30:ac5[someone@white.plala.or.jp]
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] IKE_SA publiccert-user10[2] state change: CONNECTING => ESTABLISHED
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] scheduling reauthentication in 9952s
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] maximum IKE_SA lifetime 10492s
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] peer requested virtual IP %any
Sun Jan 27 10:15:04 2019 daemon.info : 15[CFG] reassigning offline lease to 'someone@white.plala.or.jp'
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] assigning virtual IP 192.168.13.1 to peer 'someone@white.plala.or.jp'
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] peer requested virtual IP %any6
Sun Jan 27 10:15:04 2019 daemon.info : 15[CFG] reassigning offline lease to 'someone@white.plala.or.jp'
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] assigning virtual IP 2409:10:XXXX:YY20::13:1 to peer 'someone@white.plala.or.jp'
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] building INTERNAL_IP4_DNS attribute
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] building INTERNAL_IP6_DNS attribute
Sun Jan 27 10:15:04 2019 daemon.info : 15[IKE] CHILD_SA publiccert-user10{2} established with SPIs c9c438bf_i 0b79b19f_o and TS 192.168.0.0/20 2404:1a8::/32 2409:10:XXXX:YY00::/56 === 192.168.13.1/32 2409:10:XXXX:YY20::13:1/128
Sun Jan 27 10:15:04 2019 authpriv.info : 15[IKE] CHILD_SA publiccert-user10{2} established with SPIs c9c438bf_i 0b79b19f_o and TS 192.168.0.0/20 2404:1a8::/32 2409:10:XXXX:YY00::/56 === 192.168.13.1/32 2409:10:XXXX:YY20::13:1/128
Sun Jan 27 10:15:04 2019 daemon.info : 15[ENC] generating IKE_AUTH response 1 [ IDr AUTH CPRP(ADDR ADDR6 DNS DNS6) SA TSi TSr N(AUTH_LFT) N(MOBIKE_SUP) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_6_ADDR) N(ADD_6_ADDR) ]


#StrongSwanのleftsubnet情報の設定要求を生成してiPhoneへ要求

Sun Jan 27 10:15:04 2019 daemon.info : 15[NET] sending packet: from 2409:10:XXXX:YY20::12:1[4500] to 2001:240:2419:d162:8474:dcc1:af30:ac5[4500] (752 bytes)

#応答を待つがiPhoneからの応答なし。iPhoneはエラーで接続を終了。
---------------------------

iOS (Apple iPhone, iPad...) and Mac OS X」を見直してみる。構成ファイル(プロファイル)で「ServerCertificateIssuerCommonName」が定義されていると「CERTREQ」を行うが、アプリ設定だと「CERTREQ」しない。「leftsendcert=always」が必要。


StrongSwanの 「/etc/ipsec.conf」に設定し確認。アプリ設定でも接続する事を確認した。
---=== /etc/ipsec.conf ===---
# ipsec.conf - strongSwan IPsec configuration file
# Add connections here.
conn %default
	keyexchange=ikev2
	##Win10には必要
	ike=aes256-sha256-modp1024

	auto=add
	left=%any
	leftauth=pubkey
	##leftsubnetでイントラネット内ネットワークを定義すると「Split Tunneling」として「Configuration Payload」を介して「Traffic Selectors情報」が端末に通知される。端末からのネットワーク通信を全てイントラネットに向けるには,デフォルトルート「0.0.0.0/0,::/0」を設定する
	leftsubnet=192.168.0.0/20,2409:10:XXXX:YY00::/56,2404:1a8::/32

	##iPhone VPNアプリ設定用に必要(iOS 12.1.3/macOSX 10.12.6)
	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
	##イントラネット内のFQDNを解決できるDNSアドレスを指定「Configuration Payload」で通知される
	rightdns=192.168.12.1,2409:10:XXXX:YY20::12:1
------------------------
組織表示部が「不明」となっているのがVPNアプリで設定した接続先。一番上は、構成ファイルで設定した接続先。3番目4番目も構成ファイルでの設定。


構成ファイルでの接続、Windows10からの接続に影響を与えない事も確認した。

「ID/Password」によるユーザ認証。「ローカルID」は、空欄とする事。設定した場合、「EAP-TLS認証のID」と誤認識され接続出来ない場合がある。StrongSwan側で、「ID/Password」と「EAP-TLS認証」の両方式でユーザ設定されている場合に注意が必要。証明書を設定した場合、SAN(Subject Alternative Name)内の一つを「ローカルID」に指定する。iOS/macOSXでは、DN指定を受け付けないので注意が必要。また、SANの属性は、「emailかNT principal」。SANに記述するRFC822形式の「@ドメイン」は、トップドメインだけだと有効とならないので最低限「@2ndName.1stName」である事が必要。証明書は、事前に「設定」「一般」「プロファイル」にCA公開鍵と共に追加しておく事。

「ID/Password」「公開鍵方式」の設定値

「EAP-TLS方式」の設定値



macOSX SierraのVPN接続設定アプリ
「ID/Password」ユーザ認証で設定


iPhone6Sのテザリング接続(WiFi)し、IKEv2 VPN接続


DNSの設定はしていない(StrongSwanからの自動設定を目指す)



Split TunnelingとSplit DNS
Windows10のSplit Tunneling/DNS設定」や「iOS/macOSX構成ファイル設定によるSplit Tunneling/DNS」と同じように、VPN設定アプリでSplit Tunneling/DNSが実現できるか確認してみる。
iOS (Apple iPhone, iPad...) and Mac OS X」で「rightsourceip」でIPv6アドレスがプールされている場合、「leftsubnet」に「::/0」が設定されているか経路情報が設定されていない必要があると。。。Split Tunneling出来ないと言う事か?

StrongSwanのipsec.conf設定の「leftsubnet」でSplit Tunneling経路情報を指定し、「rightdns」でDNSを指定した状態で接続してみる。iPhoneでの確認が困難なのでmacOSX SierraのVPNアプリで確認した。
--- /etc/ipsec.conf
	leftsubnet=192.168.0.0/20,2409:10:XXXX:YY00::/56,2404:1a8::/32
	rightsourceip=192.168.13.0/24,2409:10:XXXX:YY20::13:0/120
	rightdns=192.168.12.1,2409:10:XXXX:YY20::12:1
---


iPhone6Sのテザリングでインターネットへ接続「scutil --dns」で設定されるDNS情報を確認


IKEv2 VPNでStrongSwanに接続直後のDNS情報には、「rightdns」設定値が確認できる


「leftsubnet」で通知されたIPv4経路情報も設定されている。


IPv6経路情報も設定されている。


「nslookup」でインターネット上の「www11.plala.or.jp」の名前解決ができているがイントラネット内の「ds216j.familyname」の名前解決ができない。「ping」アプリのリゾルバーも名前解決できない。


IPアドレスで各ホストに接続できるか確認する。経路が確保されIPv4もIPv6も問題なく到達可能である。


インターネットからアクセスできるFQDN(DDNS)へブラウザでアクセスしてみるとVPN経由でIPv6接続する。


イントラネット内のDNSを指定して「nslookup」でイントラネット内のFQDN名前解決を確認。


イントラネット内のDNSアドレスが通知されているのにイントラネット内のDNSを使用してくれない。。。

iOSの「Split DNS」について下記の記述があった。
iOS 10.3.1以降、IKEv2「Configuration Payload」の「INTERNAL_DNS_DOMAIN」attributeが「INTERNAL_IP4_DNS」と「INTERNAL_IP6_DNS」と共にサポートされている。


「rightdns」が「INTERNAL_IP4_DNS「INTERNAL_IP6_DNS」で通知されているようなので、「INTERNAL_DNS_DOMAIN」に「familyname」と「felts-east.jp」を設定し通知させてみる。「INTERNAL_DNS_DOMAIN」のattrを確認すると「IKEv2 Configuration Payload Attribute Types」から「Value = 25」である事が判る。strongswan.confに設定して確認してみた。
--- /etc/strongswan.conf ---
# strongswan.conf - strongSwan configuration file
#
# Refer to the strongswan.conf(5) manpage for details
#
# Configuration changes should be made in the included files

charon {
        load_modular = yes
        plugins {
                include strongswan.d/charon/*.conf

                attr {
                        25 = familyname,flets-east.jp
                }
        }
}

include strongswan.d/*.conf
--------

iPhone6S(iOS 12.1.3)からVPNアプリ設定で接続した時のログ
接続時に「INTERNAL_DNS_DOMAIN(25)」が要求され、「strongswan.conf」に設定された「familyname」と「flets-eas.jp」の二つのドメインと思われる設定が「CPRQ」で「Traffic Selector」と共にiPhone6Sに送出されている。
----- connection log ---
Fri Feb  1 11:03:11 2019 daemon.info : 14[NET] received packet: from 2001:240:2412:fd46:65c8:6357:a02:c623[500] to 2409:10:XXXX:YY20::12:1[500] (604 bytes)

Fri Feb  1 11:03:14 2019 daemon.info : 15[ENC] parsed IKE_AUTH request 1 [ IDi N(INIT_CONTACT) N(MOBIKE_SUP) IDr CPRQ(ADDR DHCP DNS MASK ADDR6 DHCP6 DNS6 (25)) N(ESP_TFC_PAD_N) N(NON_FIRST_FRAG) SA TSi TSr ]

Fri Feb  1 11:03:14 2019 daemon.info : 15[IKE] processing INTERNAL_IP4_ADDRESS attribute
Fri Feb  1 11:03:14 2019 daemon.info : 15[IKE] processing INTERNAL_IP4_DHCP attribute
Fri Feb  1 11:03:14 2019 daemon.info : 15[IKE] processing INTERNAL_IP4_DNS attribute
Fri Feb  1 11:03:14 2019 daemon.info : 15[IKE] processing INTERNAL_IP4_NETMASK attribute
Fri Feb  1 11:03:14 2019 daemon.info : 15[IKE] processing INTERNAL_IP6_ADDRESS attribute
Fri Feb  1 11:03:14 2019 daemon.info : 15[IKE] processing INTERNAL_IP6_DHCP attribute
Fri Feb  1 11:03:14 2019 daemon.info : 15[IKE] processing INTERNAL_IP6_DNS attribute
Fri Feb  1 11:03:14 2019 daemon.info : 15[IKE] processing (25) attribute

Fri Feb  1 11:03:14 2019 daemon.info : 06[IKE] peer requested virtual IP %any
Fri Feb  1 11:03:14 2019 daemon.info : 06[IKE] assigning virtual IP 192.168.13.1 to peer
Fri Feb  1 11:03:14 2019 daemon.info : 06[IKE] peer requested virtual IP %any6
Fri Feb  1 11:03:14 2019 daemon.info : 06[IKE] assigning virtual IP 2409:10:XXXX:YY20::13:1 to peer
Fri Feb  1 11:03:14 2019 daemon.info : 06[IKE] building (25) attribute
Fri Feb  1 11:03:14 2019 daemon.info : 06[IKE] building (25) attribute
Fri Feb  1 11:03:14 2019 daemon.info : 06[IKE] building INTERNAL_IP4_DNS attribute
Fri Feb  1 11:03:14 2019 daemon.info : 06[IKE] building INTERNAL_IP6_DNS attribute

Fri Feb  1 11:03:14 2019 authpriv.info : 06[IKE] CHILD_SA eap-id-passwd{1} established with SPIs c6aad862_i 005bbe4e_o and TS 192.168.0.0/20 2404:1a8::/32 2409:10:XXXX:YY00::/56 === 192.168.13.1/32 2409:10:XXXX:YY20::13:1/128
Fri Feb  1 11:03:14 2019 daemon.info : 06[ENC] generating IKE_AUTH response 5 [ AUTH CPRP(ADDR ADDR6 (25) (25) DNS DNS6) SA TSi TSr N(AUTH_LFT) N(MOBIKE_SUP) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_4_ADDR) N(ADD_6_ADDR) N(ADD_6_ADDR) ]
--------

iPhone6Sでテザリング接続したmacOSXでIKEv2 VPN接続後の「scutile --dns」の結果、「INTERNAL_DNS_DOMAIN」に設定したドメインを確認できる。




「nslookup」でFQDN「ds216j.familyname」の名前解決が出来ない。DNSアドレスを指定すると「A」「AAAA」共に名前解決できる。「ping」アプリからは、名前解決ができる。


IPv6テストで確認するとIPv4/IPv6共にIIJ経由で接続される。


イントラネット内の「ds216j.familyname」へhttp接続する。IKEv2 VPN経由で接続。


「ds216j.familyname」のIPv4アドレスを指定してhttp接続。


インターネット上のDDNSに登録したIPv6専用httpサーバに接続してみる。IKEv2 VPN経由で接続。


「ぷらら」のPPPoE接続のIPv4アドレスで公開したhttpサーバにインターネット経由で接続。


IPv6/IPv4対応のhttpサーバにインターネット経由でIPv6接続。


iPhone(iOS 12.1.3)でも確認してみた。


IPv6テストで確認するとIPv4/IPv6共にIIJ経由で接続


イントラネット内の「ds216j.familyname」へhttp接続。IPv4アドレスを指定してhttp接続。


インターネット上のDDNSに登録したIPv6専用httpサーバ「mydns.jp」に接続してみる。IKEv2 VPN経由で接続。「ぷらら」のPPPoE接続のIPv4アドレスで公開したhttpサーバ「netvolante.jp」インターネット経由で接続。


IPv6/IPv4対応のhttpサーバにインターネット経由でIPv6接続。


ひかり電話ゲートウェイ(イントラネット内)にhttp接続。イントラネット内の「Home to Vehicle」サーバにhttp接続。


NGNのサービス情報サイトへhttp接続


インターネット上のhttpサーバへ接続


iOS(12.1.3)/ macOSX(10.12.6)のVPN設定アプリからでも「Split Tunneling」「Split DNS」が「構成プロファイル設定」と同様に利用できそうである。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

StrongSwan IKEv2 VPN over IPv6 with Win10 (Split DNS設定)

2019-01-29 16:31:45 | WZR-HP-G300NH

「Buffalo OpenWrt化WZR-HP-G300NHでIKEv2 VPN over ぷららIPv6 IPoE接続」
が稼働した。

「(10)Windows10接続結果」で「Split Tunneling」を実現したが、「Split DNS」を設定してiOS/macOSXの「OverridePrimary=0」と同等の機能を検討する。「VpnConnectionTriggerDnsConfiguration」の設定で実現しそうだが、Windows10で機能がオフされている情報があったので確認してみた。

StrongSwan(5.6.3)の「/etc/ipsec.conf」で「rightdns=192.168.12.1,2409:10:XXXX:YY20::12:1」をコメントアウトし、DNS設定情報を提示しないようにし、Windows10から接続する。

接続後、DNSアドレスが設定されていない事を確認。


詳細タブ側は、元々DNS情報が存在しない。


接続後の「ifconfig /all」の状態。IPv4 DNSアドレスは、aeonモバイル(IIJ)側のアドレス。


「nslookup」で名前解決できない(変化なし)。「ping」でも名前解決できなくなった。


接続確認でds216jのIPv4アドレスにpingしてみた。応答確認。



VpnConnectionTriggerDnsConfigurationで設定

VpnConnection情報を確認


DNS情報が設定されていない事を「VpnConnectionTrigger」で確認し、VPN側のDNSで検索させたいドメインを「VpnConnectionTriggerDnsConfiguration」で登録する。登録後、「VPnConnectionTrigger」で確認する。



間違えた時は、「Remove-VpnConnectionTriggerDnsConfiguration」で削除する
(DNS設定値の削除)


Split DNSを確認

接続後の「ifconfig /all」に変化は無い。


「nslookup」で名前解決はできない。「ping」では、名前解決して応答確認ができる。


「nslookup」でインターネット上のFQDN名前解決してみたが、イントラネット内のDNSもインターネットFQDN名前解決できるので確認が難しい。

一応、「VpnConnectionTriggerDnsConfiguration」が機能していると判断出来るのではないかと思う。

IPv4経路情報


IPv6経路情報



--- 2019/05/20追記
Win10でsplit dnsについてさらに確認した
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

StrongSwan IKEv2 VPN over IPv6 with iOS/macOSX/Win10 (IKE設定)

2019-01-28 09:58:47 | WZR-HP-G300NH

「Buffalo OpenWrt化WZR-HP-G300NHでIKEv2 VPN over ぷららIPv6 IPoE接続」
が稼働した。

StrongSwan(5.6.3-1)とiPhone(iOS 12.1.3)/Macbook pro(macOSX Sierra 10.12.6)/Windows10(OS build 17134.556)間で利用できるIKEv2の暗号方式を調べてみた。StrongSwanのドキュメントでは、
ike= # Win7 is aes256, sha-1, modp1024; iOS is aes256, sha-256, modp1024; OS X is 3DES, sha-1, modp1024
esp=# Win 7 is aes256-sha1, iOS is aes256-sha256, OS X is 3des-shal1
が共通で使える暗号として提示されている。
StrongSwan(5.6.3)の「ike/esp」の設定値は、

としている。

iOS, macOSX, windows10でIKEv2 VPN接続時に使用される暗号を確認してみる。
StrongSwanとのIKEv2 VPN接続時に使用される暗号がログされれば良いが方法が判らない。「ike_name=yes」では、接続に使用された暗号をログしない。StrongSwan(5.6.3)のipsec.confでikeのデフォルト値以外受付ない設定「ike=aes128-sha256-modp3072!」として各端末が提示する暗号を確認してみた。

---- 2019/1/29 追記 ---
「/etc/ipsec.conf」の「config setup」セクションの「charondebug=」に「"cfg 2"」を加えると接続時に選択したikeの暗号がログされることが判った。末尾にログ結果を追記した。
----------------------

--- iPhone(iOSX 12.1.3) + 構成ファイル ---
Sun Jan 27 12:00:16 2019 daemon.info : 13[CFG] received proposals: IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048
Sun Jan 27 12:00:16 2019 daemon.info : 13[CFG] configured proposals: IKE:AES_CBC_128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_3072
----------------------
構成ファイルで指定している通り「aes256-sha256-modp2048(DHグループ14)」。
この設定は、「Apple Configurator 2 [2.7.1(3H114)] 」の設定値と同じにしている。

--- iPhone(iOSX 12.1.3) + VPNアプリ ---
Sun Jan 27 12:02:03 2019 daemon.info : 06[CFG] received proposals: IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048, IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/ECP_256, IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_1536, IKE:AES_CBC_128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024, IKE:3DES_CBC/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
Sun Jan 27 12:02:03 2019 daemon.info : 06[CFG] configured proposals: IKE:AES_CBC_128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_3072
----------------------
aes256-sha256-prfsha256-modp2048 (DH group=14)
aes256-sha256-prfsha256-ecp256
aes256-sha256-prfsha256-modp1536 (DH group=5)
aes128-sha1-prfsha1-modp1024 (DH group=2)
3des-sha1-prfsha1-modp1024 (DH group=2)
Security Recommendations」に従えば、「sha1」「3des」「modp1024」を含む設定を避ける。

--- macOSX Sierra + 構成ファイル ---
Sun Jan 27 12:13:49 2019 daemon.info : 15[CFG] received proposals: IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048
Sun Jan 27 12:13:49 2019 daemon.info : 15[CFG] configured proposals: IKE:AES_CBC_128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_3072
----------------------
構成ファイルで指定している通り「aes256-sha256-modp2048(DHグループ14)」

--- Windows10 ---
Sun Jan 27 23:40:51 2019 daemon.info : 09[CFG] received proposals: IKE:3DES_CBC/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024, IKE:AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024, IKE:3DES_CBC/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_1024, IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_1024, IKE:3DES_CBC/HMAC_SHA2_384_192/PRF_HMAC_SHA2_384/MODP_1024, IKE:AES_CBC_256/HMAC_SHA2_384_192/PRF_HMAC_SHA2_384/MODP_1024
Sun Jan 27 23:40:51 2019 daemon.info : 09[CFG] configured proposals: IKE:AES_CBC_128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_3072
----------------------
aes256-sha384-prfsha384-modp1024 (DH group=2)
aes256-sha256-prfsha256-modp1024 (DH group=2)
aes256-sha1-prfsha1-modp1024 (DH group=2)
3des-sha384-prfsha384-modp1024 (DH group=2)
3des-sha256-prfsha256-modp1024 (DH group=2)
3des-sha1-prsha1-modp1024 (DH group=2)


「ike=aes128-sha256-modp3072」としてStrongSWAN(5.6.3)が提示する暗号を確認してみた。

--- Windows10 ---
Sun Jan 27 12:09:09 2019 daemon.info : 14[CFG] received proposals: IKE:3DES_CBC/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024, IKE:AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024, IKE:3DES_CBC/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_1024, IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_1024, IKE:3DES_CBC/HMAC_SHA2_384_192/PRF_HMAC_SHA2_384/MODP_1024, IKE:AES_CBC_256/HMAC_SHA2_384_192/PRF_HMAC_SHA2_384/MODP_1024
Sun Jan 27 12:09:09 2019 daemon.info : 14[CFG] configured proposals: IKE:AES_CBC_128/AES_CBC_192/AES_CBC_256/AES_CTR_128/AES_CTR_192/AES_CTR_256/CAMELLIA_CTR_128/CAMELLIA_CTR_192/CAMELLIA_CTR_256/CAMELLIA_CBC_128/CAMELLIA_CBC_192/CAMELLIA_CBC_256/3DES_CBC/HMAC_SHA2_256_128/HMAC_SHA2_384_192/HMAC_SHA2_512_256/HMAC_SHA1_96/AES_XCBC_96/AES_CMAC_96/PRF_HMAC_SHA2_256/PRF_HMAC_SHA2_384/PRF_HMAC_SHA2_512/PRF_AES128_XCBC/PRF_AES128_CMAC/PRF_HMAC_SHA1/ECP_256/ECP_384/ECP_521/ECP_256_BP/ECP_384_BP/ECP_512_BP/CURVE_25519/MODP_3072/MODP_4096/MODP_6144/MODP_8192/MODP_2048, IKE:AES_GCM_16_128/AES_GCM_16_192/AES_GCM_16_256/AES_CCM_16_128/AES_CCM_16_192/AES_CCM_16_256/CAMELLIA_CCM_16_128/CAMELLIA_CCM_16_192/CAMELLIA_CCM_16_256/AES_GCM_12_128/AES_GCM_12_192/AES_GCM_12_256/AES_GCM_8_128/AES_GCM_8_192/AES_GCM_8_256/AES_CCM_8_128/AES_CCM_8_192/AES_CCM_8_256/AES_CCM_12_128/AES_CCM_12_192/AES_CCM_12_256/CAMELLIA_CCM_8_128/CAMELLIA_CCM_8_192/CAMELLIA_CCM_8_256/CAMELLIA_CCM_12_128/CAMELLIA_CCM_12_192/CAMELLIA_CCM_12_256/PRF_HMAC_SHA2_256/PRF_HMAC_S
----------------------
---[StrongSwan 5.6.3]---
提示された暗号の種類が多く、ログの最後が途切れているようだ。「3DES」が含まれているが「Security Recommendations」と「IKEv2 Security Suites」が参考になる。

これらの結果からStrongSwan(5.6.3)の標準とWindows 10用に「ike=aes256-sha256-modp1024」と「esp=aes256-sha256」を追加するとiOS(12.1.3)/macOSX(10.12.6)/Windows10(OS Build 17134.556)で共用可能と推定する。
Windows10のSplit Tunnelingがpowershellからの設定を必要とするので、「modp2048」が使用できるよう「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters\NegotiateDH2048_AES256=(DWORD)1」を設定するのが良さそうだ。


---- 2019/1/29 追記 ---
「/etc/ipsec.conf」の「config setup」セクションの「charondebug=」に「"cfg 2"」を加えると接続時に選択したikeの暗号がログされる。

ikeのログ

Tue Jan 29 09:29:05 2019 daemon.info : 15[CFG] received proposals: IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048, IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/ECP_256, IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_1536, IKE:AES_CBC_128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024, IKE:3DES_CBC/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
Tue Jan 29 09:29:05 2019 daemon.info : 15[CFG] configured proposals: IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_1024, IKE:AES_CBC_128/AES_CBC_192/AES_CBC_256/AES_CTR_128/AES_CTR_192/AES_CTR_256/CAMELLIA_CTR_128/CAMELLIA_CTR_192/CAMELLIA_CTR_256/CAMELLIA_CBC_128/CAMELLIA_CBC_192/CAMELLIA_CBC_256/3DES_CBC/HMAC_SHA2_256_128/HMAC_SHA2_384_192/HMAC_SHA2_512_256/HMAC_SHA1_96/AES_XCBC_96/AES_CMAC_96/PRF_HMAC_SHA2_256/PRF_HMAC_SHA2_384/PRF_HMAC_SHA2_512/PRF_AES128_XCBC/PRF_AES128_CMAC/PRF_HMAC_SHA1/ECP_256/ECP_384/ECP_521/ECP_256_BP/ECP_384_BP/ECP_512_BP/CURVE_25519/MODP_3072/MODP_4096/MODP_6144/MODP_8192/MODP_2048, IKE:AES_GCM_16_128/AES_GCM_16_192/AES_GCM_16_256/AES_CCM_16_128/AES_CCM_16_192/AES_CCM_16_256/CAMELLIA_CCM_16_128/CAMELLIA_CCM_16_192/CAMELLIA_CCM_16_256/AES_GCM_12_128/AES_GCM_12_192/AES_GCM_12_256/AES_GCM_8_128/AES_GCM_8_192/AES_GCM_8_256/AES_CCM_8_128/AES_CCM_8_192/AES_CCM_8_256/AES_CCM_12_128/AES_CCM_12_192/AES_CCM_12_256/CAMELLIA_CCM_8_128/CAMELLIA_CCM_8_192/CAMELLIA_CCM_8_256/CAMELLIA_CCM_12_128/CAMEL
Tue Jan 29 09:29:05 2019 daemon.info : 15[CFG] selected proposal: IKE:AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048

espも記録される

Tue Jan 29 09:29:07 2019 daemon.info : 07[CFG] received proposals: ESP:AES_CBC_256/HMAC_SHA2_256_128/NO_EXT_SEQ, ESP:AES_CBC_256/HMAC_SHA2_256_128/NO_EXT_SEQ, ESP:AES_CBC_256/HMAC_SHA2_256_128/NO_EXT_SEQ, ESP:AES_CBC_128/HMAC_SHA1_96/NO_EXT_SEQ, ESP:3DES_CBC/HMAC_SHA1_96/NO_EXT_SEQ
Tue Jan 29 09:29:07 2019 daemon.info : 07[CFG] configured proposals: ESP:AES_CBC_256/HMAC_SHA2_256_128/NO_EXT_SEQ, ESP:AES_CBC_128/AES_CBC_192/AES_CBC_256/HMAC_SHA2_256_128/HMAC_SHA2_384_192/HMAC_SHA2_512_256/HMAC_SHA1_96/AES_XCBC_96/NO_EXT_SEQ
Tue Jan 29 09:29:07 2019 daemon.info : 07[CFG] selected proposal: ESP:AES_CBC_256/HMAC_SHA2_256_128/NO_EXT_SEQ

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Buffalo OpenWrt化WZR-HP-G300NHでIKEv2 VPN over ぷららIPv6 IPoE接続

2019-01-25 18:38:41 | WZR-HP-G300NH
OpenWrt化WZR-HP-G300NHに「StrongSwan」を導入し、「ぷらら IPv6 IPoE」経由でイントラネットに「IPsec IKEv2 VPN 」接続する(ヤマハNVR500のL2TP/IPsecでは、IPv6経由のVPN接続が出来ない)。構成は、下記のように、端末からアクセスし、イントラネット内の仮想端末として接続する。VPNのアドレスは、DDNSを利用し、「vpn.v6.xxxxxxxx.mydns.jp」でIPv6アドレスだけが返されるようにする。イントラネット内の最初のFirewallは、PR-S300SEの「セキュリティ設定」で対応する。OpenWrt化WZR-HP-G300NHで稼働するStrongSwanは、イントラネット内の仮想IPv4ネットワーク「192.168.13.0/24」、IPv6 Prefix「2409:10:XXXX:YY20::/64」内のアドレスを仮想端末に設定させる。


(1)StrongSwanのインストール
OpenWrtサイトの「Documentation」「IPsec」「StrongSwan」「IPsec Basics」でインストールするパッケージが書かれているが、ユーティリティが必要になることも考慮し、「strong swan-full(5.6.3-1)」を使用した。
OpenWrt 18.06.1 / WZR-HP-G300NH
StrongSwan 5.6.3-1
iPhone6S iOS 12.1.3(16D39)
macOSX Sierra 10.12.6
Windows 10 Home ver.1803/OS build 17134.556

(2)DDNS
DDNSは、IPv6 によるWebサーバ公開時にも利用した「Mydns」を使用した。
DNSレコードは、IPv6アドレス
vpn.v6.AAAAAAAA.mydns.jp in aaaa 2409:10:XXXX:YY20::12:1
だけを登録した。定期更新は、OpenWrtのDDNSを使用し、IPv6だけを更新するよう設定した。

(3)PR-S300SEのフィルタ設定
「詳細」「セキュリティ」「IPv6パケットフィルタ設定(IPoE)」で下記の許可設定を加える

IPoE->LAN |any -> 2409:10:XXXX:YY20::12:1/64 |プロトコル50(ESP) |ポート any-> any |許可
IPoE->LAN |any -> 2409:10:XXXX:YY20::12:1/64 |プロトコル51(AH) |ポート any-> any |拒否
IPoE->LAN |any -> 2409:10:XXXX:YY20::12:1/64 |プロトコル UDP |ポート any-> 500 |許可(IKE)
IPoE->LAN |any -> 2409:10:XXXX:YY20::12:1/64 |プロトコル UDP |ポート any-> 4500 |許可(NAT Traversal)

NAT設定が無いので「NAT Traversal」設定不要と考えたが、アクセスが有り許可追加した。
AHプロトコルのアクセスは、検知されていないので拒否設定してある(必要時に許可設定する)。

(4)VPNサーバ証明書
iPhone構成ユーティリティ検証時に作成した「Private Network CA」の発行するサーバ証明書とした(opensslで生成)。
CAのDNは、
C=JP, O=1A72E31E-EA31-4576-AAE6-8C03A00091CD, OU=Root Certificate Authority, CN=Private Network CA

サーバ証明書は、
Subject: C=JP, ST=TOKYO, O=FAMILYNAME, CN=openwrt.familyname
X509v3 extensions:
X509v3 Basic Constraints: critical
CA:FALSE
X509v3 Key Usage: critical
Digital Signature, Key Encipherment
X509v3 Extended Key Usage: critical
TLS Web Server Authentication
X509v3 Subject Alternative Name:
DNS:OPENWRT.FAMILYNAME, DNS:vpn.v6.AAAAAAAA.mydns.jp

イントラネット内は、「familyname」ドメインで運用しているため、サーバ名のFQDNは、「openwrt.familyname」としている。インターネットからの接続は、DDNS「mydns.jp」で「vpn.v6.AAAAAAAA.mydns.jp」でアクセスされる。
VPNのFQDNは、「SubjectAltName」にDNSタイプで設定しておく(「openwrt.familyname」のFQDNもSAN設定してある)。
OpenWrt化WZR-HP-G300NHのLuCIをssl化する」で使用したサーバ証明書にVPN用のSANを加えたサーバ証明書となる。
サーバ証明書は、「/etc/ipsec.d/certs/」に公開鍵。「/etc/ipsec.d/private/」に秘密鍵を設定。「Private Network CA」の公開鍵を「/etc/ipsec.d/cacerts/」に設定する。

(5)ユーザ証明書
IKEv2 VPN接続認証には、「共有鍵」「Id/Password」あるいは「証明書」による方法がある。「証明書」による認証方式のため「Private Network CA」の発行したユーザ証明書を準備する(opensslで生成)。
ユーザ証明書は、
Subject: C=JP, ST=TOKYO, O=FAMILYNAME, OU=FAMILY, CN=Firstname LASTNAME
X509v3 extensions:
X509v3 Basic Constraints: critical
CA:FALSE
X509v3 Key Usage: critical
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Extended Key Usage: critical
TLS Web Client Authentication, E-mail Protection, Microsoft Smartcardlogin
X509v3 Subject Alternative Name:
othername:<unsupported>, othername:<unsupported>, email:someone@white.plala.or.jp

---------------------------------
subjectAltName(openssl 設定値)
---------------------------------
otherName:msUPN;UTF8:someone@FAMILYNAME (NTプリンシパル名)
otherName:0.9.2342.19200300.100.1.1;UTF8:someone (ユーザID)
email:someone@white.plala.or.jp (メールアドレス)
---------------------------------
「NTプリンシパル名」は、Microsoft ActiveDirectory認証時に必要。MS Radius経由Activedirecry認証時にも必要。「ユーザID」は、X509属性で定義されている。SmartCard認証やUNIX関連の認証にも有効なため。

(6)/etc/ipsec.confの設定(conn)
IPsecの設定については、「StrongSwan User Documentation」に詳細情報が集約されている。iPhone iOS/macOSXの設定を参考にした。端末側の設定には、1️⃣iOSやOSX設定アプリからの設定、2️⃣プロファイルによる設定、3️⃣ネットワーク拡張に対応したアプリ(CISCO?)からできるらしい。が、色々と試行したが1️⃣は、成功しなかった。イントラネット接続後のsplitDNS(イントラネット内のDNSやNGN内のDNS検索)には、プロファイルによる設定が必要なため、2️⃣で設定することとした。
ipsec.confのleft側パラメータをサーバ(WZR-HP-G300NH)側とし、right側パラメータを端末(iPhone/Mac/Windows)側として設定した。
iOS/OSXでは、IKE接続認証方式をオプション選択できる。「共有鍵方式」「公開鍵方式」「EAP-TLS方式」「EAP Id/Password」が選択できる。「共有鍵方式」以外の(あ)「EAP Id/Password方式」(い)「公開鍵方式」(う)「EAP-TLS方式」について接続確認した。

「/etc/ipsec.conf」の設定で(あ)(い)(う)に共通の設定値は、「conn %default」セクションに設定、(あ)の設定値は、「conn eap-id-passwd」セクションに設定、(い)「公開鍵方式」の設定値は、「conn publiccert」セクションに設定、(う)「EAP-TLS方式」の設定値は、「conn eap-tls」セクションに設定した。(い)(う)のユーザ指定接続許可設定は、「-user-番号」を付加して識別設定した。

(あ)(い)(う)に共通設定
---=== /etc/ipsec.conf ===---
# ipsec.conf - strongSwan IPsec configuration file

# basic configuration
config setup
	# strictcrlpolicy=yes
	# uniqueids = no
	##認証時ログを詳細にする設定を追加
	charondebug="ike 2"

# Add connections here.
conn %default
	keyexchange=ikev2
	##iOS設定アプリは、ikeにDH group2(modp 1024)、OSXには、desが必須との事で追加。Win7にも対応。
	##iOSアプリ設定から接続できなかったのでコメントアウト。
	#ike=aes256-sha256-modp2048,aes256-sha1-modp1024,aes128-sha1-modp1024
	# ,3des-sha1-modp1024
	#esp=aes256-sha256,aes256-sha1,3des-sha1
	##Win10には必要。多分WIN7も(レジストリ設定でも可)
	##HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters
	## \NegotiateDH2048_AES256=(DWORD)1
	ike=aes256-sha1-modp1024,aes128-sha1-modp1024
	esp=aes256-sha1
	auto=add
	left=%any
	leftauth=pubkey
	#イントラネット内のネットワークを定義。
	#IPv4は、192.168.[1,11,12,13].0/24を使用中
	#IPv6は、PR-S300SEがDHCPv6で「2409:10:XXXX:YY00::/56」を得る
	#「2404:1a8::/32」は、NGN内の各種サービス提供されるネットワーク
	leftsubnet=192.168.0.0/20,2409:10:XXXX:YY00::/56,2404:1a8::/32
	#(4)で作成したサーバ証明書(/etc/ipsec.d/certsに配置)
	leftcert=srv-pub.pem
	#(4)で作成したサーバ証明書のSAN(属性:DNS)
	leftid=@vpn.v6.AAAAAAAA.mydns.jp
	#ここから端末側の定義
	right=%any
	#端末接続時に設定されるIPv4とIPv6アドレス範囲
	rightsourceip=192.168.13.0/24,2409:10:XXXX:YY20::13:0/120
	#OpenWrt化WZR-HP-G300NH上のdnsmasqを指定
	rightdns=192.168.12.1,2409:10:XXXX:YY20::12:1
	#---ここまで(あ)(い)(う)で共通


(あ)「EAP Id/Password方式」の設定
#-- EAP Id/Password方式の設定
#-- ipsec.confの共通部分
#-- EAP Id/Password方式の設定
conn eap-id-passwd
	rightauth=eap-mschapv2
	eap_identity=%any

---=== /etc/ipsec.secrets ===---
: RSA srv-key.pem "秘密鍵暗号化パスワード"
user1 : EAP "user1パスワード"
user2 : EAP "user2パスワード"
user3 : EAP "user3パスワード"


(い)「公開鍵方式」の設定
#-- ipsec.confの共通部分
#-- 公開鍵方式の設定

#「rightid」を指定しないとiPhoneで設定された「LocalIdentifier」が「emailかNTprincipal属性」で「user@fqdn」の値であれば全て認証される。特定の証明書とID以外接続許可しないように有意な「rightid」を指定するのが良い。
#conn publiccert
#	rightauth=pubkey

#「someone@white.plala.or.jp」がユーザ証明書のSANでemail属性かNTprincipal属性であれば認証される
conn publiccert-user10
	rightauth=pubkey
	rightid=someone@white.plala.or.jp

#「NTprincipal属性」でも「someone@FAMILYNAME」では、認証されない。「someone@FAMILYNAME.jp」などとすると認証される
conn publiccert-user20
	rightauth=pubkey
	rightid=someone@FAMILYNAME

#「userID属性」で「someone」は認証されない。「userID属性」で「someone@white.plala.or.jp」も認証されない。
conn publiccert-user30
	rightauth=pubkey
	rightid=someone

#端末側LocalIdentifierにDNが設定され、rightidにDNが指定されても、されていなくても認証されない。
#windows10では、DNを指定する必要がある。指定なしでは接続できない。
conn publiccert-user40
	rightauth=pubkey
	rightid="C=JP, ST=TOKYO, O=FAMILYNAME, OU=FAMILY, CN=Firstname LASTNAME"


(う)「EAP-TLS方式」の設定
#-- ipsec.confの共通部分
#-- EAP-TLS方式の設定
#「rightid」を指定しないとiPhoneで設定された「LocalIdentifier」が「emailかNTprincipal属性」で「user@fqdn」の値であれば全て認証される。特定の証明書とID以外接続許可しないように有意な「rightid」を指定するのが良い。端末側のLocalIdentifierがDN指定されている場合、EAP-TLS方式では、「rightid」が指定されていない場合、認証される。「公開鍵方式」と異なる。
#conn eap-tls
#	rightauth=eap-tls
#	eap_identity=%any

#「rightcert」設定は無くても認証される。指定した場合は、DNやSANの一つがrightidに指定されないと設定エラーになる
conn eap-tls-user100
	rightauth=eap-tls
	eap_identity=%any
	rightcert=user100.pem
	rightid=someone@white.plala.or.jp

#公開鍵方式と同様に「NTprincipal属性のsomeone@FAMILYNAME」は認証されない。「someone@FAMILYNAME.jp」であれば認証される。トップドメインだけの場合fqdnとして認められないようだ。。。
conn eap-tls-user200
	rightauth=eap-tls
	eap_identity=%any
	rightid=someone@FAMILYNAME

#userID属性は、認証されない
conn eap-tls-user300
	rightauth=eap-tls
	eap_identity=%any
	rightid=someone

#strongSWAN 5.6.3でDNは認証されない。認証されると書かれたサイトもあるようだがSANにCN値定義されていた。fqdnで無いSANで認証されるか不明
conn eap-tls-user400
	rightauth=eap-tls
	eap_identity=%any
	rightid="C=JP, ST=TOKYO, O=FAMILYNAME, OU=FAMILY, CN=Firstname LASTNAME"

「/etc/ipsec.conf」の設定で共通設定部分を「conn」で定義し、「also=」で組込むと条件により意図しない動作となることがある。ユーザ毎の「conn」設定にマッチしないと共通設定部の「conn」設定とシステムデフォルト定義の内容で接続される事が発生した。
「%default」共通設定と(あ)(い)(う)方式の設定を混在しても適切に接続する。現在3方式で設定をし、クライアント側の方式を選択して接続している。

(7)iOS/macOSX用のプロファイル設定
IKEv2 Configuration Profile for Apple iOS 8 and newer」にプロファイル設定の詳細が記述されている。(あ)(い)(う)に対応するProfile設定の相違点が記載され、それぞれのProfile例が上記()()()に相当する。

iPhone構成ユーティリティのシュミレート」で生成されるプロファイルと同様に、「一般」ペイロードとその「PayloadContents」に「array」で記載される「資格情報(証明書類)」と「VPN」ペイロードを記載する。

一般ペイロード部


<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>PayloadContent</key>
	<array>
	#-- 資格情報 上記(い)(う)に必要 --
	#-- VPN情報 --
	</array>
	<key>PayloadDescription</key>
	<string>IKEv2 IPv6 VPN to the HOME
split DNS(familyname/flets-east.jp)</string>
	<key>PayloadDisplayName</key>
	<string>VPN IKEv2</string>
	<key>PayloadIdentifier</key>
	<string>familyname.openwrt.strongswan.ikev2.vpn-0001</string>
	<key>PayloadOrganization</key>
	<string>strongSWAN-IKE-V2-VPN</string>
	<key>PayloadRemovalDisallowed</key>
	<false/>
	<key>PayloadType</key>
	<string>Configuration</string>
	<key>PayloadUUID</key>
	<string>12345678-9ABC-DEF1-2345-6789ABCDEF12</string>
	<key>PayloadVersion</key>
	<integer>1</integer>
</dict>
</plist>


資格情報部
(5)で生成した「ユーザー証明書」の公開鍵と秘密鍵を「PKCS12」で格納し、base64化したデータ。「iPhone構成ユーティリティーのシュミレート」を参照。(あ)「EAP Id/Password方式」の場合は、設定不要。ユーザー証明書を発行した「Private Network CA」の公開鍵は、別途iPhoneにインストールし信頼させて置く必要がある。

	<dict>
	# PKCS12格納用パスワードを設定するとインストール時にパスワードを入れる必要が無くなる。但し、構成プロファイルの暗号化でパスワードが読み取られるのを防ぐ必要がある。設定しない場合は、インストール時にパスワード入力が求められる。
		<key>Password</key>
		<string></string>
		<key>PayloadCertificateFileName</key>
		<string>FirstnameLastname-SAN-usr-cert.p12</string>
		<key>PayloadContent</key>
		<data>
		MIILHgIBAzCCCuQGCSqGSIb3DQEHAaCCCtUEggrRMIIKzTCCBU8G
		CSqGSIb3DQEHBqCCBUAwggU8AgEAMIIFNQYJKoZIhvcNAQcBMBwG
               ---=== 省略 ===---
		DgMCGgUABBQvuMrxinQH2kD8O1lKQcHMc4s7wQQIZxDh0aNJrB8C
		AggA
		</data>
		<key>PayloadDescription</key>
		<string>PKCS#12 フォーマット証明書</string>
		<key>PayloadDisplayName</key>
		<string>FirstnameLastname-SAN-usr-cert.p12</string>
		<key>PayloadIdentifier</key>
		<string>com.apple.security.pkcs12.12345678-9ABC-DEF1-2345-6789ABCDEF14</string>
		<key>PayloadType</key>
		<string>com.apple.security.pkcs12</string>
		<key>PayloadUUID</key>
		<string>12345678-9ABC-DEF1-2345-6789ABCDEF14</string>
		<key>PayloadVersion</key>
		<integer>1</integer>
	</dict>


VPN情報部
「AuthenticationMethod」,「ExtendedAuthEnabled」,(「AuthName」「AuthPassword」)or「PayloadCertificateUUID」の設定値により(あ)「EAP Id/Password方式」(い)「公開鍵方式」(う)「EAP-TLS方式」となる。(あ)では、「AuthName」「AuthPassword」を設定するが、(い)(う)では、資格情報「PayloadUUID」値の「12345678-9ABC-DEF1-2345-6789ABCDEF14」を「PayloadCertificateUUID」に設定する。「LocalIdentifier」は、証明書内に複数のSANが定義されている場合、特定のSANを指定し、strongSWAN側設定と共に特定のユーザーだけ接続する事を許可する事が出来る。「LocalIdentifier」の指定は、「email」「NTプリンシパル名」は、有効に機能したが、「DN」と「ユーザID」は、機能しなかった。








(あ)Id-Pass(い)Pubkey(う)EAP-TLS
AuthenticationMethodNoneCertificateCertificate
ExtendedAuthEnabledtruefalsetrue
AuthNameuser1X(未設定)X(未設定)
AuthPassworduser1のパスワードX(未設定)X(未設定)
PayloadCertificateUUIDX(未設定)(資格情報PayloadUUID)(資格情報PayloadUUID)
LocalIdentifier-指定指定


	<dict>
		<key>IKEv2</key>
		<dict>
			<key>AuthenticationMethod</key>
			<string>None</string>
			<key>ChildSecurityAssociationParameters</key>
			<dict>
				<key>DiffieHellmanGroup</key>
				<integer>14</integer>
				<key>EncryptionAlgorithm</key>
				<string>AES-256</string>
				<key>IntegrityAlgorithm</key>
				<string>SHA2-256</string>
				<key>LifeTimeInMinutes</key>
				<integer>1440</integer>
			</dict>
			<key>DeadPeerDetectionRate</key>
			<string>Medium</string>
			<key>DisableMOBIKE</key>
			<integer>0</integer>
			<key>DisableRedirect</key>
			<integer>0</integer>
			<key>EnableCertificateRevocationCheck</key>
			<integer>0</integer>
			<key>AuthName</key>
			<string>user1</string>
			<key>AuthPassword</key>
			<string>user1のパスワード</string>
			<key>EnablePFS</key>
			<integer>0</integer>
			<key>ExtendedAuthEnabled</key>
			<true/>
			<key>IKESecurityAssociationParameters</key>
			<dict>
				<key>DiffieHellmanGroup</key>
				<integer>14</integer>
				<key>EncryptionAlgorithm</key>
				<string>AES-256</string>
				<key>IntegrityAlgorithm</key>
				<string>SHA2-256</string>
				<key>LifeTimeInMinutes</key>
				<integer>1440</integer>
			</dict>
			<key>LocalIdentifier</key>
			<string></string>
			<key>RemoteAddress</key>
			<string>vpn.v6.AAAAAAAA.mydns.jp</string>
			<key>RemoteIdentifier</key>
			<string>vpn.v6.AAAAAAAA.mydns.jp</string>
			<key>ServerCertificateCommonName</key>
			<string>Openwrt.familyname</string>
			<key>ServerCertificateIssuerCommonName</key>
			<string>Private Network CA</string>
			<key>UseConfigurationAttributeInternalIPSubnet</key>
			<integer>0</integer>
		</dict>
		#イントラネット宛てIPは、VPN経由。それ以外は、VPNを経由しない設定。
		<key>IPv4</key>
		<dict>
			<key>OverridePrimary</key>
			<integer>0</integer>
		</dict>
		<key>PayloadDescription</key>
		<string>VPN 設定</string>
		<key>PayloadDisplayName</key>
		<string>VPN</string>
		<key>PayloadIdentifier</key>
		<string>com.apple.vpn.managed.12345678-9ABC-DEF1-2345-6789ABCDEF13</string>
		<key>PayloadType</key>
		<string>com.apple.vpn.managed</string>
		<key>PayloadUUID</key>
		<string>12345678-9ABC-DEF1-2345-6789ABCDEF13</string>
		<key>PayloadVersion</key>
		<integer>1</integer>
		#「familyname」と「felts-east.jp」ドメインは、指定のDNSを使用するよう設定。
		<key>DNS</key>
		<dict>
			<key>ServerAddresses</key>
			<array>
				#イントラネット内のDNSサーバを指定する。
				<string>192.168.12.1</string>
				<string>2409:10:XXXX:YY20::12:1</string>
			</array>
			<key>DomainName</key>
			<string>familyname</string>
			<key>SearchDomains</key>
			<array>
				<string>familyname</string>
				<string>flets-east.jp</string>
			</array>
			<key>SupplementalMatchDomains</key>
			<array>
				<string>familyname</string>
				<string>flets-east.jp</string>
			</array>
		</dict>
		<key>Proxies</key>
		<dict>
			<key>HTTPEnable</key>
			<integer>0</integer>
			<key>HTTPSEnable</key>
			<integer>0</integer>
		</dict>
		<key>UserDefinedName</key>
		<string>IKEv2 VPN to the HOME</string>
		#iPhoneのVPN接続アプリで「UserDefinedName」の補足として記述。
		#(あ)「strongSWAN-ID-PASS」、(い)「strongSWAN-publickey」、(う)「strongSWAN-EAP-TLS」
		<key>PayloadOrganization</key>
		<string>strongSWAN-ID-PASS</string>
		<key>VPNType</key>
		<string>IKEv2</string>
	</dict>


(8)Windows10接続設定
Windows端末の設定を参考に、(4)の「Private Network CA」の公開鍵は、「certlm.msc」を起動し、「ローカルコンピュータ」「信頼されたルート証明機関」に「操作」「すべてのタスク」「インポート」で設定した。
(5)のユーザ証明書は、(い)公開鍵方式による接続の場合は、「ローカルコンピュータ」「個人」に「.p12/.pfx」ファイルで秘密鍵と共にインストールした。
(う)EAP-TLS方式では、「certmgr.msc」を起動し、「現在のユーザ」に(4)(5)の証明書をインストールした。
IKEv2接続設定は、「設定」「ネットワークとインターネット」「VPN」から設定した。

(9)iOS/macOSX接続結果
(あ)「Id-Password方式」は、比較的容易にユーザを識別してVPN接続が可能だが、サーバ側とクライアント側に平文のパスワード設定が必要となる。iOS/OSX構成プロファイルを暗号化する必要があると思う。イントラネット接続用と考えると選択し易い。
(い)(う)では、サーバ側の設定により「個別ユーザ」を識別せず、有効な証明書が提示されると接続されてしまう。「/etc/ipsec.conf」のコメントアウト部「conn publiccert」や「conn eap-tls」のような「ユーザを指定しない設定」を避ける必要があると思う。
(う)「EAP TLS方式」では、strongSWANのEAPを使用したため、ユーザ認証設定がよく判らなかった。「/etc/ipsec.conf」の「rightcert」と「rightid」が適正でないとsystemlogにエラーが記録され接続定義が有効にならない。「rightcert」設定が無くても認証される。「/etc/ipsec.secrets」で設定出来れば直感的な気がする。外部RADIUSサーバを使えば、このような判り難さが解消されると思う。家庭内LANへのVPN接続では、「公開鍵方式」でもユーザ指定できるので良いかと思う。

IPv6経由でIKEv2 VPN接続によりstrongSWANからイントラネット内のIPv4(192.168.13.1-254)とIPv6アドレス(2409:10:XXXX:YY20::13:1-254)が設定される。IPv6-testで確認するとAEONモバイル(IIJ)のインターネット経由で接続されている事が判る(iPhoneのOverridePrimary=0設定が機能している)。


イントラネット内のDS-216Jサーバにイントラネット内FQDNでアクセスするとVPN経由でイントラネット内のIPv6で接続される。同じサーバのIPv4アドレスで接続すると接続元のアドレスがstrongSWANのIPv4アドレスとなっている。NATされているようだ。

NATの状況を調べてみると、「OpenWrt」インターフェースの「PlalaV4」マスカレード設定が作用しているようだ。「PlalaV4」IPv4 PPPoE接続が「断」されていても「WAN」が利用されない。「WAN」と「PlalaV4」をブリッジ設定するとNATされないようだ。要調査。

ぷららのIPv4 PPPoE接続側へアクセスするとキャリアからアサインされたIPv4アドレスからインターネット経由で接続された事が判る。MyDNS DDNSに設定したIPv6アドレスで接続するとイントラネットIPv6アドレスでVPN経由接続された事が判る。


NGN側のサービス情報サイトへVPN経由で接続され、速度確認も出来る。


イントラネット内のNVR500の管理画面に接続。

設計通りイントラネット内へのアクセスだけIKEv2 VPNで接続している事が確認出来た。
NVR500のhttpアクセス許可設定の初期値が接続されたnetwork lanになっている。NATされている場合は、問題ないが、IKEv2接続端末に設定される仮想ネットワーク「192.168.13.0/24」が許可されずに接続できない。「NVR500」に「httpd host 192.168.1.0-192.168.1.255 192.168.11.0-192.168.13.255 2409:10:XXXX:YY00::-2409:10:XXXX:YY20:FFFF:FFFF:FFFF:FFFF」を設定し、イントラネット内からの接続を許可した。

macOSX SierraをiPhone6SのWiFiでテザリング接続し、IKEv2接続。


IPv6-testで接続状態を確認


イントラネット内のDNSでDS-216Jサーバにイントラネット内FQDNで接続。イントラネットのIPv6アドレスからの接続を確認。


DS-216JのIPv4アドレスで接続。strongSWANのIPv4アドレスから接続された事が確認出来る(NATされている)。


ぷららのIPv4 PPPoE接続のIPv4インターネット接続。AEONモバイル(IIJ)のIPv4アドレスで接続された事を確認。


インターネットのIPv6/IPv4対応のサーバに接続。AEONモバイルのIPv6アドレスで接続された事を確認。


DS-216JのIPv6アドレスへインターネット経由で接続。イントラネット内のIPv6アドレスから接続された事を確認。

設計通りイントラネット内へのアクセスだけIKEv2 VPNで接続している事が確認出来た。

macOSX Sierra上にParallels Desktop仮想サーバでWindows10 homeを稼働している。Windowsアプリをcoherent機能で稼働させるが、VPN接続されていないため、Windowsアプリからイントラネット内へ接続出来ない。WindowsからもIKEv2 VPN接続を同時に行う必要がある。

(10)Windows10接続結果
Windowsでは、「Windows Clientの接続設定」に従い、「ike=aes256-sha1-modp1024,aes128-sha1-modp1024」と「esp=aes256-sha1」を加えるか、レジストリーに「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters\NegotiateDH2048_AES256=(DWORD)1」を加える必要があった。
(い)公開鍵方式では、証明書を「local machine」に設定する必要があり、そのWindowsにログインするユーザ(admin権限必要)から誰でも使用する事が出来てしまう。(う)EAP-TLSでは、ユーザアカウントに証明書を設定するが「この拡張認証プロトコルで使用できる証明書が見つかりませんでした。」で起動しない。証明書の「Basic constrains」、「Key usage」「Extended Key Usage」の「critical」属性を外したり、「EKU OID=1.3.6.1.4.1.311.10.12.1 (全てのアプリケーションポリシー)」を加えてみたが証明書を見つける事が出来なかった。どうも「別のキースペース」を探しているようだ。。。もしかすると「Windows Home」では使えないという事???
「Windows7 pro」からもEAP-TLSで接続できない。「Windows Home」の問題では無さそう。

IKEv2 VPN接続後、指定されたネットワーク「192.168.0.0/20」、「2409:10:XXXX:YY00::/56」と「2404:1a8::/32」をVPNインターフェース経路へ設定しないためイントラネット内へアクセスできない(strongSWANの仮想ネットワーク「192.168.13.0/24」への経路が設定されるだけのため)。このページの「Bugs & Features」で指摘されたWindows10のVPNアダプタ・プロパティの「ネットワーク」「インターネット プロトコル バージョン4/6」の「プロパティ」「詳細設定」で「リモートネットワークでデフォルトゲートウェイを使う」にチェックを入れ、「iOS/OSXのOverride Primaryを有効にする」のと同じ状態にしてみた。指摘通りIPv4は、有効になったが、IPv6は、有効にならなかった。

証明書(ローカルコンピュータ鍵管理)を使用した接続


EAP-MSCHAPv2によるユーザID/パスワードによる接続


EAP-TLSは、証明書が見つけられない。。。


iPhone6SのWiFiテザリング接続し、AEONモバイル(IIJ)経由でIPv6 IKEv2 VPN接続後のipconfig状態


IPv4経路情報。デフォルトルートがVPNインターフェース側に設定されている。strongSWANで指定したネットワークは、設定されない。


IPv6経路情報。デフォルトルートがVPNインターフェース側に設定されない。インターネット側に向いている。VPNインターフェース側にIPv6デフォルトルートを追加設定すると、イントラネット内へのIPv6接続ができるが、インターネットへの接続ができなくなる。


イントラネット内のFQDN(FAMILYNAMEドメイン)を解決するDNSは、接続時にstrongSWANから指定される(192.168.12.1/2409:10:XXXX:YY20::12:1)。IPv6経路情報にホストルートでゲートウェイがインターネット側のリンク・ローカル・インターフェース生成されている。「nslookup」を行うと名前解決できない。「ping」や「tracert」「http」などのリゾルバーは、イントラネット内のDNSを使用しているようだ(名前解決できる)。不思議?。

「split DNS」として「FAMILYNAME」ドメインと「felts-east.jp」ドメインの検索は、VPN側のDNSが使用されるようにしたいのだが、どうしたら良いのか?
「VpnConnectionTriggerDnsConfiguration」の設定で実現しそうだが、Windows10で機能がオフされているようだ。
イントラネット内のDNSは、イントラネット内ドメインとNGNから指定されたDNSへリンクされているので名前解決に不都合は無い。

Windows10の「split tunneling」を設定する(iOS/OSXのOverRidePrimary=0)。
「インターネット プロトコル バージョン4/6」の「プロパティ」「詳細設定」で「リモートネットワークでデフォルトゲートウェイを使う」のチェックを外す(Windows10からデフォルト設定)
PowerShellのコマンドレッドで接続時に「SplitTunneling」の「経路情報」を設定する
「Split Tunneling」が有効なことを確認する。


必要な経路を設定する(「-PassThru」を付けないと処理結果が表示されない)




設定したルートを確認する

VPN接続すると設定した経路情報がセットされ、「iOS/OSXのOverRidePrimary=0」設定と同じ動作になる。

IKEv2接続後のIPv4経路情報

「192.168.15.255」ブロードキャスト経路は、「192.168.0.0/255.255.240.0」ネットワークのブロードキャストアドレス。

IKEv2接続後のIPv6経路情報


WindowsでもiOS/macOSXと同様にイントラネット内へ接続できるようになった。
「OnDemand」接続設定が出来れば便利そうでだ。要調査。


(11)ぷららIPv6 IPoE経由のIKEv2 VPN接続について
ホテルの無料WiFiから接続を試みたが、IKEv2接続出来なかった。IPv6-testで確認してみるとWiFiのIPv6がサポートされていない。

昨年末のニュースなどでFree WiFiのIPv6対応を推進する事が報道されていた。期待。
同時にメールサーバのIPv6化もお願いしたい。

関連事項
StrongSwan IKEv2 VPN over IPv6 with iOS/macOSX/Win10 (IKE設定)
StrongSwan IKEv2 VPN over IPv6 with Win10 (Split DNS設定)
StrongSwan IKEv2 VPN over IPv6 with iPhone(iOS VPNアプリ設定接続)
StrongSwan IKEv2 VPN接続とINTERNAL_DNS_DOMAIN設定
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする