IKEv2-VPN
PyHack Conference 2023/06/17
@shimizukawa
2009/06/06 (土) @タイムインターメディア
(第0回)Zope/Plone開発勉強会
少々お待ちください
免責事項
・イベント当日のスライドを公開用に
調整しました
おまえ誰よ
● Python mini-hack-a-thon 主催運営(2009~)、フード・ドリンク担当
● 書籍執筆・翻訳
● Spninx関係
● 一般社団法人PyCon JP Association 会計理事
○ PyCon JP 年次イベントの見守り
○ Python Boot Camp 主催
● BeProud IT Architect
○ 受託開発(Webアプリ / 機械学習 / 数理最適化)
○ 自社サービス( connpass / PyQ / TRACERY)
○ Python研修(Python基礎、Django、Pandas、その他)
4
@shimizukawa (清水川)
1版: 2010/5/28
2版: 2018/2/26
3版: 2021/7/30
1版: 2013/09/12
2版: 2017/10/20
3版: 2022/03/24
2018/02/23
2020/02/27
1版: 2012/03/27
2版: 2015/02/27
3版: 2018/06/12
書籍の執筆・翻訳
5
年
2022/08/26
4版: 2023/07/2x
リモートtorne視聴
● うちではnasneで録画してtorneで観ています
● torneはリモート視聴がありますが・・
● 3か月ごとにローカルネットワークでのアクティベーションが必要
○ ARIB TR-B14 6.6 で承認された、放送受信時のIP伝送規格 DTCP-IP で規定
○ DTCP-IP 運用規定
■ 「クライアントの数は最大8個」
■ 「同一のサブネットに限定」
● 今回は、事情により3か月以上nasneから離れます
● では、生活拠点とnasneとを同一サブネットにしてしまえば!
● そこで、VPNを構築することにしました
2009/07/11 (土) @TIM
(第1回)Zope/Plone開発勉強会
少々お待ちください
VPN方式: Client VPNと拠点間VPN
● VPNといえばServer-Client方式とSite-to-Site方式があります
● 今回nasneに接続するtorneクライアントはAndroid/Google TVアプリ
● このため、クライアント接続ではなく、Site-to-Site方式でいきます
● でも、MacやWindowsを直接VPN接続もしたい
● このため、VPNサーバーはSite-to-SiteとServere-Client両対応で設定します
● VPNにはインフラによって、IP-VPNやインターネットVPNなどがあります
● 今回は、どのご家庭にもあるインターネットを利用します
用意するもの
● nasne拠点
○ 日本国内で、テレビの電波が入る場所
● インターネット回線
○ 光インターネット
○ FITELwave AG20F (ルーター機能が無いやつ)
● VPNサーバー
○ Mikrotik RouterBOARD hEX lite 5
○ US Amazonで$42.24、送料$12.36 (約7600円)
VPNの種類
今回は、インターネットVPNの方式として、IPSecを使用します
(インターネットVPN = ご家庭のインターネット契約で使えるVPN)
ほかにもいろいろあります
● CISCO
● OpenVPN
● WireGuard
IPSecの種類
IPSecといっても、IPSecだけ使うのではなく。
IPSecレイヤーで暗号化し、上位レイヤーでトンネリングするのが一般的です。
● PPTP/IPSec
○ Point-to-Point Tunneling Protocol
● SSTP/IPSec
○ Secure Socket Tunneling Protocol
● L2TP/IPSec
○ Layer 2 Tunneling Protocol
● IKEv2/IPSec
○ Internet Key Exchange version 2
IPSecはレイヤー3
IPsecはOSI参照モデルにおける
「ネットワーク層(第3層)」
において暗号化を行っています。
そのため、上位層である「トランスポー
ト層」や「アプリケーション層」が暗号
化に対応していなくても、下位層である
「ネットワーク層」が暗号化しているた
め、より安全に通信を行うことができま
す。
一方で、ファイアウォールと相性が悪い
というデメリットもあるので注意が必要
です。
OSI参照モデル 名称
第7層 (HTTP, HTTPS, ...) アプリケーション層
第6層 (SMTP, ...) プレゼンテーション層
第5層 (SSL, TLS, ...) セッション層
第4層 (TCP, UDP, ESP,
GRE, ...)
トランスポート層
第3層 (IP, ICMP, ARP, ...) ネットワーク層
第2層 (Ethernet, PPP, ...) データリンク層
第1層 (ケーブル種類...) 物理層
IPSecの認証方式
認証方式もいろいろあります
端末認証
● PSK - Pre Shared Key
○ 事前共有鍵。鍵の漏洩に弱い
● RSA - 証明書認証
○ 証明書の配布と、端末へのインストールが必要
ユーザー認証
● MSCHAPv2 - Microsoft Challenge-Handshake Authentication Protocol
○ 脆弱性があり使用すべきではないが、経路の暗号化を前提に使われている
VPNクライアント毎の対応
クライアント方式の場合、OSによって対応が異なります
● Windows11: PPTP SSTP L2TP IKEv2
● macOS 13: L2TP IKEv2
Cisco
● Android ~11: L2TP IKEv2(?)
● Android 12~:
IKEv2
● ChromeOS: L2TP IKEv2
OpenVPN, WireGuard
拠点間VPN: IKEv2/IPSec over GRE
● GRE
○ Generic Routing Encapsulation
○ IPプロトコル 47
○ Layer3トンネリング
● IKEv2/IPSec over GRE
○ GREトンネルにIPSecを通す
● 詳しくは
○ MikroTikの公式
○ IPsec - RouterOS
- MikroTik Documentation
torne on GoogleTV
日本側
海外側
● IPSec
○ UDP 500, 4500
○ Layer3トンネリング
● IKEv2/IPSec
○ IPSecでトンネルして暗号化
○ IKEv2プロトコルで通信
● 詳しく
クライアントVPN: IKEv2/IPSec
torne on Android
日本側
海外側
ca
RSA
/certificate
add common-name=ca name=ca
sign ca ca-crl-host=2.2.2.2
/certificate
add common-name=2.2.2.2 subject-alt-name=IP:2.2.2.2 key-usage=tls-server name=server1
sign server1 ca=ca
profile
/ip ipsec profile
add name=ike2
proposal
/ip ipsec proposal
add name=ike2
pool
/ip pool
add name=ike2-pool ranges=192.168.77.2-
192.168.77.254
mode-config
/ip ipsec mode-config
add address-pool=ike2-pool address-prefix-length=32 name=ike2-conf
group
/ip ipsec policy group
add name=ike2-policies
policy
/ip ipsec policy
add dst-address=192.168.77.0/24 group=ike2-policies proposal=ike2 src-
address=0.0.0.0/0 template=yes
peer
/ip ipsec peer
add exchange-mode=ike2 name=ike2 passive=yes profile=ike2
identity
/ip ipsec identity
add auth-method=digital-signature certificate=server1 generate-policy=port-strict
mode-config=ike2-conf peer=ike2 policy-template-group=ike2-policies
IPSec Protocol = esp
Phase2、sha1, sha256 / aes128, aes256 / PFS Group=none
Windows: sha1のみ
Mac: 組合せ少ない
Phase1、sha256 / aes128, aes256 / modp1024,1536,2048,ecp256
Windows: modp1024のみ
Mac: 組合せ少ない
Exchange Mode = ike2
Auth method = digital-signature
IKEv2/IPSec RSA
設定値は 公式doc より
〇数字は解決順、→は依存方向
1
1
2
3
4
5
6
8
7
9
2010/09/25 (土) @ Nexedi
(第1回)Python mini Hack-a-thon
少々お待ちください
で、torneは使えたのか?
結論
VPN経由でのnasneペアリングは、論理的に可能、しかし
物理的に不可能でした
DTCP-IP の壁
● 「クライアントの数は最大8個」
● 「同一のサブネットに限定」
○ VPN構築で論理的に1つにできる
DTCP-IP の壁
● 「クライアントの数は最大8個」
● 「同一のサブネットに限定」
○ VPN構築で論理的に1つにできる
● 「TTLが3以下」
○ 経由ルーター数。VPNでOK
● 「RTTが7ms以下」
○ RTT=往復レイテンシ
○ 7msは無理!
○ 詳しくは "RTT 7ms" で検索!
See You PyCon APAC 2023!

IKEv2-VPN PyHackCon2023