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 […]