VPN(IKEv2)サーバーの設定(strongswan5.7以前/5.8以降で旧設定)

ALL
スポンサーリンク

VPN(IKEv2)サーバの CentOS7/RockyLinux8/9,AlmaLinux8/9 での構築方法です。
strongswan5.7以前(または5.8以降で旧設定の場合)の設定です。
strongswan5.8以降の場合は、次の記事を参照してください。

VPN(IKEv2)サーバーの設定(strongswan5.8以降) – パソコン鳥のブログ

本記事での設定で、WindowsではVPNの種類でIKEv2を選択、AndroidではタイプIKEv2/IPSec MSCHAPv2 を選択で接続できるようになります。

スポンサーリンク

ここで構築するVPN

・VPNサーバは CentOS7,RockyLinux8/9,AlmaLinux8/9
・VPNサーバーに Let’s Encryptの証明書を導入済み
・VPNクライアントのアドレスは 192.168.11.128-192.168.11.254 の範囲から割り振る
・VPN接続後、クライアントの全ての通信は VPNサーバ経由で行われます。
・VPN接続用ユーザ/パスワードは、サーバ側のファイルで指定
・VPNクライアント同士の相互アクセス可/不可は、いずれもファイアウォールの設定(記事中に説明あり)で対応できます。
・Windows,スマホ(Android)からVPNサーバーへ接続可能(iOSは未確認です)。WindowsではVPNの種類でIKEv2を選択、AndroidではタイプIKEv2/IPSec MSCHAPv2 を選択で接続

必要パッケージのインストール

必要パッケージをインストールします。

yum install epel-release
yum --enablerepo=epel install strongswan

ipsec.confの設定

Let’s Encrypt の証明書へのリンクを張ります。
[サーバーのFQDN] の箇所は、各自の環境に合わせてください。

ln -s /etc/letsencrypt/live/[サーバーのFQDN]/privkey.pem /etc/strongswan/ipsec.d/private/privkey.pem
ln -s /etc/letsencrypt/live/[サーバーのFQDN]/fullchain.pem /etc/strongswan/ipsec.d/certs/fullchain.pem
ln -s /etc/letsencrypt/live/[サーバーのFQDN]/chain.pem /etc/strongswan/ipsec.d/cacerts/chain.pem

次の内容で、/etc/strongswan/ipsec.conf を作成します。
leftid = の箇所で、VPNサーバーのFQDN を記述してください。
rightdns = の箇所で、VPN接続時にVPNクライアントが参照するDNSサーバーを指定します。このDNSサーバーはVPNサーバーから参照できる必要があります。ここでは 8.8.8.8, 8.8.4.4 にしています。

config setup

conn %default
   ike=aes128-sha256-ecp256,aes256-sha384-ecp384,aes128-sha256-modp2048,aes128-sha1-modp2048,aes256-sha384-modp4096,aes256-sha256-modp4096,aes256-sha1-modp4096,aes128-sha256-modp1536,aes128-sha1-modp1536,aes256-sha384-modp2048,aes256-sha256-modp2048,aes256-sha1-modp2048,aes128-sha256-modp1024,aes128-sha1-modp1024,aes256-sha384-modp1536,aes256-sha256-modp1536,aes256-sha1-modp1536,aes256-sha384-modp1024,aes256-sha256-modp1024,aes256-sha1-modp1024!
    esp=aes128gcm16-ecp256,aes256gcm16-ecp384,aes128-sha256-ecp256,aes256-sha384-ecp384,aes128-sha256-modp2048,aes128-sha1-modp2048,aes256-sha384-modp4096,aes256-sha256-modp4096,aes256-sha1-modp4096,aes128-sha256-modp1536,aes128-sha1-modp1536,aes256-sha384-modp2048,aes256-sha256-modp2048,aes256-sha1-modp2048,aes128-sha256-modp1024,aes128-sha1-modp1024,aes256-sha384-modp1536,aes256-sha256-modp1536,aes256-sha1-modp1536,aes256-sha384-modp1024,aes256-sha256-modp1024,aes256-sha1-modp1024,aes128gcm16,aes256gcm16,aes128-sha256,aes128-sha1,aes256-sha384,aes256-sha256,aes256-sha1!
    type=transport
    left=%defaultroute
    leftsubnet=0.0.0.0/0
    right=%any
    auto=add
    dpddelay=10
    dpdtimeout=20
    dpdaction=clear
    fragmentation=yes

conn IKEv2
    keyexchange=ikev2
    forceencaps=yes
    leftid=VPNサーバーのFQDN
    leftcert=fullchain.pem
    leftsendcert=always
    rightid=%any
    rightdns=8.8.8.8,8.8.4.4
    rightsourceip=192.168.11.128/25
    rightauth=eap-mschapv2
    eap_identity=%any

/etc/strongswan/ipsec.secrets を作成します。
VPN接続時に使用する秘密鍵と、接続用ユーザー・パスワードを指定します。
下記の : RSA で秘密鍵を指定しています。

: RSA "privkey.pem"
user1 : EAP "XXXXXXXXXXXX" #ユーザー名、パスワード

管理者以外は見えないようにします。

chmod 600 /etc/strongswan/ipsec.secrets

strongswan の起動設定を行います。

CentOS7 / strongswan5.7以前の場合

systemctl enable strongswan
systemctl start strongswan

RockyLinux8/9,AlmaLinux8/9 の場合

strongswan5.8以降が動作している場合は、まず停止させます。

systemctl disable strongswan
systemctl stop strongswan

strongswan がシステム起動時に自動起動するようにします。
strongswan5.8以降の場合でも、下記実行で旧設定(本記事での設定内容で動作)で起動します。

systemctl enable strongswan-starter
systemctl start strongswan-starter

Linuxカーネルパラメータの設定

/etc/sysctl.conf の末尾に以下の内容を追加します。
(net.ip_no_pmtu_disc は VPN経由でのアクセスで環境によっては接続できないホストがあり、その対処です)

net.ipv4.ip_no_pmtu_disc = 1
net.ipv4.ip_forward = 1

次のコマンドで設定を反映します。

/sbin/sysctl -p

ファイアウォール設定

VPN(IKEv2)サーバーの設定(strongswan5.8以降) – パソコン鳥のブログ の「ファイアウォール設定」の作業を行ってください。

以上で VPNサーバーの設定は完了です。

クライアントの設定

VPN(IKEv2)サーバーの設定(strongswan5.8以降) – パソコン鳥のブログ の「クライアントの設定」を参照してください。

参考

strongSwan 5.8.0 の systemd ユニット変更に対応する – ちとくのホームページ
strongSwan で IKEv2 VPN 備忘録 | hyt adversaria
strongSwanでVPN (IKEv2)を構築する #Ubuntu – Qiita
strongSwanでLet’s Encrypt証明書を使ったIKEv2 VPNサーバーを作る – World203strongSwan – ArchWiki
StrongswanでIKEv2のVPNサーバを構築する – m_shige1979のときどきITブログ

コメント