IKEv2、公開鍵認証、仮想IP使用、Roadwarriorシナリオ。
スマホはAndroid版アプリを使用して接続する。
ネット上にstrongSwanの使い方が載ってる記事は結構あるけど、strokeを使う古い方法のものが多かったので、viciを使った方法で書いてみた。
strongSwanには、モダンなインターフェースである「vici」と、 古いインターフェースである「stroke」の2つのインターフェースが用意されている。現在はviciの方が好ましい(preferred)とされている。
後で時間があれば、クライアントがPCの場合とか、証明書の作成方法とか、もっと詳しく書いていきたいな。
構成図
こんな感じかな?ルーターの内側にVPNゲートウェイがある形。
VPNゲートウェイを通ってLAN内のサーバーやNASにアクセスできるようになる。
LAN内に何台もサーバーやNASがあって、インターネットからSSH等で管理したい時に、ルーターで個別に管理用のポートを開放するよりも、シンプルで安全。
ちなみに私はRaspberry Pi 4でVPNゲートウェイを動かしてます。

設定ファイル(/etc/swanctl/swanctl.conf)
connections {
ikev2 {
version = 2
pools = pool
local {
#認証に使うサーバー証明書のFQDNを指定
#証明書のsubject Distinguished Name、subject Alternative Nameと一致する必要がある
id = example.com
#サーバー証明書のファイル名を指定。/etc/swanctl/x509/配下の相対パスか、絶対パスで指定
certs = server-cert.pem
auth = pubkey
}
remote {
auth = pubkey
}
children {
child {
local_ts = 0.0.0.0/0,::/0
}
}
}
}
pools{
pool{
#使用する仮想IPのアドレス範囲を指定
addrs = 192.168.20.0/24
#使用するDNSサーバーを指定
dns = 192.168.1.1
}
}
証明書の作成と配置
CA証明書、サーバー証明書、クライアント証明書を作成する。strongSwan付属のipsecコマンドを使うと割と簡単にできる。詳しい作成方法はArchWikiとかにあります。
作成したファイルのうち、CA証明書、サーバーの秘密鍵、 サーバー証明書を下記ディレクトリに配置する。
CA証明書…/etc/swanctl/x509ca/ サーバーの秘密鍵…/etc/swanctl/private/ サーバー証明書…/etc/swanctl/x509/
ファイアウォール/NATの設定
UDPのポート番号500、4500を開放し、VPNゲートウェイ(192.168.1.254)へフォワーディングする。
クライアントの設定
ServerにサーバーのFQDNかIPアドレスを入力。
VPN Typeは「IKEv2 Certificate」を選択。
User Certificateの「INSTALL USER CERTIFICATE」でクライアント証明書をインストールする。PKCS#12形式にしておくと良いでしょう。
CA certificateはSelect automaticallyにチェックを入れる。
1 個のping
[…] https://chasethecore.run/?p=2818 […]